From d3b773146222ac4c129641ceb1228865efa0be65 Mon Sep 17 00:00:00 2001 From: david Date: Wed, 6 Jun 2018 21:23:25 +0100 Subject: [PATCH 01/62] Added a gitignore --- .gitignore | 65 ++++++++++++++++++++++++++++++++++++++++++++ ic_launcher-web.png | Bin 51394 -> 0 bytes 2 files changed, 65 insertions(+) create mode 100644 .gitignore delete mode 100644 ic_launcher-web.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..39b6783 --- /dev/null +++ b/.gitignore @@ -0,0 +1,65 @@ +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/assetWizardSettings.xml +.idea/dictionaries +.idea/libraries +.idea/caches + +# Keystore files +# Uncomment the following line if you do not want to check your keystore files in. +#*.jks + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md diff --git a/ic_launcher-web.png b/ic_launcher-web.png deleted file mode 100644 index a18cbb48c431dfcc163fce2b6e27e981f8c09f6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51394 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 Date: Wed, 6 Jun 2018 21:31:59 +0100 Subject: [PATCH 02/62] rename typod manual --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9edc2d1..5785351 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MedtronicUploader -See "Medtronic_NigthScout_Manual.pdf" +See "Medtronic_NightScout_Manual.pdf" Special thanks to https://github.com/ksksue/PhysicaloidLibrary @@ -20,4 +20,4 @@ Medtronic Nightscout Uploader You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see . - \ No newline at end of file + From cb3c36f193fb572bf568f4970d1e9f238d6a9cc0 Mon Sep 17 00:00:00 2001 From: david Date: Wed, 6 Jun 2018 21:33:10 +0100 Subject: [PATCH 03/62] removing things that should be gitignored --- MedtronicUploader.iml | 19 ---- ...ual.pdf => Medtronic_NightScout_Manual.pdf | Bin gen/com/nightscout/android/BuildConfig.java | 8 -- gen/com/nightscout/android/R.java | 102 ------------------ 4 files changed, 129 deletions(-) delete mode 100644 MedtronicUploader.iml rename Medtronic_NigthScout_Manual.pdf => Medtronic_NightScout_Manual.pdf (100%) delete mode 100644 gen/com/nightscout/android/BuildConfig.java delete mode 100644 gen/com/nightscout/android/R.java diff --git a/MedtronicUploader.iml b/MedtronicUploader.iml deleted file mode 100644 index 757a667..0000000 --- a/MedtronicUploader.iml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Medtronic_NigthScout_Manual.pdf b/Medtronic_NightScout_Manual.pdf similarity index 100% rename from Medtronic_NigthScout_Manual.pdf rename to Medtronic_NightScout_Manual.pdf diff --git a/gen/com/nightscout/android/BuildConfig.java b/gen/com/nightscout/android/BuildConfig.java deleted file mode 100644 index 80e23d9..0000000 --- a/gen/com/nightscout/android/BuildConfig.java +++ /dev/null @@ -1,8 +0,0 @@ -/*___Generated_by_IDEA___*/ - -package com.nightscout.android; - -/* This stub is only used by the IDE. It is NOT the BuildConfig class actually packed into the APK */ -public final class BuildConfig { - public final static boolean DEBUG = Boolean.parseBoolean(null); -} \ No newline at end of file diff --git a/gen/com/nightscout/android/R.java b/gen/com/nightscout/android/R.java deleted file mode 100644 index 8bf1898..0000000 --- a/gen/com/nightscout/android/R.java +++ /dev/null @@ -1,102 +0,0 @@ -/* AUTO-GENERATED FILE. DO NOT MODIFY. - * - * This class was automatically generated by the - * aapt tool from the resource data it found. It - * should not be modified by hand. - */ - -package com.nightscout.android; - -public final class R { - public static final class array { - public static final int calib_types_values=0x7f080002; - public static final int calibrationTypes=0x7f080003; - public static final int historicMixPeriodList=0x7f080009; - public static final int historicMixPeriodVal=0x7f08000a; - public static final int historicPeriodList=0x7f080007; - public static final int levelList=0x7f080008; - public static final int pumpPeriodList=0x7f080005; - public static final int pumpperiod_values=0x7f080006; - public static final int sourceTypes=0x7f080004; - public static final int types=0x7f080000; - public static final int types_values=0x7f080001; - } - public static final class attr { - } - public static final class dimen { - /** Default screen margins, per the Android Design guidelines. - Default screen margins, per the Android Design guidelines. - - Example customization of dimensions originally defined in res/values/dimens.xml - (such as screen margins) for screens with more than 820dp of available width. This - would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). - - */ - public static final int activity_horizontal_margin=0x7f050000; - public static final int activity_vertical_margin=0x7f050001; - public static final int widget_margin=0x7f050002; - } - public static final class drawable { - public static final int ic_action_warning=0x7f020000; - public static final int ic_launcher=0x7f020001; - public static final int icon36x36=0x7f020002; - } - public static final class id { - public static final int arrow_id=0x7f0a0005; - public static final int calibMan=0x7f0a000a; - public static final int container=0x7f0a0003; - public static final int demoScroller=0x7f0a0001; - public static final int demoText=0x7f0a0002; - public static final int demoTitle=0x7f0a0000; - public static final int imageButton1=0x7f0a0006; - public static final int instantCalib=0x7f0a000b; - public static final int menu_settings=0x7f0a0007; - public static final int readPumpInfo=0x7f0a0008; - public static final int refreshCalFactor=0x7f0a0009; - public static final int sgv_id=0x7f0a0004; - } - public static final class layout { - public static final int adb=0x7f030000; - public static final int widget_lock=0x7f030001; - public static final int widget_main=0x7f030002; - } - public static final class menu { - public static final int menu=0x7f090000; - } - public static final class string { - public static final int action_settings=0x7f060003; - public static final int app_name=0x7f060001; - public static final int arrow_id=0x7f060005; - public static final int arrow_none=0x7f060006; - public static final int but_contentDesc=0x7f060008; - public static final int eula_accept=0x7f06000a; - public static final int eula_refuse=0x7f06000b; - public static final int eula_title=0x7f060009; - public static final int hello=0x7f060000; - public static final int hello_world=0x7f060002; - public static final int self_destruct=0x7f060007; - public static final int sgv_id=0x7f060004; - public static final int version=0x7f06000c; - } - public static final class style { - /** - Base application theme for API 11+. This theme completely replaces - AppBaseTheme from res/values/styles.xml on API 11+ devices. - - API 11 theme customizations can go here. - - Base application theme for API 14+. This theme completely replaces - AppBaseTheme from BOTH res/values/styles.xml and - res/values-v11/styles.xml on API 14+ devices. - - API 14 theme customizations can go here. - */ - public static final int AppBaseTheme=0x7f070001; - public static final int ButtonText=0x7f070000; - } - public static final class xml { - public static final int device_filter=0x7f040000; - public static final int example_appwidget_info=0x7f040001; - public static final int preferences=0x7f040002; - } -} From d1e6f0b7503e463cd2f7ad3dd3c6d98be0466b57 Mon Sep 17 00:00:00 2001 From: Nightscout Naas Date: Wed, 6 Jun 2018 21:51:30 +0100 Subject: [PATCH 04/62] disable lint --- app/build.gradle | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8662eee..e389918 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,6 +32,10 @@ android { compileSdkVersion 23 buildToolsVersion '26.0.2' + lintOptions { + abortOnError false + } + defaultConfig { applicationId "com.nightscout.android" minSdkVersion 21 @@ -51,9 +55,6 @@ android { } dependencies { - compile files('libs/bugfender.jar') - compile files('libs/logback-android-1.1.1-3.jar') - compile files('libs/physicaloidlibrary.jar') - compile files('libs/slf4j-api-1.7.2.jar') + implementation fileTree(dir: 'libs', include: ['*.jar']) } From 8d2d1af77ef0ca0ee91ebf6e29dcc4e9fe4ea522 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Wed, 6 Jun 2018 22:45:55 +0100 Subject: [PATCH 05/62] Imported into Studio after sorting out gitignore. --- .idea/codeStyles/Project.xml | 29 ++++++++++++++++++++++ .idea/misc.xml | 31 ++++++++++++++++++++++++ .idea/modules.xml | 9 +++++++ .idea/runConfigurations.xml | 12 +++++++++ .idea/vcs.xml | 6 +++++ build.gradle | 3 ++- gradle/wrapper/gradle-wrapper.properties | 4 +-- 7 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..30aa626 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..95e01d5 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,31 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..074653b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 81f9bbe..0966085 100644 --- a/build.gradle +++ b/build.gradle @@ -4,9 +4,10 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' + classpath 'com.android.tools.build:gradle:3.1.2' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bbe251c..40cedee 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Nov 19 16:51:54 GMT 2017 +#Wed Jun 06 22:18:03 BST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip From d23c45aaa41e04c519305b952c8fbb4b8de44747 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Wed, 6 Jun 2018 23:07:12 +0100 Subject: [PATCH 06/62] update build tools version to be compatible with latest gradle / sdk --- app/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e389918..68b03ee 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,8 +29,8 @@ def gitVersionName = { -> } android { - compileSdkVersion 23 - buildToolsVersion '26.0.2' + compileSdkVersion 27 + buildToolsVersion '27.0.3' lintOptions { abortOnError false @@ -39,7 +39,7 @@ android { defaultConfig { applicationId "com.nightscout.android" minSdkVersion 21 - targetSdkVersion 23 + targetSdkVersion 27 versionCode gitVersionCode() versionName gitVersionName() useLibrary 'org.apache.http.legacy' From 7b7e122d239b26f6bbcf8c26a764e9f1d7223f47 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 7 Jun 2018 23:59:37 +0100 Subject: [PATCH 07/62] added log replayer to test over serial usb device; added serial usb device to recognized devices --- app/src/main/res/xml/device_filter.xml | 1 + util/serial_replay.py | 65 ++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100755 util/serial_replay.py diff --git a/app/src/main/res/xml/device_filter.xml b/app/src/main/res/xml/device_filter.xml index 43c5744..37007fd 100644 --- a/app/src/main/res/xml/device_filter.xml +++ b/app/src/main/res/xml/device_filter.xml @@ -18,4 +18,5 @@ + diff --git a/util/serial_replay.py b/util/serial_replay.py new file mode 100755 index 0000000..6b25865 --- /dev/null +++ b/util/serial_replay.py @@ -0,0 +1,65 @@ +#!/usr/bin/python +import re +import argparse +import serial +from datetime import datetime +from dateutil.parser import parse + +parser = argparse.ArgumentParser() +parser.add_argument('files', nargs='+', help = 'files to parse and send') +parser.add_argument('--speedup', default = 1, nargs='?', help = 'speed-up multiplier') + +datem = '(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d) (?:\+|-)\d\d\d\d GMT' +readm = ' I MedtronicReader :-1 a READ (\d+) bytes:' +datam = ' I MedtronicReader :-1 a 0x[0-9A-F]+(( [0-9A-F]+)+)' + + +args = parser.parse_args() + +datastream = [] + +for file in args.files: + with open(file) as f: + content = f.readlines() + + content_iter = iter(content) + + start_time = None + + try: + while True: + line = content_iter.next() + + m = re.search(datem + readm, line) + if m: + toread = int(m.group(2)) + when = parse(m.group(1)) + if not start_time: + start_time = when + bytes = [] + while toread > len(bytes): + line = content_iter.next() + + m = re.search(datem + datam, line) + if not m: + continue + data = m.group(2) + + bytes.extend([int(x,16) for x in data.split()]) + +# t = datetime.strptime(when, '%Y-%m-%d %H:%M:%S') + + datastream.append({'time' : (when - start_time).seconds, 'data' : bytes}) + + except StopIteration: + pass + + + +ser = serial.Serial('/dev/ttyUSB0') +ser.baudrate = 57600 + +for packet in datastream: + print packet['data'] + + ser.write(bytearray(packet['data'])) From e30ef7f18f679faf4352651177e05231b330eecf Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sat, 9 Jun 2018 23:03:17 +0100 Subject: [PATCH 08/62] minor changes to clean up from Inspect Code warnings. --- app/src/main/AndroidManifest.xml | 21 +++++++------- .../android/dexcom/DexcomG4Activity.java | 9 +++--- .../dexcom/USB/CdcAcmSerialDriver.java | 1 + .../medtronic/MedtronicCGMService.java | 10 +++++-- .../android/medtronic/MedtronicReader.java | 17 ++++++------ .../android/upload/UploadHelper.java | 2 +- .../android/widget/CGMWidgetUpdater.java | 5 ++-- .../res/drawable-hdpi/ic_action_warning.png | Bin 530 -> 0 bytes app/src/main/res/drawable-ldpi/icon36x36.png | Bin 3810 -> 0 bytes app/src/main/res/layout/adb.xml | 2 -- app/src/main/res/values-v14/dimens.xml | 8 ------ app/src/main/res/values-v14/styles.xml | 12 -------- app/src/main/res/values-w820dp/dimens.xml | 1 - app/src/main/res/values/dimens.xml | 2 -- app/src/main/res/values/strings.xml | 26 ++---------------- .../res/{values-v11 => values}/styles.xml | 3 -- app/src/main/res/xml/backup_descriptor.xml | 6 ++++ 17 files changed, 41 insertions(+), 84 deletions(-) delete mode 100644 app/src/main/res/drawable-hdpi/ic_action_warning.png delete mode 100644 app/src/main/res/drawable-ldpi/icon36x36.png delete mode 100644 app/src/main/res/values-v14/dimens.xml delete mode 100644 app/src/main/res/values-v14/styles.xml rename app/src/main/res/{values-v11 => values}/styles.xml (57%) create mode 100644 app/src/main/res/xml/backup_descriptor.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f25fa7b..24beed2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,18 +1,17 @@ + package="com.nightscout.android"> - - - - - - - + + + + + + + - + Universal * Serial Bus Class Definitions for Communication Devices, v1.1 */ +@SuppressWarnings("ALL") public class CdcAcmSerialDriver extends CommonUsbSerialDriver { private final String TAG = CdcAcmSerialDriver.class.getSimpleName(); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index 9dcf996..0bce3ea 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -633,8 +633,12 @@ public void doFakeReadAndUpload() { ArrayList bufferedMessages = new ArrayList<>(); + List devices = medtronicReader.getKnownDevices(); + String device = devices.get(0); + + //byte deviceData[] = {(byte) 0x21, (byte) 0x22, (byte) 0x23}; + byte deviceData[] = HexDump.hexStringToByteArray(device); - byte deviceData[] = {(byte) 0x21, (byte) 0x22, (byte) 0x23}; bufferedMessages.add(TestUSBData.fakeSensorData(deviceData,5500)); @@ -732,10 +736,10 @@ public void run() { synchronized (isUploadingLock) { try { - ArrayList bufferedMessages2Process = new ArrayList(); + ArrayList bufferedMessages2Process; synchronized (buffMessagesLock) { - bufferedMessages2Process.addAll(bufferedMessages); + bufferedMessages2Process = new ArrayList(bufferedMessages); bufferedMessages.clear(); } Log.d(TAG,"I am going to process "+ bufferedMessages2Process.size()+" Messages"); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index f921fea..068d0ad 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -5,6 +5,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Locale; @@ -227,6 +228,10 @@ else if ("2".equalsIgnoreCase(type)) { } } + public List getKnownDevices() + { + return Collections.unmodifiableList(knownDevices); + } /** * This method checks if the message received has its source in one of the * devices registered. @@ -380,10 +385,8 @@ private void checkCalibrationOutOfTime() { /** * This method reads from the serial device, and process the answer - * - * @param context - * @return String, for debug or notification purposes - */ + * + * */ public ArrayList readFromReceiver(int size) { ArrayList bufferedMessages = null; byte[] readFromDevice = new byte[1024]; @@ -833,7 +836,6 @@ public void processPumpDataMessage(byte[] readData) { return; default: Log.e(TAG, "Undecoded Command"); - return; } } @@ -896,8 +898,6 @@ public void approveGlucValueForCalibration(float num, boolean calibrate, boolean /** * This method process the Manual Calibration message * - * @param readData - * @return String, for debug or notification purposes */ public void processManualCalibrationDataMessage(float value, boolean instant, boolean doCalibration) { @@ -1827,8 +1827,7 @@ public List getListFromTail(int size) { synchronized (listLock) { auxEndOffset = endOffset; auxStartOffset = startOffset; - aux = new ArrayList(); - aux.addAll(list); + aux = new ArrayList(list); } int auxSize = size; diff --git a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java index 4954701..21c7380 100644 --- a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java +++ b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java @@ -43,7 +43,7 @@ public class UploadHelper extends AsyncTask { private static final int SOCKET_TIMEOUT = 60 * 1000; private static final int CONNECTION_TIMEOUT = 30 * 1000; - Context context; + private Context context; private List recordsNotUploadedListJson = new ArrayList(); diff --git a/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java b/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java index 8488933..a368c4f 100644 --- a/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java +++ b/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java @@ -25,9 +25,8 @@ import com.nightscout.android.upload.Record; public class CGMWidgetUpdater extends Service{ - - public static int UPDATE_FREQUENCY_SEC = 10; - @Override + + @Override public void onCreate() { super.onCreate(); diff --git a/app/src/main/res/drawable-hdpi/ic_action_warning.png b/app/src/main/res/drawable-hdpi/ic_action_warning.png deleted file mode 100644 index 98b90c257c20f82aabc9f8c8be5c77acca030bb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 530 zcmV+t0`2{YP)89)Y*tc>GWPwi0`FQJ{VNni5_Pm6zo?rZk=O$c%3o~!g^m;>=ydH`_GH;Pw{ zk9hFmfzI+>d;nnKSLiCukP6477sRlz4F>LJVdw<|`jVOlBw_Idj*&@u;0|pr2@9=q z0XRZ8XP92$p<5XMz&<(vq{ibv#X>yK#+?+O?_t~!I|e=?ed`VYYn-ivimhv%R5~nv zVv`+%2Y09|xCc5SZBl5p3km=%Hf7tEF^9CMGnfb1YZ_afrG@ny1?O`}jk^5-z+m%X z{i_#D1A1-B7*yKC>}*V{I7iQ(iLu`KWMZDBYW1C3Cz)&^8DR0o)v6#`Us>;H71L@V zosjCJ(!lzmMY3!mJOakJoT@3u&ozNIt*%3uZXgbz=UaFD6ohIs#`gJhFaiL*F#yYB zqA$67{M5z3OOcMWHbMN85P-op2C6{GOPiTt`=n${Udg|hGJp&q1IPfJpF diff --git a/app/src/main/res/drawable-ldpi/icon36x36.png b/app/src/main/res/drawable-ldpi/icon36x36.png deleted file mode 100644 index 70129cd357610cb7912e7e6b50f15736e015f710..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3810 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 diff --git a/app/src/main/res/values-v14/dimens.xml b/app/src/main/res/values-v14/dimens.xml deleted file mode 100644 index f3eb5ba..0000000 --- a/app/src/main/res/values-v14/dimens.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - 16dp - 16dp - 0dp - - diff --git a/app/src/main/res/values-v14/styles.xml b/app/src/main/res/values-v14/styles.xml deleted file mode 100644 index a91fd03..0000000 --- a/app/src/main/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml index 45757d6..6209acd 100644 --- a/app/src/main/res/values-w820dp/dimens.xml +++ b/app/src/main/res/values-w820dp/dimens.xml @@ -5,7 +5,6 @@ (such as screen margins) for screens with more than 820dp of available width. This would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> - 64dp 8dp diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 09ea631..61f087a 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,8 +1,6 @@ - 16dp - 16dp 8dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fa99f4a..25a8b86 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,30 +3,13 @@ Hello World, DemoActivity! NightScout - Hello world! - Settings - sgv_id - arrow_id --- - Close It Launch Nightscout Disclaimer Accept Refuse Version: N/A - + Medtronic CGM @@ -48,12 +31,7 @@ Medtronic Pump Both (sensor + pump support) - - 1 - 2 - 3 - 4 - + Error Info diff --git a/app/src/main/res/values-v11/styles.xml b/app/src/main/res/values/styles.xml similarity index 57% rename from app/src/main/res/values-v11/styles.xml rename to app/src/main/res/values/styles.xml index 3c02242..8d8a9cb 100644 --- a/app/src/main/res/values-v11/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -4,8 +4,5 @@ Base application theme for API 11+. This theme completely replaces AppBaseTheme from res/values/styles.xml on API 11+ devices. --> - diff --git a/app/src/main/res/xml/backup_descriptor.xml b/app/src/main/res/xml/backup_descriptor.xml new file mode 100644 index 0000000..75b096d --- /dev/null +++ b/app/src/main/res/xml/backup_descriptor.xml @@ -0,0 +1,6 @@ + + + + + + From e00704483ae28ba5dae8b6f2fb268a59d2352db1 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sat, 9 Jun 2018 23:52:43 +0100 Subject: [PATCH 09/62] cleaning up; remove code for manual calibration with delay, replace with instant calibration only. --- .../android/dexcom/DexcomG4Activity.java | 63 +---------------- .../medtronic/MedtronicCGMService.java | 69 ++----------------- .../android/medtronic/MedtronicConstants.java | 1 - .../android/medtronic/MedtronicReader.java | 8 +-- app/src/main/res/menu/menu.xml | 5 -- 5 files changed, 11 insertions(+), 135 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index fb869db..d8f93c4 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -302,7 +302,8 @@ public void run() { - DecimalFormat df = new DecimalFormat("#.##"); + DecimalFormat df = null; + df = new DecimalFormat("#.##"); if (auxRecord instanceof MedtronicSensorRecord){ @@ -718,65 +719,7 @@ public boolean onOptionsItemSelected(MenuItem item) { startActivity(intent); break; - case R.id.calibMan:{ - - log.debug("Manual Calibration"); - AlertDialog.Builder alert = new AlertDialog.Builder(ctx); - alert.setTitle("Manual Calibration"); - alert.setMessage("Insert your glucose value in mg/dl (only natural numbers)"); - - if (prefs.getBoolean("mmolxl", false)){ - alert.setMessage("Insert your glucose value in mmol/l (only 2 decimals)"); - log.debug("mmol/l"); - } - - - // Set an EditText view to get user input - input = new EditText(ctx); - input.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL); - alert.setView(input); - - alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - String value = input.getText().toString(); - log.debug("Manual Calibration send "+value); - if (mService == null && bService != null) { - mService = new Messenger(bService); - } - if (mService != null){ - try { - Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_SEND_MANUAL_CALIB_VALUE); - Bundle b = new Bundle(); - b.putString("sgv", value); - prefs.edit().putString("manual_sgv", value).commit(); - msg.setData(b); - msg.replyTo = mMessenger; - mService.send(msg); - } catch (RemoteException e) { - StringBuffer sb1 = new StringBuffer(""); - sb1.append("EXCEPTION!!!!!! "+ e.getMessage()+" "+e.getCause()); - for (StackTraceElement st : e.getStackTrace()){ - sb1.append(st.toString()).append("\n"); - } - Log.e(TAG, "Error sending Manual Calibration\n "+sb1.toString()); - if (ISDEBUG){ - display.setText(display.getText()+"Error sending Manual Calibration\n", BufferType.EDITABLE); - } - // In this case the service has crashed before we could even do anything with it - } - } - } - }); - - alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - // Canceled. - } - }); - - alert.show(); - } - break; + case R.id.instantCalib:{ log.debug("Instant Calibration "); AlertDialog.Builder alert2 = new AlertDialog.Builder(ctx); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index 0bce3ea..26a7a58 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -137,78 +137,20 @@ public void handleMessage(Message msg) { editor.commit(); } - break; - case MedtronicConstants.MSG_MEDTRONIC_SEND_MANUAL_CALIB_VALUE: - String value = msg.getData().getString("sgv"); - if (value == null || value.equals("")) { - value = prefs.getString("manual_sgv", ""); - if (value.indexOf(",") >= 0) - value = value.replace(",", "."); - } - log.debug("Manual Calibration Received SGV " + value); - try { - Float val = null; - if (medtronicReader != null && value != null && !value.equals("")) { - if (prefs.getBoolean("mmolxl", false)) { - try { - if (value.indexOf(".") > -1) { - val = Float.parseFloat(value); - medtronicReader.processManualCalibrationDataMessage(val, false, true); - } else { - medtronicReader.processManualCalibrationDataMessage(Integer.parseInt(value), false, true); - } - sendMessageCalibrationDoneToUI(); - } catch (Exception e) { - sendExceptionToUI("Error parsing Calibration", e); - } - } else { - if (value.indexOf(".") > -1) { - val = Float.parseFloat(value); - medtronicReader.processManualCalibrationDataMessage(val.intValue(), false, true); - } else { - medtronicReader.processManualCalibrationDataMessage(Integer.parseInt(value), false, true); - } - sendMessageCalibrationDoneToUI(); - } - } - } catch (Exception e) { - sendExceptionToUI("Error parsing Calibration", e); - } break; case MedtronicConstants.MSG_MEDTRONIC_SEND_INSTANT_CALIB_VALUE: // manually entered calibration. - value = msg.getData().getString("sgv"); - if (value == null || value.equals("")) { - value = prefs.getString("instant_sgv", ""); - if (value.indexOf(",") >= 0) - value = value.replace(",", "."); - } + String value = msg.getData().getString("sgv"); Log.d(TAG, "Instant Calibration received SGV " + value); + try { - Float val = null; if (medtronicReader != null && !value.equals("")) { if (prefs.getBoolean("mmolxl", false)) { - try { - if (value.indexOf(".") > -1) { - val = Float.parseFloat(value); - medtronicReader.calculateInstantCalibration(val * 18f); - } else { - medtronicReader.calculateInstantCalibration(Integer.parseInt(value) * 18f); - } - sendMessageCalibrationDoneToUI(); - } catch (Exception e) { - sendExceptionToUI("Error parsing Calibration", e); - } + medtronicReader.calculateInstantCalibration(Float.parseFloat(value) * 18f); + sendMessageCalibrationDoneToUI(); } else { - if (value.indexOf(".") > -1) { - val = Float.parseFloat(value); - medtronicReader.calculateInstantCalibration(val.intValue()); - } else { - medtronicReader.calculateInstantCalibration(Integer.parseInt(value)); - } + medtronicReader.calculateInstantCalibration(Float.parseFloat(value)); sendMessageCalibrationDoneToUI(); } - } else { - sendErrorMessageToUI("Error parsing Calibration"); } } catch (Exception e) { sendExceptionToUI("Error parsing Calibration", e); @@ -456,7 +398,6 @@ else if ("2".equalsIgnoreCase(type)){ medtronicReader.previousRecord = record; } - medtronicReader.mHandlerSensorCalibration = mHandlerSensorCalibration; checker = medtronicReader.new CalibrationStatusChecker(mHandlerReviewParameters); mHandlerReviewParameters.postDelayed(checker, MedtronicConstants.TIME_5_MIN_IN_MS); IntentFilter filter = new IntentFilter(); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java index e8a4358..7da5006 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java @@ -76,7 +76,6 @@ public class MedtronicConstants { public static final int MSG_MEDTRONIC_CGM_USB_GRANTED = 6; public static final int MSG_MEDTRONIC_CGM_REQUEST_PERMISSION = 7; public static final int MSG_MEDTRONIC_CGM_ERROR_RECEIVED = 8; - public static final int MSG_MEDTRONIC_SEND_MANUAL_CALIB_VALUE = 9; public static final int MSG_MEDTRONIC_SEND_GET_SENSORCAL_FACTOR = 10; public static final int MSG_MEDTRONIC_SEND_GET_PUMP_INFO = 11; public static final int MSG_MEDTRONIC_SEND_INSTANT_CALIB_VALUE = 12; diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 068d0ad..8b5ba2c 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -100,8 +100,6 @@ public class MedtronicReader { SharedPreferences prefs = null; Integer calibrationSelected = MedtronicConstants.CALIBRATION_GLUCOMETER; - Handler mHandlerSensorCalibration = null; - /** * Constructor * @@ -897,7 +895,7 @@ public void approveGlucValueForCalibration(float num, boolean calibrate, boolean } /** * This method process the Manual Calibration message - * + * */ public void processManualCalibrationDataMessage(float value, boolean instant, boolean doCalibration) { @@ -911,7 +909,7 @@ public void processManualCalibrationDataMessage(float value, Date d = new Date(); lastGlucometerRecord.lastDate = d.getTime(); lastGlucometerDate = d.getTime(); - calculateDate(lastGlucometerRecord, d, 0); + if (!instant && doCalibration) { if (HexDump.unsignedByte(expectedSensorSortNumber) == HexDump .unsignedByte((byte) 0xff)) { @@ -1428,7 +1426,7 @@ public void calculateDate(Record record, Date initTime, int subtract) { * if (!tz.inDaylightTime(new Date())) timeAdd = timeAdd - 3600000L; */ Date display = new Date(timeAdd); - record.displayTime = new SimpleDateFormat("MM/dd/yyy hh:mm:ss aa", + record.displayTime = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss aa", Locale.getDefault()).format(display); if (record instanceof MedtronicSensorRecord) { ((MedtronicSensorRecord) record).displayDateTime = display diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index bc8170e..eba184e 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -6,11 +6,6 @@ android:title="Preferences"> - - Date: Sun, 10 Jun 2018 11:00:15 +0100 Subject: [PATCH 10/62] Revert "cleaning up; remove code for manual calibration with delay, replace with instant calibration only." This reverts commit e007044 --- .../android/dexcom/DexcomG4Activity.java | 63 ++++++++++++++++- .../medtronic/MedtronicCGMService.java | 69 +++++++++++++++++-- .../android/medtronic/MedtronicConstants.java | 1 + .../android/medtronic/MedtronicReader.java | 8 ++- app/src/main/res/menu/menu.xml | 5 ++ 5 files changed, 135 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index d8f93c4..fb869db 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -302,8 +302,7 @@ public void run() { - DecimalFormat df = null; - df = new DecimalFormat("#.##"); + DecimalFormat df = new DecimalFormat("#.##"); if (auxRecord instanceof MedtronicSensorRecord){ @@ -719,7 +718,65 @@ public boolean onOptionsItemSelected(MenuItem item) { startActivity(intent); break; - + case R.id.calibMan:{ + + log.debug("Manual Calibration"); + AlertDialog.Builder alert = new AlertDialog.Builder(ctx); + alert.setTitle("Manual Calibration"); + alert.setMessage("Insert your glucose value in mg/dl (only natural numbers)"); + + if (prefs.getBoolean("mmolxl", false)){ + alert.setMessage("Insert your glucose value in mmol/l (only 2 decimals)"); + log.debug("mmol/l"); + } + + + // Set an EditText view to get user input + input = new EditText(ctx); + input.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL); + alert.setView(input); + + alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + String value = input.getText().toString(); + log.debug("Manual Calibration send "+value); + if (mService == null && bService != null) { + mService = new Messenger(bService); + } + if (mService != null){ + try { + Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_SEND_MANUAL_CALIB_VALUE); + Bundle b = new Bundle(); + b.putString("sgv", value); + prefs.edit().putString("manual_sgv", value).commit(); + msg.setData(b); + msg.replyTo = mMessenger; + mService.send(msg); + } catch (RemoteException e) { + StringBuffer sb1 = new StringBuffer(""); + sb1.append("EXCEPTION!!!!!! "+ e.getMessage()+" "+e.getCause()); + for (StackTraceElement st : e.getStackTrace()){ + sb1.append(st.toString()).append("\n"); + } + Log.e(TAG, "Error sending Manual Calibration\n "+sb1.toString()); + if (ISDEBUG){ + display.setText(display.getText()+"Error sending Manual Calibration\n", BufferType.EDITABLE); + } + // In this case the service has crashed before we could even do anything with it + } + } + } + }); + + alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + // Canceled. + } + }); + + alert.show(); + } + break; case R.id.instantCalib:{ log.debug("Instant Calibration "); AlertDialog.Builder alert2 = new AlertDialog.Builder(ctx); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index 26a7a58..0bce3ea 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -138,19 +138,77 @@ public void handleMessage(Message msg) { } break; - case MedtronicConstants.MSG_MEDTRONIC_SEND_INSTANT_CALIB_VALUE: // manually entered calibration. + case MedtronicConstants.MSG_MEDTRONIC_SEND_MANUAL_CALIB_VALUE: String value = msg.getData().getString("sgv"); + if (value == null || value.equals("")) { + value = prefs.getString("manual_sgv", ""); + if (value.indexOf(",") >= 0) + value = value.replace(",", "."); + } + log.debug("Manual Calibration Received SGV " + value); + try { + Float val = null; + if (medtronicReader != null && value != null && !value.equals("")) { + if (prefs.getBoolean("mmolxl", false)) { + try { + if (value.indexOf(".") > -1) { + val = Float.parseFloat(value); + medtronicReader.processManualCalibrationDataMessage(val, false, true); + } else { + medtronicReader.processManualCalibrationDataMessage(Integer.parseInt(value), false, true); + } + sendMessageCalibrationDoneToUI(); + } catch (Exception e) { + sendExceptionToUI("Error parsing Calibration", e); + } + } else { + if (value.indexOf(".") > -1) { + val = Float.parseFloat(value); + medtronicReader.processManualCalibrationDataMessage(val.intValue(), false, true); + } else { + medtronicReader.processManualCalibrationDataMessage(Integer.parseInt(value), false, true); + } + sendMessageCalibrationDoneToUI(); + } + } + } catch (Exception e) { + sendExceptionToUI("Error parsing Calibration", e); + } + break; + case MedtronicConstants.MSG_MEDTRONIC_SEND_INSTANT_CALIB_VALUE: // manually entered calibration. + value = msg.getData().getString("sgv"); + if (value == null || value.equals("")) { + value = prefs.getString("instant_sgv", ""); + if (value.indexOf(",") >= 0) + value = value.replace(",", "."); + } Log.d(TAG, "Instant Calibration received SGV " + value); - try { + Float val = null; if (medtronicReader != null && !value.equals("")) { if (prefs.getBoolean("mmolxl", false)) { - medtronicReader.calculateInstantCalibration(Float.parseFloat(value) * 18f); - sendMessageCalibrationDoneToUI(); + try { + if (value.indexOf(".") > -1) { + val = Float.parseFloat(value); + medtronicReader.calculateInstantCalibration(val * 18f); + } else { + medtronicReader.calculateInstantCalibration(Integer.parseInt(value) * 18f); + } + sendMessageCalibrationDoneToUI(); + } catch (Exception e) { + sendExceptionToUI("Error parsing Calibration", e); + } } else { - medtronicReader.calculateInstantCalibration(Float.parseFloat(value)); + if (value.indexOf(".") > -1) { + val = Float.parseFloat(value); + medtronicReader.calculateInstantCalibration(val.intValue()); + } else { + medtronicReader.calculateInstantCalibration(Integer.parseInt(value)); + } sendMessageCalibrationDoneToUI(); } + } else { + sendErrorMessageToUI("Error parsing Calibration"); } } catch (Exception e) { sendExceptionToUI("Error parsing Calibration", e); @@ -398,6 +456,7 @@ else if ("2".equalsIgnoreCase(type)){ medtronicReader.previousRecord = record; } + medtronicReader.mHandlerSensorCalibration = mHandlerSensorCalibration; checker = medtronicReader.new CalibrationStatusChecker(mHandlerReviewParameters); mHandlerReviewParameters.postDelayed(checker, MedtronicConstants.TIME_5_MIN_IN_MS); IntentFilter filter = new IntentFilter(); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java index 7da5006..e8a4358 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java @@ -76,6 +76,7 @@ public class MedtronicConstants { public static final int MSG_MEDTRONIC_CGM_USB_GRANTED = 6; public static final int MSG_MEDTRONIC_CGM_REQUEST_PERMISSION = 7; public static final int MSG_MEDTRONIC_CGM_ERROR_RECEIVED = 8; + public static final int MSG_MEDTRONIC_SEND_MANUAL_CALIB_VALUE = 9; public static final int MSG_MEDTRONIC_SEND_GET_SENSORCAL_FACTOR = 10; public static final int MSG_MEDTRONIC_SEND_GET_PUMP_INFO = 11; public static final int MSG_MEDTRONIC_SEND_INSTANT_CALIB_VALUE = 12; diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 8b5ba2c..068d0ad 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -100,6 +100,8 @@ public class MedtronicReader { SharedPreferences prefs = null; Integer calibrationSelected = MedtronicConstants.CALIBRATION_GLUCOMETER; + Handler mHandlerSensorCalibration = null; + /** * Constructor * @@ -895,7 +897,7 @@ public void approveGlucValueForCalibration(float num, boolean calibrate, boolean } /** * This method process the Manual Calibration message - * + * */ public void processManualCalibrationDataMessage(float value, boolean instant, boolean doCalibration) { @@ -909,7 +911,7 @@ public void processManualCalibrationDataMessage(float value, Date d = new Date(); lastGlucometerRecord.lastDate = d.getTime(); lastGlucometerDate = d.getTime(); - + calculateDate(lastGlucometerRecord, d, 0); if (!instant && doCalibration) { if (HexDump.unsignedByte(expectedSensorSortNumber) == HexDump .unsignedByte((byte) 0xff)) { @@ -1426,7 +1428,7 @@ public void calculateDate(Record record, Date initTime, int subtract) { * if (!tz.inDaylightTime(new Date())) timeAdd = timeAdd - 3600000L; */ Date display = new Date(timeAdd); - record.displayTime = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss aa", + record.displayTime = new SimpleDateFormat("MM/dd/yyy hh:mm:ss aa", Locale.getDefault()).format(display); if (record instanceof MedtronicSensorRecord) { ((MedtronicSensorRecord) record).displayDateTime = display diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index eba184e..bc8170e 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -6,6 +6,11 @@ android:title="Preferences"> + + Date: Sun, 10 Jun 2018 11:07:05 +0100 Subject: [PATCH 11/62] cleaning up; removing unnecessary code paths in parsing calibration inputs; remove message processing for cleanup messages that are never sent - pump info, clean, sensorcal_factor --- .../android/dexcom/DexcomG4Activity.java | 19 ++---- .../medtronic/MedtronicCGMService.java | 65 ++++--------------- .../android/medtronic/MedtronicConstants.java | 2 - 3 files changed, 17 insertions(+), 69 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index fb869db..eeb547f 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -104,15 +104,12 @@ class IncomingHandler extends Handler { public void handleMessage(Message msg) { switch (msg.what) { case MedtronicConstants.MSG_MEDTRONIC_CGM_MESSAGE_RECEIVED: - /*if (msgsDisplayed > 8){ - display.setText("", BufferType.EDITABLE); - msgsDisplayed = 0; - }*/ + Log.i(TAG, msg.getData().getString("data")+"\n"); - if (ISDEBUG){ + display.append(msg.getData().getString("data")+"\n"); msgsDisplayed++; - } + mHandler.removeCallbacks(updateDataView); mHandler.post(updateDataView); break; @@ -136,19 +133,15 @@ public void handleMessage(Message msg) { mHandler.post(updateDataView); break; case MedtronicConstants.MSG_MEDTRONIC_CGM_ERROR_RECEIVED: - Log.i(TAG, msg.getData().getString("data")+"\n"); - if (ISDEBUG){ - if (msgsDisplayed > 8){ - display.setText("", BufferType.EDITABLE); - msgsDisplayed = 0; - } + Log.e(TAG, msg.getData().getString("data")+"\n"); + String sText = display.getText().toString(); String sError = msg.getData().getString("data"); if (!(sText.indexOf(sError) >= 0)){ display.setText(display.getText()+"Medtronic CGM Message: " + sError +"\n", BufferType.EDITABLE); msgsDisplayed++; } - } + break; case MedtronicConstants.MSG_MEDTRONIC_CALIBRATION_DONE: Log.i(TAG, MedtronicConstants.MSG_MEDTRONIC_CALIBRATION_DONE+"\n"); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index 0bce3ea..b2654ff 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -142,35 +142,16 @@ public void handleMessage(Message msg) { String value = msg.getData().getString("sgv"); if (value == null || value.equals("")) { value = prefs.getString("manual_sgv", ""); - if (value.indexOf(",") >= 0) - value = value.replace(",", "."); } - log.debug("Manual Calibration Received SGV " + value); + Log.d(TAG, "Manual Calibration Received SGV " + value); try { - Float val = null; - if (medtronicReader != null && value != null && !value.equals("")) { - if (prefs.getBoolean("mmolxl", false)) { - try { - if (value.indexOf(".") > -1) { - val = Float.parseFloat(value); - medtronicReader.processManualCalibrationDataMessage(val, false, true); - } else { - medtronicReader.processManualCalibrationDataMessage(Integer.parseInt(value), false, true); - } - sendMessageCalibrationDoneToUI(); - } catch (Exception e) { - sendExceptionToUI("Error parsing Calibration", e); - } - } else { - if (value.indexOf(".") > -1) { - val = Float.parseFloat(value); - medtronicReader.processManualCalibrationDataMessage(val.intValue(), false, true); - } else { - medtronicReader.processManualCalibrationDataMessage(Integer.parseInt(value), false, true); - } - sendMessageCalibrationDoneToUI(); - } + if (medtronicReader != null && !value.equals("")) { + medtronicReader.processManualCalibrationDataMessage(Float.parseFloat(value), false, true); + sendMessageCalibrationDoneToUI(); } + else { + sendErrorMessageToUI("Calibration value empty"); + } } catch (Exception e) { sendExceptionToUI("Error parsing Calibration", e); } @@ -179,49 +160,25 @@ public void handleMessage(Message msg) { value = msg.getData().getString("sgv"); if (value == null || value.equals("")) { value = prefs.getString("instant_sgv", ""); - if (value.indexOf(",") >= 0) - value = value.replace(",", "."); } Log.d(TAG, "Instant Calibration received SGV " + value); try { - Float val = null; if (medtronicReader != null && !value.equals("")) { if (prefs.getBoolean("mmolxl", false)) { - try { - if (value.indexOf(".") > -1) { - val = Float.parseFloat(value); - medtronicReader.calculateInstantCalibration(val * 18f); - } else { - medtronicReader.calculateInstantCalibration(Integer.parseInt(value) * 18f); - } - sendMessageCalibrationDoneToUI(); - } catch (Exception e) { - sendExceptionToUI("Error parsing Calibration", e); - } + medtronicReader.calculateInstantCalibration(Float.parseFloat(value) * 18f); + sendMessageCalibrationDoneToUI(); } else { - if (value.indexOf(".") > -1) { - val = Float.parseFloat(value); - medtronicReader.calculateInstantCalibration(val.intValue()); - } else { - medtronicReader.calculateInstantCalibration(Integer.parseInt(value)); - } + medtronicReader.calculateInstantCalibration(Float.parseFloat(value)); sendMessageCalibrationDoneToUI(); } } else { - sendErrorMessageToUI("Error parsing Calibration"); + sendErrorMessageToUI("Calibration value empty"); } } catch (Exception e) { sendExceptionToUI("Error parsing Calibration", e); } break; - case MedtronicConstants.MSG_MEDTRONIC_SEND_GET_PUMP_INFO: - sendMessageToUI("Retrieving Pump info..."); - break; - case MedtronicConstants.MSG_MEDTRONIC_SEND_GET_SENSORCAL_FACTOR: - sendMessageToUI("Retrieve calibration factor...Now!"); - log.debug("Retrieve calibration factor...Now!"); - break; case MedtronicConstants.MSG_MEDTRONIC_CGM_REQUEST_PERMISSION: openUsbSerial(false); break; diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java index e8a4358..cc7bbb9 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java @@ -77,8 +77,6 @@ public class MedtronicConstants { public static final int MSG_MEDTRONIC_CGM_REQUEST_PERMISSION = 7; public static final int MSG_MEDTRONIC_CGM_ERROR_RECEIVED = 8; public static final int MSG_MEDTRONIC_SEND_MANUAL_CALIB_VALUE = 9; - public static final int MSG_MEDTRONIC_SEND_GET_SENSORCAL_FACTOR = 10; - public static final int MSG_MEDTRONIC_SEND_GET_PUMP_INFO = 11; public static final int MSG_MEDTRONIC_SEND_INSTANT_CALIB_VALUE = 12; public static final int MSG_MEDTRONIC_CALIBRATION_DONE = 14; public static final int MSG_MEDTRONIC_GLUCMEASURE_DETECTED = 15; From e2962d5fb7931d48c435895256e8f07682c73c44 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sun, 10 Jun 2018 16:41:50 +0100 Subject: [PATCH 12/62] added a few more log messages. --- .../android/dexcom/DexcomG4Activity.java | 31 +++++++------------ .../android/medtronic/MedtronicReader.java | 5 +-- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index eeb547f..59f64b1 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -104,44 +104,37 @@ class IncomingHandler extends Handler { public void handleMessage(Message msg) { switch (msg.what) { case MedtronicConstants.MSG_MEDTRONIC_CGM_MESSAGE_RECEIVED: - Log.i(TAG, msg.getData().getString("data")+"\n"); - - display.append(msg.getData().getString("data")+"\n"); - msgsDisplayed++; - + display.append(msg.getData().getString("data")+"\n"); + msgsDisplayed++; mHandler.removeCallbacks(updateDataView); mHandler.post(updateDataView); break; case MedtronicConstants.MSG_MEDTRONIC_CGM_CLEAR_DISPLAY: - if (ISDEBUG){ - display.setText("", BufferType.EDITABLE); - msgsDisplayed = 0; - } + display.setText("", BufferType.EDITABLE); + msgsDisplayed = 0; break; case MedtronicConstants.MSG_MEDTRONIC_CGM_NO_PERMISSION: + Log.e(TAG, "Message received - no USB permission"); usbAllowedPermission = false; mHandler.removeCallbacks(updateDataView); mHandler.post(updateDataView); break; case MedtronicConstants.MSG_MEDTRONIC_GLUCMEASURE_DETECTED: - showUseCalibConfirmation(msg.getData().getFloat("data"), msg.getData().getBoolean("calibrating"), msg.getData().getBoolean("isCalFactorFromPump")); + Log.i(TAG, "Glucometer measurement detected"); + showUseCalibConfirmation(msg.getData().getFloat("data"), msg.getData().getBoolean("calibrating"), msg.getData().getBoolean("isCalFactorFromPump")); break; case MedtronicConstants.MSG_MEDTRONIC_CGM_USB_GRANTED: + Log.i(TAG, "Message received - USB permission granted"); usbAllowedPermission = true; mHandler.removeCallbacks(updateDataView); mHandler.post(updateDataView); break; case MedtronicConstants.MSG_MEDTRONIC_CGM_ERROR_RECEIVED: Log.e(TAG, msg.getData().getString("data")+"\n"); - - String sText = display.getText().toString(); - String sError = msg.getData().getString("data"); - if (!(sText.indexOf(sError) >= 0)){ - display.setText(display.getText()+"Medtronic CGM Message: " + sError +"\n", BufferType.EDITABLE); - msgsDisplayed++; - } - + String sError = msg.getData().getString("data"); + display.setText(display.getText()+"Medtronic CGM Message: " + sError +"\n", BufferType.EDITABLE); + msgsDisplayed++; break; case MedtronicConstants.MSG_MEDTRONIC_CALIBRATION_DONE: Log.i(TAG, MedtronicConstants.MSG_MEDTRONIC_CALIBRATION_DONE+"\n"); @@ -149,7 +142,7 @@ public void handleMessage(Message msg) { mHandler.post(updateDataView); break; case MedtronicConstants.MSG_MEDTRONIC_FAKE: - Log.i(TAG, MedtronicConstants.MSG_MEDTRONIC_FAKE+"\n"); + Log.i(TAG, "Fake message sent / " + MedtronicConstants.MSG_MEDTRONIC_FAKE+"\n"); mHandler.removeCallbacks(updateDataView); mHandler.post(updateDataView); break; diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 068d0ad..7655351 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -622,7 +622,6 @@ private void processDataAnswer(byte[] readData) } else { Log.i(TAG, "I don't have to listen to this. This message comes from another source: " + HexDump.dumpHexString(readData)); - log.debug("I don't have to listen to this message. This message comes from another source."); } @@ -1316,10 +1315,8 @@ public void processSensorDataMessage(byte[] readData) { lastSensorValueDate = d.getTime(); editor.putLong("lastSensorValueDate", lastSensorValueDate); editor.commit(); - log.debug("12"); - Log.i("Medtronic", "BYE!!!!"); - log.debug("sensorprocessed end expected " + Log.i(TAG, "sensorprocessed end expected " + HexDump.toHexString(expectedSensorSortNumber)); } From 3ebe6ffdeaa3644da35cf7a45664d0805ab9e256 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sun, 10 Jun 2018 17:15:42 +0100 Subject: [PATCH 13/62] just log messages changes --- .../medtronic/MedtronicCGMService.java | 47 +++++++++---------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index b2654ff..a3ec9e4 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -658,30 +658,27 @@ protected void doReadAndUpload(int size) { * class This class process all the messages received after being correctly * parsed. */ - private Runnable reloadLostRecords = new Runnable() { - public void run() { - - Log.d(TAG, "Reload any lost records from medtronic service"); + private Runnable reloadLostRecords = new Runnable() { + public void run() { + + try { + JSONArray recordsNotUploadedJson = new JSONArray(settings.getString("recordsNotUploadedJson", "[]")); + synchronized (reloadLostLock) { + if (isOnline()) { + if (recordsNotUploadedJson.length() > 0 && !isDestroying) { + Log.i(TAG, "Uploading" + recordsNotUploadedJson.length() + " lost records"); + uploader = new UploadHelper(getApplicationContext()); + } + } + } + } catch (JSONException e) { + sendExceptionToUI("Error Reloading Lost Records", e); + } - try { - JSONArray recordsNotUploadedJson = new JSONArray(settings.getString("recordsNotUploadedJson","[]")); - synchronized (reloadLostLock) { - if (isOnline()) { - Log.d(TAG,"reloadnotuploaded is online -> " + recordsNotUploadedJson.length() + " " + !isDestroying); - if (recordsNotUploadedJson.length() > 0 && !isDestroying) { - Log.i(TAG, "Uploading" + recordsNotUploadedJson.length() + " lost records"); - uploader = new UploadHelper(getApplicationContext()); - } - } - } - } catch (JSONException e) { - sendExceptionToUI("Error Reloading Lost Records", e); - } - - if (!isDestroying) - mHandlerReloadLost.postDelayed(reloadLostRecords, 60000); - } - }; + if (!isDestroying) + mHandlerReloadLost.postDelayed(reloadLostRecords, 60000); + } + }; /** * class This class process all the messages received after being correctly * parsed. @@ -802,11 +799,11 @@ private boolean isOnline() { for (int i = 0; (i < info.length); i++) { if (info[i].getState() == NetworkInfo.State.CONNECTED) { - log.debug("INTERNET: connected!"); + Log.d(TAG,"INTERNET: connected!"); return true; } } - log.debug("INTERNET nothing connected of "+String.valueOf(info.length)); + Log.d(TAG, "INTERNET nothing connected of "+String.valueOf(info.length)); } } return false; From b27a0708ae0789421152136505d26297d39aaccc Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sun, 10 Jun 2018 18:54:57 +0100 Subject: [PATCH 14/62] just log messages changes --- .../medtronic/MedtronicCGMService.java | 9 +++--- .../android/medtronic/MedtronicReader.java | 30 ++++++++----------- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index a3ec9e4..cb611d3 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -207,7 +207,7 @@ void sendExceptionToUI(String message, Exception e) { */ private void sendMessageToUI(String valuetosend) { - Log.i("medtronicCGMService", valuetosend); + Log.i("medtronicCGMService", "Sent message to UI" + valuetosend); DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss - "); //get current date time with Date() Date date = new Date(); @@ -242,8 +242,7 @@ private void sendMessageToUI(String valuetosend) { * */ private void sendErrorMessageToUI(String valuetosend) { - Log.e("medtronicCGMService", valuetosend); - log.error("Send Error Message to UI "+ valuetosend); + Log.e("medtronicCGMService", "Sent error message to UI: " + valuetosend); if (mClients != null && mClients.size() > 0) { for (int i = mClients.size() - 1; i >= 0; i--) { try { @@ -396,9 +395,9 @@ else if ("2".equalsIgnoreCase(type)){ Float fBgValue; try{ fBgValue = (float)Integer.parseInt(record.bGValue); - log.info("mmolxl true --> "+record.bGValue); + Log.i(TAG, "mmolxl true --> "+record.bGValue); record.bGValue = df.format(fBgValue/18f); - log.info("mmolxl/18 true --> "+record.bGValue); + Log.i(TAG, "mmolxl/18 true --> "+record.bGValue); }catch (Exception e){ } diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 7655351..872709c 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -972,17 +972,13 @@ private void calibratingBackwards(float previousCalibrationFactor, int previousCalibrationStatus, float isig, MedtronicSensorRecord record, int added, Date currentTime) { if (previousCalibrationFactor > 0) { + record.setUnfilteredGlucose(isig * previousCalibrationFactor); + record.setBGValue((applyFilterToRecord(record)) + ""); + record.isCalibrating = false; + record.calibrationFactor = previousCalibrationFactor; if (previousCalibrationStatus != MedtronicConstants.WITHOUT_ANY_CALIBRATION) { - record.setUnfilteredGlucose(isig * previousCalibrationFactor); - record.setBGValue((applyFilterToRecord(record)) + ""); - record.isCalibrating = false; - record.calibrationFactor = previousCalibrationFactor; record.calibrationStatus = previousCalibrationStatus; } else { - record.setUnfilteredGlucose(isig * previousCalibrationFactor); - record.setBGValue((applyFilterToRecord(record)) + ""); - record.isCalibrating = false; - record.calibrationFactor = previousCalibrationFactor; record.calibrationStatus = MedtronicConstants.LAST_CALIBRATION_FAILED_USING_PREVIOUS; } } @@ -1051,23 +1047,23 @@ private void calibratingCurrentElement(long difference, float isig, } public void calculateInstantCalibration(float currentMeasure) { - log.debug("Instant Calibration"); + Log.d(TAG,"Instant Calibration"); if (previousRecord != null && previousRecord.isig != 0) { - log.debug("I have isig " + previousRecord.isig); + Log.d(TAG, "I have isig " + previousRecord.isig); calibrationFactor = currentMeasure / previousRecord.isig; - log.debug("Instant Calibration result " + calibrationFactor); + Log.d(TAG,"Instant Calibration result " + calibrationFactor); if (calibrationFactor > 0) { previousRecord.bGValue = "" + ((int) currentMeasure); - log.debug("Instant Calibration Success!! "); + Log.d(TAG,"Instant Calibration Success!! "); calibrationStatus = MedtronicConstants.CALIBRATED; lastCalibrationDate = System.currentTimeMillis(); isCalibrating = false; previousRecord.isCalibrating = false; previousRecord.calibrationStatus = calibrationStatus; - log.debug("10"); + SharedPreferences.Editor editor = settings.edit(); - log.debug("change instant lastCalibrationDate"); + Log.d(TAG, "change instant lastCalibrationDate"); editor.putLong("lastCalibrationDate", lastCalibrationDate); editor.putBoolean("isCalibrating", false); editor.putFloat("calibrationFactor", calibrationFactor); @@ -1078,7 +1074,7 @@ public void calculateInstantCalibration(float currentMeasure) { return; } else{ sendErrorMessageToUI("I can't calibrate, I don't have any ISIG stored yet."); - log.debug("I dont have isig"); + Log.d(TAG,"I dont have isig"); } if (previousRecord == null) previousRecord = new MedtronicSensorRecord(); @@ -1089,9 +1085,7 @@ public void calculateInstantCalibration(float currentMeasure) { calibrationStatus = MedtronicConstants.WITHOUT_ANY_CALIBRATION; } previousRecord.calibrationStatus = calibrationStatus; - log.debug("11"); - - log.debug("Instant Calibration Failure!! "); + Log.d(TAG, "Instant Calibration Failure!! "); } /** From 2a4f1ed668aab7260242f585dae259628c6b317e Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sun, 10 Jun 2018 19:40:24 +0100 Subject: [PATCH 15/62] background colour changes --- .../android/dexcom/DexcomG4Activity.java | 56 +++++++++---------- .../android/upload/UploadHelper.java | 1 + app/src/main/res/layout/adb.xml | 3 +- app/src/main/res/xml/preferences.xml | 2 +- 4 files changed, 29 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index 59f64b1..4252dc0 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -177,9 +177,9 @@ public void onClick(DialogInterface dialog, int whichButton) { sb1.append(st.toString()).append("\n"); } Log.e(TAG, "Error approving gluc. value \n "+sb1.toString()); - if (ISDEBUG){ - display.setText(display.getText()+"Error approving gluc. value\n", BufferType.EDITABLE); - } + + display.setText(display.getText()+"Error approving gluc. value\n", BufferType.EDITABLE); + } } } @@ -204,9 +204,9 @@ public void onClick(DialogInterface dialog, int whichButton) { sb1.append(st.toString()).append("\n"); } Log.e(TAG, "Error approving gluc. value \n "+sb1.toString()); - if (ISDEBUG){ - display.setText(display.getText()+"Error approving gluc. value\n", BufferType.EDITABLE); - } + + display.setText(display.getText()+"Error approving gluc. value\n", BufferType.EDITABLE); + } } } @@ -231,9 +231,9 @@ public void onServiceConnected(ComponentName className, IBinder service) { sb1.append(st.toString()).append("\n"); } Log.e(TAG,"Error Registering Client Service Connection\n"+sb1.toString()); - if (ISDEBUG){ - display.setText(display.getText()+"Error Registering Client Service Connection\n", BufferType.EDITABLE); - } + + display.setText(display.getText()+"Error Registering Client Service Connection\n", BufferType.EDITABLE); + // In this case the service has crashed before we could even do anything with it } } @@ -243,9 +243,9 @@ public void onServiceDisconnected(ComponentName className) { mService = null; bService = null; Log.i(TAG,"Service Disconnected\n"); - if (ISDEBUG){ - display.setText(display.getText()+"Service Disconnected\n", BufferType.EDITABLE); - } + + display.setText(display.getText()+"Service Disconnected\n", BufferType.EDITABLE); + } }; @@ -309,10 +309,10 @@ public void run() { } }else log.info("mmolxl false --> "+record.bGValue); - mDumpTextView.setTextColor(Color.WHITE); + mDumpTextView.setText("\n" + record.displayTime + "\n" + record.bGValue + " " + record.trendArrow + "\n"); }else{ - mDumpTextView.setTextColor(Color.WHITE); + if (auxRecord == null || auxRecord.displayTime == null) mDumpTextView.setText("\n---\n---\n---\n"); else @@ -377,8 +377,6 @@ private void displaySensor(MedtronicSensorRecord record, long calDate, DecimalFo record.trendArrow = "---"; } - mDumpTextView.setTextColor(Color.WHITE); - mSensorValue.setTextColor(Color.WHITE); if (record.displayDateTime == 0) { mDumpTextView.setText("\n" + record.displayTime + "\n" + calib + "\n"); mSensorValue.setText(record.bGValue + " " + record.trendArrow + "\n"); @@ -491,23 +489,20 @@ else if ("2".equalsIgnoreCase(type)){ menu.getItem(2).setVisible(true); } } - if (ISDEBUG){ - lnr3.addView(b2); - } + + lnr3.addView(b2); lnr.addView(lnr3); lnr.addView(lnr2); display = new TextView(this); - if (ISDEBUG){ - display.setText("", BufferType.EDITABLE); - display.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); - display.setKeyListener(null); - display.setBackgroundColor(Color.BLACK); - display.setTextColor(Color.WHITE); - display.setMovementMethod(new ScrollingMovementMethod()); - display.setMaxLines(10); + display.setText("", BufferType.EDITABLE); + display.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); + display.setKeyListener(null); + + display.setMovementMethod(new ScrollingMovementMethod()); + display.setMaxLines(10); - lnr2.addView(display); - } + lnr2.addView(display); + b2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -619,11 +614,10 @@ protected void onResume() { } }else log.info("mmolxl false --> "+record.bGValue); - mDumpTextView.setTextColor(Color.WHITE); + mDumpTextView.setText("\n" + record.displayTime + "\n" + record.bGValue + " " + record.trendArrow + "\n"); } else { - mDumpTextView.setTextColor(Color.WHITE); if (auxRecord == null || auxRecord.displayTime == null) mDumpTextView.setText("\n---\n---\n---\n"); else diff --git a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java index 21c7380..3122106 100644 --- a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java +++ b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java @@ -158,6 +158,7 @@ private void doRESTUploadTo(String baseURI, Record[] records) throws Exception { String[] uriParts = baseURI.split("@"); String error = null; + //noinspection IfCanBeSwitch if (uriParts.length == 1) { error = "Passphrase is required in REST API URL"; } else if (uriParts.length == 2) { diff --git a/app/src/main/res/layout/adb.xml b/app/src/main/res/layout/adb.xml index ccdd9b0..441b8c4 100644 --- a/app/src/main/res/layout/adb.xml +++ b/app/src/main/res/layout/adb.xml @@ -9,6 +9,7 @@ android:id="@+id/demoTitle" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_centerInParent="true" android:textSize="50px" android:gravity="center" android:textStyle="bold" @@ -33,7 +34,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="40px" - + android:gravity="center" /> From 294fb3706a814aef55d8da9cd2a9c70916b9d1b0 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sun, 10 Jun 2018 20:50:28 +0100 Subject: [PATCH 16/62] restore the writing of the CSV file, apparently it was needed - is how previosu values stored persist across sessions,and reach front end. --- .../android/medtronic/MedtronicReader.java | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 872709c..69bc339 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -32,6 +32,9 @@ import com.nightscout.android.upload.MedtronicSensorRecord; import com.nightscout.android.upload.Record; import com.physicaloid.lib.Physicaloid; +import java.io.File; +import java.io.FileOutputStream; +import java.io.ObjectOutputStream; /** * Class: MedtronicReader This class manages all read operations over all the @@ -47,7 +50,7 @@ public class MedtronicReader { .getName()); private static final String TAG = MedtronicReader.class.getSimpleName(); public Physicaloid mSerialDevice; - + private Context context; protected byte[] idPump = null; protected byte[] notFinishedRead = null; @@ -114,7 +117,7 @@ public MedtronicReader(Physicaloid device, Context context, MedtronicConstants.PREFS_NAME, 0); this.mClients = mClients; - + this.context = context; knownDevices = new ArrayList(); mSerialDevice = device; prefs = PreferenceManager.getDefaultSharedPreferences(context); @@ -481,10 +484,12 @@ private void processDataAnswer(byte[] readData) MedtronicSensorRecord auxRecord = new MedtronicSensorRecord(); auxRecord.isCalibrating = calibrationSelectedAux == MedtronicConstants.CALIBRATION_GLUCOMETER; + writeLocalCSV(auxRecord, context); Log.d(TAG, "No previous record - 1"); } else { previousRecord.isCalibrating = calibrationSelectedAux == MedtronicConstants.CALIBRATION_GLUCOMETER; + writeLocalCSV(previousRecord, context); Log.d(TAG, "Has previous record - 2"); } @@ -547,11 +552,11 @@ private void processDataAnswer(byte[] readData) MedtronicSensorRecord auxRecord = new MedtronicSensorRecord(); calculateDate(auxRecord, new Date(), 0); Log.d(TAG, "no previous record - 3"); - + writeLocalCSV(auxRecord, context); } else { calculateDate(previousRecord, new Date(), 0); Log.d(TAG, "previous record - 4"); - + writeLocalCSV(previousRecord, context); } sendMessageToUI("sensor data wUp."); editor.commit(); @@ -1061,6 +1066,7 @@ public void calculateInstantCalibration(float currentMeasure) { previousRecord.isCalibrating = false; previousRecord.calibrationStatus = calibrationStatus; + writeLocalCSV(previousRecord, context); SharedPreferences.Editor editor = settings.edit(); Log.d(TAG, "change instant lastCalibrationDate"); @@ -1085,6 +1091,8 @@ public void calculateInstantCalibration(float currentMeasure) { calibrationStatus = MedtronicConstants.WITHOUT_ANY_CALIBRATION; } previousRecord.calibrationStatus = calibrationStatus; + writeLocalCSV(previousRecord, context); + Log.d(TAG, "Instant Calibration Failure!! "); } @@ -1309,6 +1317,7 @@ public void processSensorDataMessage(byte[] readData) { lastSensorValueDate = d.getTime(); editor.putLong("lastSensorValueDate", lastSensorValueDate); editor.commit(); + writeLocalCSV(previousRecord, context); Log.i(TAG, "sensorprocessed end expected " + HexDump.toHexString(expectedSensorSortNumber)); @@ -1879,4 +1888,28 @@ public void run() { } } + + private void writeLocalCSV(MedtronicSensorRecord mostRecentData, + Context context) { + + // Write EGV Binary of last (most recent) data + try { + if (mostRecentData == null || mostRecentData.bGValue == null) + log.debug("writeLocalCSV SAVING EMPTY!!"); + else + log.debug("writeLocalCSV SAVING --> " + mostRecentData.bGValue); + ObjectOutputStream oos = new ObjectOutputStream( + new FileOutputStream(new File(context.getFilesDir(), + "save.bin"))); // Select where you wish to save the + // file... + oos.writeObject(mostRecentData); // write the class as an 'object' + oos.flush(); // flush the stream to insure all of the information + // was written to 'save.bin' + oos.close();// close the stream + } catch (Exception e) { + Log.e(TAG, "write to OutputStream failed", e); + log.error("write to OutputStream failed", e); + } + } + } From aea8739742994a87d81c67d3f6fe82e42d92dca7 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sun, 10 Jun 2018 21:48:13 +0100 Subject: [PATCH 17/62] reduce logging of internet connected test, log only failure. --- .../com/nightscout/android/medtronic/MedtronicCGMService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index cb611d3..6592c47 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -798,7 +798,6 @@ private boolean isOnline() { for (int i = 0; (i < info.length); i++) { if (info[i].getState() == NetworkInfo.State.CONNECTED) { - Log.d(TAG,"INTERNET: connected!"); return true; } } From f4830a3f0b53be9692701c110b2b3ac79f973a07 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sun, 10 Jun 2018 22:10:39 +0100 Subject: [PATCH 18/62] remove duplicate sensor display updating. change error message about internet to be less cryptic. --- .../android/dexcom/DexcomG4Activity.java | 143 +++++++----------- .../medtronic/MedtronicCGMService.java | 2 +- 2 files changed, 55 insertions(+), 90 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index 4252dc0..f163b1d 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -249,7 +249,53 @@ public void onServiceDisconnected(ComponentName className) { } }; + private void updateSensorDisplay() { + try { + Record auxRecord = getLastRecord(); + + long calDate = -1; + if (settings.contains("lastCalibrationDate")) { + calDate = settings.getLong("lastCalibrationDate", -1); + } + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(getBaseContext()); + + DecimalFormat df = new DecimalFormat("#.##"); + + if (auxRecord instanceof MedtronicSensorRecord) { + + MedtronicSensorRecord record = (MedtronicSensorRecord) auxRecord; + displaySensor(record, calDate, df); + + } else if (auxRecord instanceof EGVRecord) { + EGVRecord record = (EGVRecord) auxRecord; + if (prefs.getBoolean("mmolxl", false)) { + Float fBgValue = null; + try { + fBgValue = (float) Integer.parseInt(record.bGValue); + log.info("mmolxl true --> " + record.bGValue); + record.bGValue = df.format(fBgValue / 18f); + log.info("mmolxl/18 true --> " + record.bGValue); + } catch (Exception e) { + } + } else + log.info("mmolxl false --> " + record.bGValue); + + mDumpTextView.setText("\n" + record.displayTime + "\n" + + record.bGValue + " " + record.trendArrow + "\n"); + } else { + if (auxRecord == null || auxRecord.displayTime == null) + mDumpTextView.setText("\n---\n---\n---\n"); + else + mDumpTextView.setText("\n" + auxRecord.displayTime + + "\n---\n---\n"); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } //All I'm really doing here is creating a simple activity to launch and maintain the service private Runnable updateDataView = new Runnable() { @@ -277,50 +323,8 @@ public void run() { mTitleTextView.setTextColor(Color.GREEN); mTitleTextView.setText("CGM Service Started"); b1.setText("Stop Uploading CGM Data"); - Record auxRecord = DexcomG4Activity.this.loadClassFile(new File(getBaseContext().getFilesDir(), "save.bin")); - long calDate = -1; - try{ - if (settings.contains("lastCalibrationDate")){ - calDate = settings.getLong("lastCalibrationDate", -1); - } - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getBaseContext()); - - - - DecimalFormat df = new DecimalFormat("#.##"); - - if (auxRecord instanceof MedtronicSensorRecord){ - - MedtronicSensorRecord record = (MedtronicSensorRecord) auxRecord; - displaySensor(record, calDate,df); - - }else if (auxRecord instanceof EGVRecord){ - EGVRecord record = (EGVRecord)auxRecord; - if (prefs.getBoolean("mmolxl", false)){ - Float fBgValue = null; - try{ - fBgValue = (float)Integer.parseInt(record.bGValue); - log.info("mmolxl true --> "+record.bGValue); - record.bGValue = df.format(fBgValue/18f); - log.info("mmolxl/18 true --> "+record.bGValue); - }catch (Exception e){ - - } - }else - log.info("mmolxl false --> "+record.bGValue); - - mDumpTextView.setText("\n" + record.displayTime + "\n" + record.bGValue + " " + record.trendArrow + "\n"); - }else{ - - if (auxRecord == null || auxRecord.displayTime == null) - mDumpTextView.setText("\n---\n---\n---\n"); - else - mDumpTextView.setText("\n" + auxRecord.displayTime + "\n---\n---\n"); - } - }catch (Exception e){ - e.printStackTrace(); - } + updateSensorDisplay(); + }else{ b1.setText("Start Uploading CGM Data"); @@ -578,56 +582,17 @@ protected void onPause() { } + private Record getLastRecord() + { + return DexcomG4Activity.this.loadClassFile(new File(getBaseContext().getFilesDir(), "save.bin")); + } + @Override protected void onResume() { log.info("ON RESUME!"); super.onResume(); // Refresh the status - try { - Record auxRecord = DexcomG4Activity.this.loadClassFile(new File( - getBaseContext().getFilesDir(), "save.bin")); - long calDate = -1; - if (settings.contains("lastCalibrationDate")) { - calDate = settings.getLong("lastCalibrationDate", -1); - } - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getBaseContext()); - - DecimalFormat df = new DecimalFormat("#.##"); - - if (auxRecord instanceof MedtronicSensorRecord) { - - MedtronicSensorRecord record = (MedtronicSensorRecord) auxRecord; - displaySensor(record, calDate,df); - - } else if (auxRecord instanceof EGVRecord) { - EGVRecord record = (EGVRecord) auxRecord; - if (prefs.getBoolean("mmolxl", false)){ - Float fBgValue = null; - try{ - fBgValue = (float)Integer.parseInt(record.bGValue); - log.info("mmolxl true --> "+record.bGValue); - record.bGValue = df.format(fBgValue/18f); - log.info("mmolxl/18 true --> "+record.bGValue); - }catch (Exception e){ - - } - }else - log.info("mmolxl false --> "+record.bGValue); - - mDumpTextView.setText("\n" + record.displayTime + "\n" - + record.bGValue + " " + record.trendArrow + "\n"); - } else { - if (auxRecord == null || auxRecord.displayTime == null) - mDumpTextView.setText("\n---\n---\n---\n"); - else - mDumpTextView.setText("\n" + auxRecord.displayTime - + "\n---\n---\n"); - } - } catch (Exception e) { - e.printStackTrace(); - } - + updateSensorDisplay(); } //Check to see if service is running diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index 6592c47..437933a 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -515,7 +515,7 @@ public void run() { } if (connected) { if (!isOnline()) - sendErrorMessageToUI("NET connection error"); + sendErrorMessageToUI("Internet connection error"); if (!listenerAttached) { Log.d(TAG, "!listener attached readByListener triggered"); mSerial.clearReadListener(); From fc7fd5a531c67af910353a63c833b4ce54fe665f Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sun, 10 Jun 2018 22:28:46 +0100 Subject: [PATCH 19/62] remove unnecessary checks for EGV records that are not sensor records. There are no such thing. --- .../android/dexcom/DexcomG4Activity.java | 17 ----------------- .../nightscout/android/widget/CGMWidget.java | 6 +----- .../android/widget/CGMWidgetUpdater.java | 6 +----- 3 files changed, 2 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index f163b1d..aa5a919 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -267,23 +267,6 @@ private void updateSensorDisplay() { MedtronicSensorRecord record = (MedtronicSensorRecord) auxRecord; displaySensor(record, calDate, df); - } else if (auxRecord instanceof EGVRecord) { - EGVRecord record = (EGVRecord) auxRecord; - if (prefs.getBoolean("mmolxl", false)) { - Float fBgValue = null; - try { - fBgValue = (float) Integer.parseInt(record.bGValue); - log.info("mmolxl true --> " + record.bGValue); - record.bGValue = df.format(fBgValue / 18f); - log.info("mmolxl/18 true --> " + record.bGValue); - } catch (Exception e) { - - } - } else - log.info("mmolxl false --> " + record.bGValue); - - mDumpTextView.setText("\n" + record.displayTime + "\n" - + record.bGValue + " " + record.trendArrow + "\n"); } else { if (auxRecord == null || auxRecord.displayTime == null) mDumpTextView.setText("\n---\n---\n---\n"); diff --git a/app/src/main/java/com/nightscout/android/widget/CGMWidget.java b/app/src/main/java/com/nightscout/android/widget/CGMWidget.java index d97f22c..47a4c4c 100644 --- a/app/src/main/java/com/nightscout/android/widget/CGMWidget.java +++ b/app/src/main/java/com/nightscout/android/widget/CGMWidget.java @@ -50,11 +50,7 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] a views.setTextViewText(R.id.sgv_id, record.bGValue+calib); views.setTextViewText(R.id.arrow_id, record.trendArrow); - }else if (auxRecord instanceof EGVRecord){ - EGVRecord record = (EGVRecord)auxRecord; - views.setTextViewText(R.id.sgv_id, record.bGValue); - views.setTextViewText(R.id.arrow_id, record.trendArrow); - }else{ + } else{ views.setTextViewText(R.id.sgv_id, "---"); views.setTextViewText(R.id.arrow_id, "---"); } diff --git a/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java b/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java index a368c4f..527213d 100644 --- a/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java +++ b/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java @@ -81,11 +81,7 @@ private void updateValues(Record auxRecord, RemoteViews views){ views.setTextViewText(R.id.sgv_id, record.bGValue+calib); views.setTextViewText(R.id.arrow_id, record.trendArrow); - }else if (auxRecord instanceof EGVRecord){ - EGVRecord record = (EGVRecord)auxRecord; - views.setTextViewText(R.id.sgv_id, record.bGValue); - views.setTextViewText(R.id.arrow_id, record.trendArrow); - }else{ + } else{ views.setTextViewText(R.id.sgv_id, "---"); views.setTextViewText(R.id.arrow_id, "---"); } From 3a78058b6c83aaabca43b76cf1a62efb4a89fb10 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Mon, 11 Jun 2018 20:33:17 +0100 Subject: [PATCH 20/62] better log message for open-fail. --- .../com/nightscout/android/medtronic/MedtronicCGMService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index 437933a..3e25db7 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -844,7 +844,7 @@ private void openUsbSerial(boolean reload) { if (!mSerial.open()) { Toast.makeText(this, "cannot open / will not open", Toast.LENGTH_SHORT) .show(); - Log.e(TAG, "mSerial noted opened and will not open"); + Log.e(TAG, "mSerial not opened and will not open"); return; } else { if (!isReloaded && reload) From 02077fe7e6fb9192f43e0c0f3badf4e59b303595 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Tue, 12 Jun 2018 00:09:55 +0100 Subject: [PATCH 21/62] Replaced physicaloid with more active USB/serial package. Main reason is it supports my USB/serial test rig. --- app/build.gradle | 2 +- .../medtronic/MedtronicCGMService.java | 223 ++++++++---------- .../android/medtronic/MedtronicReader.java | 47 ++-- app/src/main/res/xml/device_filter.xml | 2 +- build.gradle | 1 + 5 files changed, 120 insertions(+), 155 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 68b03ee..f82937a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,5 +56,5 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - + implementation 'com.github.felHR85:UsbSerial:4.5.2' } diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index 3e25db7..b634b7c 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -8,6 +8,7 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.hardware.usb.UsbDevice; +import android.hardware.usb.UsbDeviceConnection; import android.hardware.usb.UsbManager; import android.net.ConnectivityManager; import android.net.NetworkInfo; @@ -28,14 +29,14 @@ import android.widget.Toast; import java.text.DateFormat; import java.text.SimpleDateFormat; + +import com.felhr.usbserial.UsbSerialDevice; +import com.felhr.usbserial.UsbSerialInterface; import com.nightscout.android.dexcom.USB.HexDump; import com.nightscout.android.upload.GlucometerRecord; import com.nightscout.android.upload.MedtronicSensorRecord; import com.nightscout.android.upload.Record; import com.nightscout.android.upload.UploadHelper; -import com.physicaloid.lib.Physicaloid; -import com.physicaloid.lib.usb.driver.uart.ReadLisener; -import com.physicaloid.lib.usb.driver.uart.UartConfig; import org.json.JSONArray; import org.json.JSONException; @@ -48,10 +49,13 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; + /** * This class is the service responsible of manage correctly the interface with the enlite. * @author lmmarguenda @@ -65,8 +69,7 @@ public class MedtronicCGMService extends Service implements private boolean listenerAttached = false; private UploadHelper uploader; - - private Physicaloid mSerial; + private UsbSerialDevice mSerial; private Handler mHandlerCheckSerial = new Handler();// This handler runs readAndUpload Runnable which checks the USB device and NET connection. private Handler mHandlerRead = new Handler();// this Handler is used to read and parse the messages received from the USB, It is only activated after a Read. private Handler mHandlerProcessRead = new Handler();// this Handler is used to process the messages parsed. @@ -90,9 +93,9 @@ public class MedtronicCGMService extends Service implements private Object isUploadingLock = new Object(); private Object readByListenerSizeLock = new Object(); private Object buffMessagesLock = new Object(); - private Object mSerialLock = new Object(); + private boolean faking = false; - private ReadByListener readByListener = new ReadByListener();//Listener to read data + private boolean isReloaded = false; @Override @@ -376,9 +379,9 @@ else if ("2".equalsIgnoreCase(type)){ wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); - mSerial = new Physicaloid(this); - medtronicReader = new MedtronicReader(mSerial, getBaseContext(), - mClients); + + + medtronicReader = new MedtronicReader(getBaseContext(), mClients); Record auxRecord = MedtronicCGMService.this.loadClassFile(new File(getBaseContext().getFilesDir(), "save.bin")); @@ -455,26 +458,7 @@ public void onDestroy() { - /** - * Listener which throws a handler that manages the reading from the serial buffer, when a read happens - */ - private ReadLisener readListener = new ReadLisener() { - @Override - public void onRead(int size) { - if (size <= 0) return; - Log.d(TAG, "On read received " + size); - synchronized (readByListenerSizeLock) { - if (readByListener.size > -1) - readByListener.size += size; - else - readByListener.size = size; - } - mHandlerRead.post(readByListener); - - } - - }; /** * Runnable. * It checks that it is a serial device available, and there is Internet connection. @@ -496,8 +480,7 @@ public void run() { synchronized (checkSerialLock) { Log.d(TAG, "I have lost usb permission changing listener attached to false..."); listenerAttached = false; - mSerial.clearReadListener(); - mHandlerRead.removeCallbacks(readByListener); + sendMessageDisconnectedToUI(); if (!mHandlerActive || isDestroying){ Log.d(TAG,"destroy readAnd Upload "+ mHandlerActive + " isDes "+ isDestroying); @@ -510,18 +493,16 @@ public void run() { } else sendMessageConnectedToUI(); boolean connected; - synchronized (mSerialLock) { - connected = isConnected(); - } + + connected = isConnected(); + if (connected) { if (!isOnline()) sendErrorMessageToUI("Internet connection error"); if (!listenerAttached) { Log.d(TAG, "!listener attached readByListener triggered"); - mSerial.clearReadListener(); - mHandlerRead.removeCallbacks(readByListener); - mSerial.addReadListener(readListener); - mHandlerRead.post(readByListener); + + listenerAttached = true; @@ -544,42 +525,17 @@ else if (!isOnline()) } catch (Exception e) { sendExceptionToUI("Unable to read from receptor or upload", e); } - synchronized (checkSerialLock) { + if (!mHandlerActive || isDestroying){ Log.d(TAG,"destroy readAnd Upload2 "+ mHandlerActive + " isDes "+ isDestroying); return; } mHandlerCheckSerial.removeCallbacks(readAndUpload); mHandlerCheckSerial.postDelayed(readAndUpload, MedtronicConstants.FIVE_SECONDS__MS); - } + } }; - /** - * Runnable. - * Executes doReadAndUploadFunction; - */ - private class ReadByListener implements Runnable { - public Integer size = -1; - public void run() { - int auxSize = 0; - synchronized (readByListenerSizeLock) { - auxSize = size; - size = -1; - } - if (auxSize >= 0){ - Log.d(TAG, "Read "+auxSize+" bytes"); - doReadAndUpload(auxSize); - isReloaded = false; - }else{ -// Log.d(TAG, "ReadByListener - nothing to read"); - if (!isReloaded){ - openUsbSerial(true); - medtronicReader.mSerialDevice = mSerial; - } - } - } - } public void doFakeReadAndUpload() { @@ -622,30 +578,18 @@ public void doFakeReadAndUpload() { /** * Process all the parsed messages, checks if there is Records to upload and executes the uploader if necessary. */ - protected void doReadAndUpload(int size) { + protected void doReadAndUpload(byte[] bytes) { try { - synchronized (mSerialLock) { - if (mSerial.isOpened() && !isDestroying) { - - Log.d(TAG, "doReadAndUpload"); - ArrayList bufferedMessages = medtronicReader - .readFromReceiver(size); - if (bufferedMessages != null && bufferedMessages.size() > 0) { - Log.d(TAG, "doReadAndUpload: there are "+bufferedMessages.size()+" to process "); - synchronized (buffMessagesLock) { - processBufferedMessages.bufferedMessages - .addAll(bufferedMessages); - } - if (!isDestroying){ - log.debug("Stream Received--> order process bufferedMessages "); - mHandlerProcessRead.post(processBufferedMessages); - } - }else{ - Log.d(TAG, "Nothing to do in doReadAndUpload"); - } - - } + Log.d(TAG, "doReadAndUpload"); + ArrayList bufferedMessages = medtronicReader.readFromReceiver(bytes); + if (bufferedMessages != null && bufferedMessages.size() > 0) { + Log.d(TAG, "doReadAndUpload: there are " + bufferedMessages.size() + " to process "); + processBufferedMessages.bufferedMessages.addAll(bufferedMessages); + mHandlerProcessRead.post(processBufferedMessages); + } + else{ + Log.d(TAG, "Nothing to do in doReadAndUpload"); } } catch (Exception e) { sendExceptionToUI("doReadAndUpload exception", e); @@ -787,7 +731,7 @@ public void run() { } private boolean isConnected() { - return mSerial.isOpened() || faking; + return mSerial != null || faking; } private boolean isOnline() { @@ -828,44 +772,67 @@ private void displayMessage(String message) { private void openUsbSerial(boolean reload) { if (faking) return; + if (mSerial == null) { - Toast.makeText(this, "cannot open / null device", Toast.LENGTH_SHORT).show(); - Log.e(TAG, "mSerial==null"); - return; - } - if (mSerial.isOpened() && reload){ - mSerial.close(); - mSerial.clearReadListener(); - listenerAttached = false; - } - - synchronized (mSerialLock) { - if (!mSerial.isOpened()) { - if (!mSerial.open()) { - Toast.makeText(this, "cannot open / will not open", Toast.LENGTH_SHORT) - .show(); - Log.e(TAG, "mSerial not opened and will not open"); - return; - } else { - if (!isReloaded && reload) - isReloaded = true; - boolean dtrOn = true; - boolean rtsOn = false; - mSerial.setConfig(new UartConfig(57600, 8, 1, 0, dtrOn, - rtsOn)); - if (!reload) - Toast.makeText(this, "connected", Toast.LENGTH_SHORT) - .show(); + UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE); + UsbDevice device; + UsbDeviceConnection connection; + + HashMap usbDevices = usbManager.getDeviceList(); + if (!usbDevices.isEmpty()) { + boolean keep = true; + device = null; + connection = null; + for (Map.Entry entry : usbDevices.entrySet()) { + device = entry.getValue(); + int deviceVID = device.getVendorId(); + int devicePID = device.getProductId(); + if (deviceVID != 0x1d6b || (devicePID != 0x0001 || devicePID != 0x0002 || devicePID != 0x0003)) { + // Excludes USB hubs + Log.d(TAG, "Device: vendor " + deviceVID + " - ID " + devicePID); + connection = usbManager.openDevice(device); + keep = false; + } else { + connection = null; + device = null; + } + + if (!keep) + break;//stop search on first usb device } + + if (device != null && connection != null) mSerial = UsbSerialDevice.createUsbSerialDevice(device, connection); + } + if (mSerial == null) { + Toast.makeText(this, "cannot open / null device", Toast.LENGTH_SHORT).show(); + Log.e(TAG, "mSerial==null"); + return; + } + + if (mSerial.open()) { + + mSerial.setBaudRate(57600); + mSerial.setDataBits(8); + mSerial.setParity(0); + mSerial.setStopBits(1); + + mSerial.read(mCallback); + + + Toast.makeText(this, "connected", Toast.LENGTH_SHORT) + .show(); + } + else { + Toast.makeText(this, "couldn't open device", Toast.LENGTH_SHORT) + .show(); + Log.e(TAG, "could not open device)"); } - } - if (!listenerAttached && reload) { - mSerial.addReadListener(readListener); - listenerAttached = true; } } + + //Deserialize the EGVRecord (most recent) value public Record loadClassFile(File f) { ObjectInputStream ois = null; @@ -887,13 +854,13 @@ public Record loadClassFile(File f) { } private void closeUsbSerial() { - mSerial.clearReadListener(); - mHandlerRead.removeCallbacks(readByListener); + + mHandlerProcessRead.removeCallbacks(processBufferedMessages); mHandlerReviewParameters.removeCallbacks(checker); listenerAttached = false; - mSerial.close(); + } /** @@ -994,7 +961,7 @@ else if ("3".equalsIgnoreCase(level)) mHandlerActive = false; } - medtronicReader = new MedtronicReader(mSerial, + medtronicReader = new MedtronicReader( getBaseContext(), mClients); medtronicReader.idPump = newIdPump; synchronized (checkSerialLock) { @@ -1034,4 +1001,14 @@ else if ("3".equalsIgnoreCase(level)) } + private UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { + + @Override + public void onReceivedData(byte[] arg0) + { + doReadAndUpload(arg0); + // Code here :) + } + }; + } diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 69bc339..7fc39cf 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -49,7 +49,7 @@ public class MedtronicReader { private Logger log = (Logger) LoggerFactory.getLogger(MedtronicReader.class .getName()); private static final String TAG = MedtronicReader.class.getSimpleName(); - public Physicaloid mSerialDevice; + private Context context; protected byte[] idPump = null; @@ -108,10 +108,10 @@ public class MedtronicReader { /** * Constructor * - * @param device + * * @param context */ - public MedtronicReader(Physicaloid device, Context context, + public MedtronicReader(Context context, ArrayList mClients) { this.settings = context.getSharedPreferences( MedtronicConstants.PREFS_NAME, 0); @@ -119,7 +119,7 @@ public MedtronicReader(Physicaloid device, Context context, this.mClients = mClients; this.context = context; knownDevices = new ArrayList(); - mSerialDevice = device; + prefs = PreferenceManager.getDefaultSharedPreferences(context); if (prefs.contains("calibrationType")) { @@ -390,34 +390,21 @@ private void checkCalibrationOutOfTime() { * This method reads from the serial device, and process the answer * * */ - public ArrayList readFromReceiver(int size) { + public ArrayList readFromReceiver(byte[] readFromDevice) { ArrayList bufferedMessages = null; - byte[] readFromDevice = new byte[1024]; - int read = 0; - if (size >= 0) { - Log.d(TAG, "readFromReceiver: " + size + " bytes!!"); - try { - read = mSerialDevice.read(readFromDevice); - } catch (Exception e) { - Log.e(TAG, "Unable to read from serial device", e); - return null; - } - } - if (read > 0) { - Log.d(TAG, "READ " + read + " bytes: " + HexDump.dumpHexString(readFromDevice, 0, read)); + Log.d(TAG, "READ " + readFromDevice.length + " bytes: " + HexDump.dumpHexString(readFromDevice)); - SharedPreferences.Editor editor = settings.edit(); - editor.putLong("lastDestroy", System.currentTimeMillis()); - editor.commit(); - try { - - bufferedMessages = parseMessageData( - Arrays.copyOfRange(readFromDevice, 0, read), read); - checkCalibrationOutOfTime(); - } catch (Exception e) { - sendErrorMessageToUI(e.toString()); - bufferedMessages = new ArrayList(); - } + SharedPreferences.Editor editor = settings.edit(); + editor.putLong("lastDestroy", System.currentTimeMillis()); + editor.commit(); + try { + bufferedMessages = parseMessageData( + Arrays.copyOfRange(readFromDevice, 0, readFromDevice.length), readFromDevice.length); + checkCalibrationOutOfTime(); + + } catch (Exception e) { + sendErrorMessageToUI(e.toString()); + bufferedMessages = new ArrayList(); } return bufferedMessages; } diff --git a/app/src/main/res/xml/device_filter.xml b/app/src/main/res/xml/device_filter.xml index 37007fd..9e47dcc 100644 --- a/app/src/main/res/xml/device_filter.xml +++ b/app/src/main/res/xml/device_filter.xml @@ -18,5 +18,5 @@ - + diff --git a/build.gradle b/build.gradle index 0966085..7595e16 100644 --- a/build.gradle +++ b/build.gradle @@ -14,5 +14,6 @@ buildscript { allprojects { repositories { jcenter() + maven { url "https://jitpack.io" } } } From 41489aae8db8ef29e771dacc34adf81a3ea10043 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 19:51:30 +0100 Subject: [PATCH 22/62] Various tidying up. No behavioural change. --- app/libs/physicaloidlibrary.jar | Bin 94423 -> 0 bytes .../android/dexcom/DexcomG4Activity.java | 11 +- .../dexcom/USB/CdcAcmSerialDriver.java | 258 ------------------ .../dexcom/USB/CommonUsbSerialDriver.java | 138 ---------- .../dexcom/USB/SerialInputOutputManager.java | 187 ------------- .../android/dexcom/USB/USBPower.java | 44 --- .../android/dexcom/USB/UsbSerialDriver.java | 207 -------------- .../android/dexcom/USB/UsbSerialProber.java | 171 ------------ .../medtronic/MedtronicCGMService.java | 54 +--- .../android/medtronic/MedtronicConstants.java | 6 +- .../android/medtronic/MedtronicReader.java | 3 - .../nightscout/android/widget/CGMWidget.java | 1 - .../android/widget/CGMWidgetUpdater.java | 1 - 13 files changed, 20 insertions(+), 1061 deletions(-) delete mode 100644 app/libs/physicaloidlibrary.jar delete mode 100644 app/src/main/java/com/nightscout/android/dexcom/USB/CdcAcmSerialDriver.java delete mode 100644 app/src/main/java/com/nightscout/android/dexcom/USB/CommonUsbSerialDriver.java delete mode 100644 app/src/main/java/com/nightscout/android/dexcom/USB/SerialInputOutputManager.java delete mode 100644 app/src/main/java/com/nightscout/android/dexcom/USB/USBPower.java delete mode 100644 app/src/main/java/com/nightscout/android/dexcom/USB/UsbSerialDriver.java delete mode 100644 app/src/main/java/com/nightscout/android/dexcom/USB/UsbSerialProber.java diff --git a/app/libs/physicaloidlibrary.jar b/app/libs/physicaloidlibrary.jar deleted file mode 100644 index 9ec2cc455a07b631f2566a9cd832c24be8cb4fba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94423 zcmb5WW0WV~vMpL&w%ujhR+sHx*;beB>auOywr$(CZQtH!-}BxbZ;buF@8rn!VT~M_ zA7VzVh&flRl$QblMFoO{gam?!DHa9#KQ2@tP#_r*B>`FqSy6f!0a*!A5r7h%jOf=G z5YYZ1Fp#_y1Y|{E9xCYHcYyy6`TzJOs=rSSZLH{R&Dgf03@!B?9K7PJ%`-=1b1c|1tCpZNJ6CQe7_%?v%}Iy2O~kr{n2T3;6vaOXdXnjwytY{?KA%YgGJ zYf9Xzelc&VPdgr|B;3LHrsU!%xyc#t4P|LuG6-X#HforJFqXVS{1^Z$&{#IZS$ehCF9X*<2TtvAeJHhl_;q&nWy*F8mc)%e zC7Y%pW5a&#btyf+UJ2g5rI5S2@&se-%ldhg)IqqZx!!1c4Q4;M9q`Dki0Xq3+6yG z2z4bKsL+MI)!vg1sULV2>=5q2*?S*A5d4UFQ3%0DsSa>WJdp@lu2Z+>`z7&auU5<| zr$ne5@TF*e%*`hGOa2A@ME9nh7;Z+8v4#Gc)G{CS#l`QDR0m9Dsx_QxK=)sM1oC?# z@a6{)kSfSO`4R2^#gA;PlAniIz&?9aB&h2okOb^KFHYHrtLXJ+KM_1osc_!ua|0 zXXX{+!YHi5YN%;-1VP8QpQT63E8YTaB*XRC&z4QMWEQKl(&3}&J}n-Q-{!azm7XB) z8@p-o>aN5^sCda}tiH%MEb3I{nvJ0XC?SY38};>vdNEB_*Nc!~mz7AS+cJ|Ps)eZ& z0%p^W)Mb#U`+d^D3?pkEr@M4lYo*$&+U*F+$2Ra^mM+p*prY_an4Sb}}6lIU|Ant=4VP#e{)&3d0@TBZFe)`>JazsUyL;o*Sk0Q@!JpQ5@ z`FDBv&#ME&KclK_YiXlz^#27mR#R$U9yM^esc{k0N^JPNBvT3^gDRftjX)=d)*10U zu<1xycCO!*P4?gxHTCz`_bZGZ$o4%Zk&>s^ z<%ZVQ;24Il3NN{Q7GRm^Z1C_toj-g_y#VF%oM4Jrib5w;a~G88<1)itbxsblRrcAe zT!VCmP`@L$p94vMFD!?ixg!*kcpBQJpMidIapTF|XkP3$?#JlQtf?Rr@SpI*^jNb9@OH{~P07B7u`<9vM}DNXTnVS~3x zchPSXZxO5q(0^fmPi|S4^cVBIf5e>NA2I)T9!OM$QqxjJ`=Y<@-N3@TalHUlT#ErE zgDRJ|j3Yw?X9~oM`GIOU=$jfN5$v|l5T8_HSE+ff(WtSkmTa-uKtDGyG@wzwwAAQS zzO>fzd()*{WxDfPrjMlO8Lex#`})`MujdVyYfcx}oznJcpcB19x&y|AskHmbQIK$$ z+Ev?)2oa6_+SDaJ=8Q0!mK-Kjd{}(w=Ar)3Rux?$=4tsA?xkP52vO2@2H;$T}{$?LY|zVI`<3I+I^qoxIg(WagGn>=ER- zKNbIbf&J(jKi9atH#R3aBv6{kyl4(~Vp<+CJVLBGAHwkEBNnm{P&2Fd zmY*OwW(JJ{uHOf)b&2E<{pDATMP7>5+r4Cv!3>|1D5>}z&nd>xVXegAGf2sx{tW^^vbIEJ~>d>SeTA+lyYm|P_ zm}Lqg@+}0$LhWg$FQ*JLYNg&QN;pm5!7{;&zR#|-<&?{R=9_px~ zHuUU03o3N%5F@RKK^B9MOjOBeY6x_*dWi|EnV|AOt!@djfdE93F-8vWg!YU8oQR;} z1S37E0g;1oXnhWb1qFH>GCWt91&i08sX4+~6r9lL6eXfG^r>ZY3ZyBn;qU?Vb$n({ zow|z@xB=u-C}~k+W(8is`q<$YZiE3%Ei-J=+dhXyHBf3KH8nZ+~zh z$T5yBX+KxRi5nI7!v5NqJu{BE7_=kldp0;@LFFmCdZkeFt;Vvk)bma3vA{CFeXjz^ zDHkVu&p-N_OX*Y^7fnE~e(7yw&1?-W5Knm4Q<>lX*i^y=l2Hijv1^=sZw*A8oLrNNm)7+51MRfccjYDJmjc3+ZOASPCS=be64Z1-cI1?ch)yNufS)J1L$K4UFK zXW0zHf#myl!c8U461>;NeDMo)##9}@Ac25B8p53`5Qv(xvgD@b8gV3rfHU7S&n~#S zlHsAbgh}X=_m`%)CKW(Hd(&Y*(wEq)o=rQie#H_yA}zT+fcRUtj|@SoVnaGyBO?Ca(Fr}>M(qjRh6|7JKDzkrw3;1P=}>tDQh%iXr6Rh zf+gfPXuK(e$@uEo!W2FnwwTq-iOX}DH)QLxQ=tQ>9Tk@EH4z2 zkMtfz5cjt6HF&XlCX|36;oVb=nDvy1mT=dai`Qb!n!F#(0K{#PpO!m?-FYTE`uHB0 zlHku$N-sq5k-w%KRL`~=3|!tojgpgQ&uxa)>Qz$`zy2oeF7ZI!ufaVYjQd6OntU1< zc6$fxpF?UeNHZr-ARy;XuiIh1}OZWH?<6X(;eQ-OJH3woUpq*<`b z>mF*+v5elKdnZQfQ(jd*6pYg=Rw^)PITU@wHXUQjcYR7dcay{7DO0T!S-tMy1Gqzw z_*!>QwD1($F1=RL8hS3+MKXWM)v3gcrg|{sp*kIYNSim3r_sVoQ>49smO0eKgp@&3 zgA6FrLLU+WZ1i=_B*-qn{;*>NCW;5OhFL~-rNJSjXt3q=HQ5#QBZ6T^Le*>u%o*rY z0N(7g0xd+3Lc&D9BBH3bP0QKn^8!Uf$0I3exIq+13>1Sbqvb*8iW&8ASWGc)WCHF3RPDM4;#vp^4|T!{F*PqYao zT@5IG)tjZ3*fDwwmYzF^_QKoJ*t9m1H*~3kso~H{Kum|+{qD_9WQ)&&=vSh82*T&G zVKVhquE`Oh<-K(&w{N!FdGd{vO=Meut_Ss9@=ZW9y-G{c4TKGtZeMl>>lNw8 z;YS#oLOaM?Y2r)C14Icg>|ENDV*D+DxHU{;08xXH#uPtaMZjU#rtUT*){Hj{C-f+P zEY|GTt33&}yf02D`avA=Y`_IY9$f3`^Yu$`eVX-Ls96I{v>Y7e7Bhf*Kmv;5Ty`&8 z^O_^s;m4~#-zxjw5a1;nrC%zd#vS&Eck~3TcF_qMrT&mH@lc9Jk7!t9j}tTBhf$r- zE9?XyjgNcr{jV~K%)`HP6%q)@3F)6oWAgt{CdvQ5M4E*0-_=s3>bni)+krHE7jT6oi)I>Z`8So^!K+GX2xjmfYx}Xw;#{OK8D>G?cRdY<4APl$_AAmf{B0p?jR*= zrE`E;1LnX>YiLT-HL8v9=iuRfeq7W2O$Y?H&L#PB^ITbYic}eZHACnM)Wvu$mOu;JM??lZBv^|i+4LiJL;+S z(g)$G2}aUtAc}oLwkh|YC<4gceskUa@#76}txe=yAF~Co@AzwLTmG2z^Q5F>ISroN0e7(?f2CkxyhC+sl|)upz9F+k)cL z0NJauLUHOt8hwT~oRw*}or~v^#@q)+ z{XR4a#OWjs+{M|3yedF-14iMHp^$2K&K`{!E^t)bLFrm>&g6rC1OzBM`1v*$P;lx1z$ad zP$?464XA>4g;k?TJ0fx=8RV%UNOX{cc178s-n{(TbZMqL_TcqnerfWvL1Lq&W$?Y; zY47muH9^d>q&T}0WV`+-Yu^{@xh^IL%j%og`kJad?5=d3LNECOy3Xi%HYTNY(aK8G zHNBJd5#3Q&ukE}2l;i09n&gT&2J@y^Z=*3*gMXGzOrM-|DZZ5LBvjID%1Vt^VBN9b z2wu$i?o+hQs>!ouMTlBoI^8)%!>ZxoF61p37ntloZIX2I?tM&|lj#~o_lu?!U>Rnc+Gya0DEZu&;kg=(LA8 z5eL6=v(0&2s+Rn0^^0s5l1V0@)1N=b%n$`MIAL4$E3!o5b_=jfYY$xM?)4&%5X$W5 z@_h1VJsp{M%N5s{k4ukB-%kYcJQ%}f3OQTf#5(wv?tjYxkmVEq95Zs5QZ}|%uqkOe zL#0w00bd=U%7SNbf-&#N%Iqrjv;u5Fu3{;9h!}ryo);jzoN`_{__jxbAB_KS2bDU>67-krqk{&0}y!@)__fBhK-K2qE;`(pY ziL<}Vy0?WGqr%@wwuOG5B6|nm69+WU_+z9{_lMKS<(%Q-2&V$Ww>mym!<$`NR(k#v z+Y-IPT_9%h(W#^Vgdl~mCZzFMwK-9}K`A2SbMXnwX2vj1wKRRL&o1nSRQ*8sS3ZR0 ze(7ij2LiH0_@{ix^8X_r{#!2+(zmn})HnS7@8lRLFCzuQh?=o*Y29Ag=)KYDszwhN z!frzc4VDWw>)*W0QlVKt8n@u*Qwibo=a;0kGa4G`Hla|ETYra}$95MmN56s}e7|r? z*m5*|6>5QW>p_{;&Fk~`L6u5S5+|jT#2%%<0E5nKPz#av&8h+EV4A+(!^W7(cujof z7Q2>ILYrPlojF0Uj@ibW6qYf9?BL=X=$bwX{A(Wr=ZfL$~vV zik9%5#H}<_>I0|Jg6OyX1c{JK6zRq!Hr0a+M<{sAsPEH1`VZ}aDZTii4BFdb7>t7S zQ0{O~v1}YK2f-_kWALJr?ZLIfsJ({x!FJyu|1xnr%LVz5zsgM9-|?T-IMV;SiT`cW zLN#+erA4$a>m;|)n?InS0Re~v{7fj21b#GOB*LMfeo#{W6q(X^Mz%?g=;)f}i5kB( zwWyjz&Q%mN3M+H4gjCha$amb*GyumL_+)x2EHuPSKC65qk9QM7NJ#!2;54Ikx9)^Q5)P%iU$|K zK7~O68B1twSy(X}*=6gYMD;vgXxlNgMwCje^z&9^9Zd2kGof-iWPk)xwD717rp6*x#LHS_3I8D!XaU72+lqnaDiW*bWhX7` za>50dE`!?ny)F#{Z@y)4H?_1cC43zMbS4TU_CxwE3{(UID<}~w-0qa{h8CH!jv-)k zZVPB4e=ke(s#14;qoyv)Y(dQ7Gj9;sUHUbTu!#q$;20YH#oyPKz#AQ*s?LHna7knh zj-4z=uwU3Wm$&ZRuS-pOm_)h=g$?^QiNA!|jHWmoRJOF@%ws1o$IuD2?^2YGhpPi~ zcwRf_VRW*TOVltTWATK7(UjRS!2lMG9lUSoPPk+;r0Ss&49?s%;7j9@*wb4xyf9H6 zq|~A@fn9T0t>xeX7S}%q!vGK6EGJx6hEddjwK0^xrqjU5%Rx$L-X7P~?`uW_onCvp z#*@^rQ=oqp7!SgqWfosoR987AxQhrG_N7^wLO^sOGVo?3n+rFbFgj;GBnbFcWbSzW zq~a?)jeanr+z<*I^ltqiujjx!l;B*EW`1S_b4QmphCwDnLaZD#&Q)lbInn8uVMZr6u{HVwpevIYKDY4cQP=w z9!ET$!EoVR(F}Q%gSR0gGMDWN)e~yJeP0Dn#`SW5*p?`XX@}auc zX`j*6i14j7$^bULzSuFMN1W3`W0)d?%Cvii5mN~I24|g|87X0!x_Ry9j=zFuqG&D> zWhkV3WO|B)z2D@6S*$A$kA@NUKQndB%T>x|!oGBOf#KAbw`M3d z`ra&f@rJ(B*X#zhVW+1EFz;^hc`38ZnUphg(ZqN!hBSpcEWY(}6+5oUDw(mQR!Kb@ z-s0oVlK=x*3^lj799el@0JaGXOIAS;?6qm}0VlAO+|vLP-z30qddIN(mml-5a)9Cy zG!2is>(e*I25qeHf=x!gg=DP1U7FIA<1C`dc45|%s5A-+js)`~jj>E4UQt>K3B&FH zJz3c0XQ{f4L{j4xdE~9M$sInsKO^|7?XA?lDm?VdWN>@h{bGfviFcISU2a~NI{Ctg zbcv`63~QZ=Ee`Sa6OPp3xK3oDMSy4Yy$g?1f<6vw(tUZL=bgnn|GlZnNKhhB13AQiM=;=;=~?(0!Obf-?(B;IQ85N6#}WNeYs}UPor%3ihF2>Q^+-pe>u+p6!-C|;T zUoG%4HFw#Jbam}nOgR{JsVAChupkbxR1|owexu+>F(Ugi)iAVHPR&#iL$AU!&QM@L zBVVZ8RXwe9X{SS?#%4kNf~2{XR{?Gz3zYTf52a>0j{%2YA7b*dv*02&2geyCTx~n- z>+SzqT|w&QY%HQnlAI%e$Hd0^t87cNw9^qdJJ;%hF}WgwQ=Iq^MXADkKl^d zM&d5==6@D2;>T<=0+;K0hP0(O`e`c$mwMd@ykBV1mhL#i-WS#*x;S^i8hUJpB74=v}452lAkIl^9*n_K>U z+{=_TZ1R5BCML=7_4Z2g*PnuJADu59*zDu8&ePkdsq8f2Wp9fr5#qEH`uXsBtnMDb zfL(%)XPS;z(w2AB>5E&@9)|cQ(W!2pHvK+Phu@=XWa*WYu@iG8vGe*F{NH=rg3}`= zH%=-wk|P3NUXHlid&HU`yAHZ?_4U9565*caaCIR!2NU0*BZ!v^n-zy^$Vz5$7~kAg zxW95EcN_l4u=thadTcQ8;fsaF_z@TS{IHrd z{&gQpR;jk@9AGmrzpmSL=Py*zITn&Xdr2dvrTO58JpJYAk9zgK1)~HhQ1lSBp z8OP!PktmkI0EM2xX6A&OOO+!UDeB$QpaYvNYvsmCM}@q(K}^;p2GWEFSquXdtvv(O zZ~{q=>mPt4Aj9GyaAwvIknaosGxu^-8QUkhDhuXp&CXe!Rz1@PCS&_h>~V_x3Kvlf zD5CWUqFS(gPJH?%&bkZG_Xx5bU1tcR<0oTh>tpUNgoSdNlKl+%OAGb50q(`kGPNhA zEQ7rZO*d%-9np;Bd4F#CF*k%EJGLRai2iz-h$i}JX0O++Q6Ntrejpd*okdVrxF1&& zz&HIBK)<-K{@^1(?pOmGy`i%s?OaU&Va2HfjeY0AV&;rsA@*=X-OvGVNd0j!`H_;0 zrq^YQTYaYbT=_;?D3J?Sa25_C?23=H6XGLDWVy|TQGIwoO5NX1e#sgY@}P8UKC zf3ajyK}<6+@}Nx5I%b{1X8{I6q zOf@(%rgjyPsYj- z@V6w^j5DT;v%=IxT#3u%N7d(NL}F+53oy!s4H?-N+_6Dd`bX{tu zCnv5)%~MRTPe8532VZ~2!K7qSO?_f?wRb0g$~0V*tPwz`+=OK!ix8c?FW}OK6J6;! zxI>LPS13rRJYhs_Fl-pc%mH7a4K6BnYaG7VXHT10Z2}iGXfstUAj7tv z6)9|Qr$wWq$E0)6>V?H6HkV6?iJ_CYabo+d;7n?-)^C9lzj2WAT_&o8qyxPa|MG#G6vFW;Ley3tvUZ z%d$ws9#eRUS!XCn9(=@e#vG62_SCpD3A9-~y@%E_eLd&J1ncB;U$APXC*645alC3X z#!E6+bVhMvKAEw2TR7cy+*gvb87#m+Y?^Ejq1|fyCIj*8*(YxXImrNDvM~ z){Aa(_H`(@MAn!sY!cJ_bTSS|7uCiUU_ZkSyo!;x3=Hslj=)g+OoUGF0dYSwLN76k z4AbFuc@tD|ynAjDoJId7}?Rp?*Xo89^rIb~y+D`KbjeaceCU(o< zCD3$^ywJ%pp&5fEO!YV1wD#-JWr^NpUUSP}l^he6df1Nnc%{hH1Wz``=F8G6z9k40 zd)i|S3$qd;u2^cuc}sU!Tv4{2=n{N;qA#wi&9CEm`0~*|o}nZX?F2~s1XgzUeEDpG zhTW+X%?I$kV*D$(Q<`CD!v8kRx&GD7{cbI1?smq}# zpnlN-QWPPK6i{jFTAUO_kv4iFHEJ}3X$2P`m~rVCxH8R)n)ANMbT$ZPK_mH6UeY6O zH`dn-dWEf+I-f1KU#FPvFNfb{fQVCOX9p1LKmF9T+!X9B#~(9A=AG`26zx`-t``yk zBfPdrYKZgU48cls>UyGojYF z+OX~C=71_?Dy+Z!alkP(JOe<{_R*xg1M6XMdkLx;`pE}U8G^(*`{D_T{RWHEBY^t}oBs{)01alK zU|b`e><4%5%{dzk0~m;ZIB_4MUO+PjZT+%0G1Gy=5kO-b#*-OhX8CwgR|(qXlQi)V3De(@t#nIm1NLN0}=^%46}Rt@iNP}*BKZ_3CqpHdTP2RUqAGqUJm`z6kiTw;Mp+)T}vIZyJ3N>0&M=`o3frsPy~6lY}5s z!#)kDZMJyII}!6Cq6`2~@=%KVafe4TO?by8z4SwbSAaq|N7SoA)C-nUM0?8!3A<{( z6K>7rRbS@1t=upThnd@vR%WV>*qsP#vuARsXt0?@rrLPvcj}|Yymjfwh1|d5x!jKd z%kghK5B+02bNvtES;)rP#N5=$UfZHiXM!-n&`{M_sSSb_Irdu^?VH&e-*CjcH19<|yV2L6E6)FLHij9iR7Uzn;FYRUD z#dyUkPp`Y!Q>FE2^f-gvp1q#8uHU`hpY1Q!P2qo}gwf;3gBHE_UdWraq*4B1udHsYXsm3l&R7PTgZ1~4{!Iu4@>(RS()0wnhjU-Zm9 zOcJyjbsudSj1a?uFOTnqjtG^X1DV5NdcKP3hBe-GNr_8s5~!g;E9M2=4ORnMGP8_@yOX5@zwp!kpRuA zyUh{5%(2r;-xPjx_pM?`*tecB58Q>VY!Zk*LSMqyqB~z(2^k9H<2P;$vj+o=BE2*az^N$f0&-%@o;!h>;!kS_LoSn< z>4(pNk9b-yrox;dkV=~_`L!nY3`w0@c4w^|ezhEcebI3>vvmNe6=Q9BdOm!>Ml zV`DEgOlqygp$_Tau6k8X94zQJTl=ubQpSK;C~P!~-R{>LEPcy!Ny+Y9@Lx?AzWPG3C@yUx& zVP7l2+6clrQ?q$=m9_@mP@`n8i-4mnV8Y20Pg-^}7f~5;*ovvntv?7MbK+j#9 zc6r($O-%o&QM3};2n>*|)UR!hR+QBuW1xe(J4NOMS#EFXSX;-2l&r5F28ZybVIYuE zcG$OHWoK$ZflL!gkMvjnLh-G=kY{>X!RZ*BJyP+<2dQ(*ta9_$D3P%tkBM|l!&_R^ z;~ZrSOXjqVl+MqFhLuY;;~m`_aB>_KzD_gaU-tAJH)`Xy13530m~WJib4LM~=CNgesYPoVd9^9`4E2#9ZBKRZA=!nOmD6y!WcA+Eh(A`(J)H5&FXz#1_|_jxZ(48o zPhNO{FAe?K(m}f~N7DFx^n79|N|;FKRQ>aLG{(MJc#+?X@!Zm_V==T6xPI=%S(J%_ zBDQmFC3JR`DNFH#wq`O?cC^`tNvS_JOZ*e;edJWwBD?6sN}p|R6(K`O*_}$6p`@|2 zR|me%o_jX2OE(ESje&^eIxb=BM&2S~NwxCvH&Q(@b={=LoU`$2cG`X=Pkmm7ar$ZR z$bl<)deSrn{YCu`WOu^^&`N}M9R>TU_^@QDC}-x46x>lrW7HyHGU9Bak8<=fB*PuM z9i&xjgcdt_HraGLnJ6r9ekr9p zNHNDsQuCkW-qa&l!?#T!-RJ!)0lP!ouF2pm2_?lt`v8w(PS@ho%nFcel&O|cz_Q{s z!VLrjpON+nFIgs;+js14Z;<-Bi)obbL+#J(9Y9(xE6%07`H{N$+EduPpb!RYe60HR zNn;92$2dlm*e7;5@aO3#KESy4U|2m6;}jess1KZb8^;r{bHIIUYB;IBK)+hxFc|Jf zl!R6#xyW1{%(K3w{w!Vub;Ct(fDU+T&7BK_PcWhfo;n;WCLB|BE>K|5g(a#2u?7MP z9FLLpdqy+U4=J5lq!pU>3W!V?+WU&aC2|I$X4hY2>>83*+K_RAr-dKC%5Nwm(m8Ht zbS5&{4PfjKd+qOY8exv_9)YNm4^^)FKSGnt-)r^g=~lu??}Q1V-feeH?&m~CrBd#Ie!yl} zB_B|GOg|5!L1flnCMgCNE|^nJp7ce6vg-(Fya-C`p7&FT1Cea`*43<^YvNuXi7?(k?80k5&dy_%42}NNy zC~iqF9Ze6Pw-9cRU`GfSPA?cuF`s8BxM!d!p>3|Me(Fi^ArZu)0fiDH`eYuEHzQP9 ziXR&z#t%C>l`!lI*@TePtvWhD8o6v=k2 z3sIjb>TA_g!#xs3TI9?JWX4EW$~Ho+#&})%PY3)ZG1?L`UB%sCxf4xqLhK=|y07@b@GRsd)-L!+9Hz$njIjP3)A-+ZD4boH{xCs0r*zWdjmV_2qmyE@dWM9_ zU5^VCJH>~ob9-lWpA6Fv*|nRq%otosrDn|9COj$wR18`hHimc0?MSQ)!sH>z#b#^c zpu?>QwF%*%Vdz!UJntDRh|wDp`*WqUYmGTKV1H<>$myLk3~fy+TDkCZ)NJ_{gLwsi zoWhrxHv9N{8%!ugYyBMeG+dqJn|lUM=C*HBf6*>I_}dU(tpFgFgZ%`5G?@4^8wVxB zz`Po%0&rXX32gR zVii@l{*lHLZFh~9_Pv-e1xT?CM%%xoi5!BG_wFWR(2`ai0l0ZF7NBrK+FQ71Mr`Gb zuv6aAnylWUD!54~{5?m&OGyT;3uWgd|_yx^u^ZveOinE^~eTS-p+bO+gC+8^+f!dbS493I2cy8}3kGk?^~V3QnB5P30wE6MwE ze%Mr9P#9yyJSz9$fl0ATpa(O8|AKS8kMl$sS{KJlk5@9cizWu&JMqRj_iJ=+W+YiR z|5`>7f0w8nL?oIdp3?`XYPKsIrc|r~fj-|nXR3JRP1@;>H^SPgx8JT{9-1IB&yaY( zMW2j+&w5l>OHvQxQGo~Pe!d(QE2=zW(+C{q>ZpHzDHx7_V!9KK2oQ-747$lnnXVti z1etUMh|fjV-;fi_9h@<*i4#UEnpA&CwPtSWJ^`2erv13ZH{!6>lHPfpj;#0?_xbTJ zPSm|=L0th01f+oVPZ|gF|BMs;x1O08`(MWcgT8AUD;qV=JGYz){Y16g{ZopFSVB`8 zcFLsJONbd`+0Z;`RQ+J^dxDXtBf=CmS~zdKUZ+zhQkR>LF@W0D#tr`Hm*Z|)xGW>^ z&K?PnaA^=|tQ~HmEl+hBC$5C_>12qc>0bnGJJ9azCLT3de>hLbGvJKRT}s}+^f6S7#2r}j2yZ&bgxVj;*C`z%X4U+Mvy3W5~&5<=M6 zHLEB7Q(<_TIPewNgh2|I73t0SyXnw{cMIAx=vG7cr^QWG%m?NCZQ}`}S))&-b2j0% z=%@91H8f}8hpL%o6<&FcZh;hRZiIkQNZno42oeG*ha6AF4)CqGpIB%(6dp0%=Nn(v z4%FT#s2q~q_epVaa(SKxSw1B=ID0n3a|scQ67ydnR=n{BsRudfP}5MPP-XkSVCJ&E zOb+_nmsI$Vr^fy#)K~s*^Ov!ssJW%1@&Bg2nJU_Cb`OchgFcPNXpIZ|CMDS7p{)^U_0)Hv(Oo8q9{tnrS=wS(u%C^5R%wV=Y#`O(SdzXDc1c=cDAd*d`Xxa`X-@`<)8`B@)sLRG` z6Ywcp*f0J4sGjAUtIW}xJbSt|(CZNiENu zOd`GdndBHyR=z0+!373iz&reu3B4>W0%PqUeV8Q`G#l9x3IOKCPu~zkkcBysl(SZ@ zC>zDfV4Zyy@F-Fl>xyrV>EZN^xpaGyY*W)fIthuivf1mM)t1h$LyI(E(@a`ieihlC znq;WHMpX=JP$*+6f6VBZETW`Q!S(J+NI+gJ@(kK&k}7MI&e$=}b&eNl?ioT{xmF^P z>@qEP;!BWeNtmMFvdyY11j9x<%#6evaQczb(i?L*bx@Z+&Y^?J&S?(CPCy&+PdT^GdYC*dZ3b(1pa{I*`~FK*W@`|!YL1-DOUA}znzsp&h4wjI0L zZL~fRcU>HlC7^y^5y-hwT(O#$-0ZdZ%*{0UdF|fabOUrBP%lMV9D{VSRe6J3R2Bkl z&?~5+Be0Pi7Qf!WKac@Xdq{TWAG0s-E8VM0c6NoSA=mic58@zo*e&TGbyHo+f#QOl zl4gampL!2B^xx;LIVnA?$h3KdSqxXc_{4(yReIx3CExaxqo989=wardo?&yk$h}3- z<|QFdTTAtWBf_My1uR<`V>_3Xz`@zk*_^hVdAfvLoq3@{SR2o++}) zzy~b{Vgxo4FZKe_5w<(AyD1AM+}Ox#fNXp1m%;wDIR8?4sk?^+%10a~M~^~)Zn~&2 z<)huw#!%WGi5I#ULx76(44V*m-1?_vVETp$d+VgNefpr=piC6WIMA$3ZZ>fyXAnaV zhd-7Eqj>r#k4y`{CL%`S#}6T&U^4wZ#h`3M3p;xbEK)WE02jNn?V7fw>#pS7X=x-zO&!aQ z$P;0f{2+AJ#t>QF{G)T3!?=?D`bb!Vg*@E5B^!PWPRICJN{zjY#~ozZ`-%qxXfLH| zn0qBsDYP!aZ(7n%8B(vpYdrYz z%Sw`XLDrVGKK^6{DSp3RfunHC2tOFARNmjj=w@E8s=L`_l~*;o4Gwgku|>D_^1i}* zG|iq_N*Az;6o0oghgGZSNB@Ee5zl!Y9Mav?Ji}4qPv&gzD+?|eM$0gy8f~eLGm5wS z#iTs+X^UzYxm`|k;Dg|QMv7)QN)nOg0-4%EX(UEd255fxudZFkIlePFFd(2MsDH}N z|EX) rUZ*u}>FH@$$9qm7V_m6enA-`_+0KU!s?@+4qg1@W8r?}?Y>r+X`Nfw;LBe@X6M^$_PRPXmq?Fg#J^wUfo`pFz<6SKA zD*n~12Oi}&&FN*==jD~nbLH3T^Yt;%(5^!RLj<<9`a0F;4vbKbu8k)H?uF%YsJva>-wM=|noRptWk z57SY>_1Y$!`Xrb7Xd%&N{CAPZe0ov96WO&b1o2x*3q5S1WDA-9pq)}%)>l*4SKJck z-YE+iP&s+xWy-%rw89W!uUVADo~LLFs#5x_v{|L9cveqGXrQ@X#EMoGZ`KdOyZ`Ki zRTZl}D4IfIC#>uGAfN38Y3ijS!>*8W_?*&qU7|e5;vqo8HL$-kRh3B_`yatC#IjXBKS%S^?WixNQjlCa@{r+g{XFT$~s8kYi1 zWjCj<>4swDC)BLy;k%wNbG{4na>fA{q#vtSpr(+PRid7yJlpwOBX8Y87YfuBW#9H9 z`7=qWLd^SSqVi^3e;mg-4W>@SCiPccYq2gWs9J%wqDS~uNuXp~HuM?)ex)6X4)`4N zoQRq)9G3M)2|i*_RZ(#;q1-B$TS5?Kk^<7xsb9QS0aZy?gld$EfWV2vKJeyB0U10w zPH?|XQK){@ub{vB;}bdin_cqtS+LwG`?)yxWK={8`- zfL_fZSx10UaPLpFl~xh>xANrnUD?ho!N7kIXR{wb1V`GlQR|*dMU5&Ai`;0 zhH=W`pTrk0kShHP#e#MC=S8$zQmP3aD17>n6lR1Kh86ijT_U#FK-fYHFrIg8rl`Tv ztWStry{-f77^123G)E2?HG=r?hB`yBWR!{iOI3=G_)2yY7v%t!X3JH=;owfWiLGGJ z$IpKf;XB54cND)}Ym&b8cmH~C%KEQ*ivOxw3Wj#3dKUjLbt_)d8kqrMc=*I>jto{D z>R#A2;i%|$Gl-Cw&0J* zVWz#Wh;w|tZclI@v<3-Tf*SOYP(B`Bfa`DlUO~P?VsDz0fK14jQGEJQ(+$*k@g&^< zq&g5d-&aVULNBTK5k8E}n%{^NUHgzK)sPmho@oK{%TPjjs(J5KhsKLmc!)M_L?Sn?-QH=XG+M#Cx44Q90JxKlvHNv{7Cp<(VU|SI7_z!Tt1E z#vm!`Me#xz?-exrDJ-FZui8t6n-&;%dKS@`WDJ(LQl$SH;b`@Uaw=TxA4kZu12yTxW*jH|Uq)-UbM`RS%GgsIu>?-vtwJ%N!468rFlfTB(lbUI)`*Hg%Tg+YHFR^)RJWO6j=IS5Plen%| zt|1?DUKZ?@=avVGo}{X$z5dzw$PTBBQG7Q&^560JuVazs|1%c_{*l*h%`l*BXur7Fdq!1{iDGD5Yi)lBb!%gYIUnFsqSYK}NAa zZ@v@PmQKVzhPIvi4W8Azkn<+LMBLO5f=t?G-O1&s$n@&NI~H$oId^OkE#-J;$ps9A z`f1!&JlevgYJ^t)+m~Z^qeI$ zm4=|zgvE?tG@)J;1%y3G986x^V)aWIa2B_yC9G;L*g)blmTW*OV;<&RoiU5Hnjzuu z)P>mw&0eY$>_CxW{Dr1#rD++)-Z0W7MO|)_eXXvce%qC9EwDjVQ;XpU(zq(C4OyR7 zQj&5EJ#BaFq^$4^JH_ssZ#JQ@Gag<`3`Jv>>P{Rf+hGgbkqegE4FX~AkC{k1E?=}; zM6udU3gZaEHV!P&!)wNzt2)X2q1%F)Y2iGf*b-O4g@yK88V$Ltf95@#^L)We&Ndl} zit*~P>Za*}^Mp`cXJkV`RX`ao+w407YiFL_mv;laNwBcg3X|skPS_`yp8QmXW^^XhloibDM*4U|=Z?UA^%G4sY zQTGa{+geZmitbZs-HaT0=5M;TD4<@32en#>lYSg-H;{y}|Kfq#ib zKD5vJ>j>OU{~lL>ujhPE>JL@69NhJd$GdxkM7eK!HN8s&sc93pqYt33L|p_k3O{$n zf9Kg;02!K5l`NqL!*q{CtCvGcH^A+du_~T9l)H#N7$|eTHWZUPS4BTsIctwqds`;v zrIWs0=1~4MV@Z`D@fy^Yw2-bAQT7e#>E;L2DBU%J;UA0CKi+|&14g9Vav#7S79kJl zv<0J1OuFvSN@)uFjtJ4UnPQ)y{}_F_O}*gse$xTe{_Qix@h?h)jh(ge_e*7IXh)~# zWJkxZEdLKOfV82du&}H=K>9zKJ_)Px$o$`gKHmTf={{Bg5Kw26WQdTG7Q%F0fj>mG zP;@1!20p%0L0CXx(RBXd1CLO&W8ui|wp-CM4Aq)!ft-?K< z8Dpt9RIW0)VsA|H728~`#ylR)epfUFwX!!K`t2~iW_Jn};Rp=bi~V+K9K36oR!qOw zIvE-5yKcvND$~!2gn2f_vpBF+W z!eWZty)sG4s7cR*bk>zJ2M5QXxU$-$n;$lMUXNevIzAOHHz;fWswTRn=4;2943h@Y z&|;h5UaDsdKEuAvH)-5)v zba*XWz3q^_!x9QV97L}YH}9|CP3H||B4wB6p-~EcJ^?&5>6 z7|)_k$4}yc?GkPx|Ludo731o>(7GqB{;j!>Qo4^^N?9poUcA(>6rp?@w18LHss7fG z=C%P^`JoP8FqbYP(? zjZ0wTz=%dD%6N}($dwiGPn>Z)VUY_f>Yuc9ngM+)r=XM_BhCRPDddVl$ zQ_c4)VR}*A$@wm{k|*I)Gsu3INNm+1ODvWswiFS(Y1y3E@`PV=#Q`iGgWw5zxqd1Q zbLfr0SWI+Jrt@yLYuP!%Wiw=^km9aDtV&|?mi*&Fa^loNxN(0G21yQ1T!% zL*wGYgeb*H$LPhaLpezkL+9eCgfLGJGdI50tpAaEV_N!LDBr2~_}$z7>sOimf0}wC z-}Z(k|B-o(30ls`!WhF}>tvJb1>(rc5TL#24Y&y_VR^TCg{l=rpc)WsWoKmV1<pI&R!r_?;v4UdB#Gm*DjO6yU!EQ#*zm^&`%lrU+!6{tFA_eeC}Vpo!vhscIR_>P&`;#-ni^p44;ow-b>8dVPWj$h;OY410CMc^=@7qKs! z*3aAJs$EO%`>)`B8E|{gG|HM6N|*POgt!&|GGN=xx>BoID%m1<-XPa(kc}}F9S$_1 zb}-e_qpbQU$*(15sGlUvAVL}8Wn4pV7*N%c*+mD75udzng*384!qgw>6X96* zu=OG1MH%RYLC%%j7#hy0t|Y1{o*oe^ZN$-7U&$otF8x8@y}X9Z*g-GdYcbT|q~T#L^T>p%BYB|(aKC8#VYDMT_G$#6_0eziGh8q^KIw5MS1T z*mtdIy%4gxg)~*cDFntXtd`I8+UFYy-Y8D!C~h!F!2E@c%cjnt&LUx@pw8AdU1E6; zng14vN56+90*{rcD6vJ|#vFX|B@Wfq7gENu>uejaoQ39+1c2fmhKH28=?BVK$Mi*S z$wX!EyoM<;LvrzFOXrbF2-?|X2(d%(i@E`8Thic~Md=B)@`Kf|t8lHmAJHRP|M}LF5>y-lo!WDbspRD3(n|`Cu@DvRf6A%N1`F+lEtPl+&vMEs z&58;khw+k?$yH{TXxV-K6L+r`j|Y2vXZZ2I<=V0Rk2BoS-ta#XJTXohfXx4$;PX}* z?KFOh3sfOc3r-AH3;96-x*^g~WC;oW;Ea~Tj0QR*4jQG|Bjv%7q2PQz_(SPep*N|k zEN16}{Zn_|S+3efUR>Wg98d6V-phm-{g&l$psRZq#sr>A(YmXby0gqOlN=WWh=ZHj z+a}Jpb-8B`6%elcT#DX5DSSKnmoMBnE`WCOJai^iLU@pVfwL!NE@eg>?t;!-4{`U3 zQF`=|>*K(R_6Kfl!nSA7SiNZ{6j@^Kvse)0UxSs3uk=wkr)gdo+|_*WcrW-kReapFHJc+yon$@-lzBvMP=mg~oGTuqb6}IHR4JOm#*S z_xv2{g`ZciL6SlNT$=W%Vq|Zl79_2yDkyu5Kd2uTVyTUA-rd)X@XxUA%d;v2XQs?(SjYD9_+MJg4dGvrw0UGuHt z>mteozdS0j3LGNMi>%-O>3z5m=5_iH7gPT4!1~wE2G9R>P<^8{5`e5AKuDNGP+CYp zT=73cOMYDfm;r(3#PXtTP5tU&DVW#gr%E_c9)x4LtVyNGiF=cX^s3~j74!#O_W(Ge z$2IUfg{{*%d=1E9hPWLgQ}Fw{mnU#ZP61)B&C-Kb{TC;cK{8jD2P3X&y5~VR#buj7 zsz=F$*-0oy{qw&j7tC1KeQP19EUG zrl8xd)%Kb|W9xm1_wRvpEE5HK9N!j!24FFoHjQTPoniV_z@B zpPL!tC?u1BAA05qo|nG+EA*Yq5RyiILdba)J1GRaR%Vz{dG~ISy-M$Ua8eN>Z82Pp zUJLyG&tma&F4^4j`+sftx7*2oH8A==k@)}fzy2o-m*12@mP7a~(r9n0s`~}{UMgRM zp&my|$Uyc<+F~+SP&gDv7EoS4jtF-SsQ)G1@ubY$<*TBdE+)nN`hz!onqW%J<;Uq@ zMk)u>UFOxq#8vl}_fOS+9%RhEGW_5v-LFa67ow2GDrAajOp+UIqCQ!&C=Bu`w=X5p zpvFtd=JuNnp(I`WkXjoc#0w6stKYB0emj)B_?HdjpcSo|k;avkq5&HwI6s2;xr$^Q&<&N<% zxo|MiY_RtAGjb$MuzDD3pkpB3Uu3K$IxGW+-9bXdXUfH|3Hy+ahtvK-(lnUZ_5GQ|D+uJ zXS}GmyC@E#er29hV_Ok`$PfMr4NJ2?0{YoU+`$U3OF9}v0z!Z6R_`9Kxq|M@Mo8#a zqU+h9q_MuX1huf#@J#dzyM&_YUe8=-X{o7cvFXwBWS;NU(~@tF=}BfqIwURSYCQAh z<1i!D-e@X=>8my=m9i5?a__`9_4A*b~(Uyp!|G*#wU#r#oLmW}*X z7ZwB*%BIHEWp#3PBB^Ov*o8OHbe5>iW8{iRdSV3~sP*Cbqz3;Ox)ZnV=BCkhJ;h#* z-jKpQqKPRC$OTJtSQm5i^g&hDx6IZES>%p%dWBmSY)@(5HY4kBj+l5nleHOy67zfI z<#gbA2oAfP-gasFFqBHulFG+MFb{03k4Z;6p3z3vv*rcyeo|7Ja&uEm>LYWDwK+~F z&aWip`1;@mp_t+l0KSgo+)Tcf5{Rhg#hieL-EzIAz*afph9A_3R|7c`0z1FW5GNNh zRyK#$FcP0Gi_!h zXoiaz&dVqpnwD|(4HVo)N;J5$*_b8K8pnHwIy)K})eUXF6Ns!U>$02WrP}E!B{xMt z6=4Fpv_$9fcFbi3m6g7^`N|s3N{vh}mCI^M-gg6LCVK=l+--b2PpKLWd+uzkD(!%r zBsGVaJ2q8;uC8SDTr&#F8x>Y+PTc~w-1cH+g*4AhMIlh@6A5IcyzQ&dGYQm0MNz9; z?xTU4pl(zCtXZ7{13l0K2YRs71NRdc3Qe7!fEO1EO^v?521=dgTQb=;FqpxLh35NA z)O!Zy6tzbUg0EaNkVZ_SE7dCxJp{sxqNqNDP$SyQ2>loW$o4xx+bGusMQgWV(%Vr4 z7CXLDsXzeUl4h+1o}h>`UGXA&R!HWQGmee{Ne?Qk2kJy z3s3P}vTYBFKl2**lLdtles>QF4~5u@2@(Qz3jM)N(fmBr!9=8d4RJ}xFRT{dvMd*x zM%=wl<7i)jG4R5WPVp=bQKHzcpQG`_!b>u4uaZAf5;`N}zD#(`7Ohd`Eo|NHT8;a( z?`UYDKj~9QKAZw$;AmBPk$&M*mu3obQbCcg%S`!&EXRYWll{J=QC>CNiL|}`hTYb- zFFrtWC|koZ8V}A?1TJbXoE9dMWhg=Rnlxj(^BC1}Wx8IQ$(M2vS$G2(15M8}PF9v# zt_LENj@kvQcvX=FZ#hqse~b*NGbGMP#c)sU?}Y%vyggKxU$tEuV2B2jc1Rd`%@IdO z;o8x|-|z8qWz0Ick zrD4$gE6@_p8ET!>3a|sV+Q|@@&fSEf7`>Nzj^dYv46#;0c=4(1dyaN$Wboirh!DGJ z0%g0pnJFOP6i;~{#_{Ar5$FZTx}^b=UoqC;30dXd>uN1#sL9l7Ej-Xgo19dLipscy z_$#M(vc(#~CDlh6+AbQ}A$RDHj*)C|+1_Iyc}R?o(QLpwG!fIQavDW4>pZtvk??{5%R(67_BC)RbyvY<<~ZmesoZ{wis4Zrg2nNy*J< zFw}7E(AGMq{Mp+K`_jPE$+@N6%K6mQgD7TnmD0*Na3?9U?V5DRB_Q|`&2l(d?vTI> z{}xj@#}Ps;vln_{SbV)8ULXOTf!fcW_yyw~WLtET6AzV9XdD&Q!3yD=>WN{DJ#Nwe zY^1%j6U#P!tAjD*tg<#pv%on#)poejM@+G^=T_Szrw7;>uG82a8ILNy4hz81>c%OM zoL3Jg%Qr+=*QY&>`L$7IQbuhyV1tkJ@FesICJYcf=%%>6eAI!{$>D1kdS&EyKC{8fvTjP% zo8W7Szm-N<<+3>VcsNiy&RC-4uBY;dInNTh#a!ly9?Q5TeAgNJ97hv5#&rJp7QQz(_4Pu3O?F6o5A(H59{v4s_7(p| zXMd&B^Yu?4egecd^zc0n*GKwy4c5OpDDdBbxRc#KM&kbgsV-DqJr=$pRTo?OIoUfz zI?WU2Z<9Kl(I5p{*kA-wP4QkEh;##SAaPbJR*W(Vv+z9S0>1{dvrw0X^^g$o5*Jj- zLMp1f5>$BZ9$-bqS0nH4&2uZH0I#*Lw9RIwyTi!|uI}!agTiclcckBNuyy{Bmq^}9 z%F-`$Yhg&%h243~<#l=N<9gV=9|X88K#qv6kgSypo7-s2 z&2ETv#A9-x?8%Yl$k?V(K!8yf4T&L}Qd3ifu!Zba0mHAnm0ERinM`+d9PPoxpLQAQZPWJd$)%}UZ zO?VMgr!N#wQ%Yz)jiH+Xv-!9A6q~F%mppYEcW&2!3UbA@%JLdRz)a`Od&g-G9YRTY z?6GJ-TrT~D54dNX4VB0mgWpW+0WnNOpNTC%+*Me5XAUc~#&z`1v?-X3D88TE8T28V z^2=C9R&M{pfGY6bz0ldnKu*Ta{QU$7u<>zf!VoD(KX`Bv8Rkg1RsxfONfWLyqMLB4 zf*K`LVykam8ouuJ+oh-__>j@wpe{-sHY6mVbU0q#M+omk# zpYiHP8PfUTCK4fz&<+79Ddk#u3MV+gP9$c{zv$_a>zS)pe0-PMRLlrKEgh_LeGN!X zv|D|ZjjUsT7O$2w$Cy2q!4{-;Vgb|EqtnkUorA(QFu6;@G_bipfN`dDZebjoJkrw7 zK#DtQij8o*ASu`ISG2K%DNSN<*pwRZySceF3FDPp?gxzcZkcja8;8v3=JE@0Fz!9L z1PBeem(AFK(?VYy;gT^cntXrPnduxO8>LM^@>a<_{V*(tGwe&PF*l7|zIBCtkY}8> zQahGV9-Yq~1zb*SH{86Zu24l3wfk+{U@6|s&b5RKn3|_}Dh|nxwjRy~81O{{vkknq z3V&@rkK6evkE#ZxvoLQ6w6N!EMk2?CbXhf0Pzq z(r?c!Iwo^_effiD0DC8nA?X+ekG!(m(B*oT=+I@`WQwI8Q?+K#$bkdwB;_R;CFdmS zB;q8F7X01#yw8VygC`a8re=z{^IB1B@xk#dsi+yer0nbU`QW%^Y=mvG7F`&SgWsK4~=_By($X|N4zfvb@?k5kyNH>i#O^}h%^FPg#HPAuEGt~YJZqb%O~ zZKdn-KJ=N$T#2$n#QCs~tEMk^2sop}^#HL%1L%eWSBS+50`*v@0R2DlouIJ#nKI&F zZXrPnRCb+n%ZlKQNzko@$*oHj>}K;L&GZzCR0&vz%fn;s%yq27fLO&IJNA-J&GyR3 zG-}(^6^H=2CC8=ppeR%M#s#JFKX{m0rwg5!(F27|{&UgP1_G=PX8aUw%*QCM{ta2$ zf`d_ASonV~W)2MlRv#EFnu7|@XB5`rtsE<={r5e~C5ekMvtbvaX_yStJa7{#jr)7U zHK^5Ox2vHOo~KG?njQMvj^Gzk{IcR^kyu(!oR;Wp=ZHOl;Tvxi;TlJk*T>8bSnaG}urPNu4|GE?{;8>2`wv#*6t$Ea`>(fMO})6q3(&O(5##Utk?SyFCN8j_4Mr zSLco#^yrS!k8CAScRy?~AjTub9NdaMs{^0uWY6tI+;&>qk0Y}YvZP^SB)7INopPJ7 z#2@G|f=KS?)GuP)lf$-C&^#0Pm;>G!>D7R)b|2Nz(G||n0N;9_)j{KhFxT8!id>{G zGSV?h@jLhU-Tb6I#zx9(1+H%Vj81;7fF!h~Ls*SBmH2SAL3ejAifGZ$Q7^W#{GG%> zL(9cG!}&2-#y)*Fc3zVmJ6|x$F;~nD=X5eD>rqL2)$Thx zxbXv%y@VJ(0_0yY4IN;@Nr;qa=-MaPlTm>z1UqLKWqL?6LdHors=6wKfo~AubMNT(Y_Lh%fyBt=Mo- zp5vQ0z)w94GUSI@27B5GBb}6?fLQVgIf*^q+ycglg_^jqhcD@ghFV;f`Jm+1dDi0w z2IPY{FbifTlg$3HoG*#n4Yh)dC`EF4cjIHasL|!H-A&H0r(=r0#re;_+1ua;Z?XH{ zrPI3A?wSX#vqMJs3SZVIEP8HbS-IzZjw*1x_>CbnIB@bu!`*_rSr+#X(4M(izECH> zj3daZ8+*2JSC6C>1j7KTa<%}uHSI!0zgB~4?Yd?Hrv}I?)@@IPM;+Gr!lZ#<_1*lM zcXBs}o`kQBZ}q71r*6c%irnp1%5AXzLG-|gceSXf^h>tXi$24xohu?Dx-Gwp1#~2` zp!ob$s;?C6rNG_**szoPpk@S@9Ift2qsRmmH& z$ajsh0@gX;oo`cH0LOZ~(CMy>S^FLqdz3EPCg6ZUYHrx-JBN-@rkY^rg5S`!(cY0C zcAwPIqFq~Zg6ui z-=}P@k=kOW^A9uu$+zx6xD-XhtIkjcZ0<8|iPguJGE|J=z z=?cMOJrle|0oPD&VRZSG9vnRV)F&KWeohdbeJXS19;lt9_q1PGyeO;DuBe_<%QMLx zX>hmr$L3v0aCca*vCH%~>P+P<0^h>(^ z9c)+ntpVZynZ0yZzY&>T4UTNL;0!U z5r;c8Zh4ehtrUfjIjtj@Y2x9()ivC4a#~9&L+ySMq=m1sz?)9WoWn>vK;W*GLYA@c z)pOOQhPN>jY5c+P_|i9k#&kd$LHp%R^p6h`1EFRU6MMO67mILp#G$6F?hs30+rsz1 z;9OhLOYc84-w8Nx1V^^PV75i+W7r78@rB{6hY-AA`dy(#Zuc9%78A3f&E--sTJT?CgF!FFfjJ(B5YBS_u=_ZW8q9?j5qfz8Wuv z7TewW#8(N>BYZa18DBrH`iS2FtpOcW$uY~7@w!e=FuKM-7;6-0N-zV@#g!h4ao4n<)KV#Nzyn36WOWI|vKT{ZA zkjHibl)>;bHo3F!soQHu3Bx)w2A^@aF9gyDf_~OIa)jQ}^{(iXd)B2X@Cuapg!tZ~ z&@b*(d-x?16g{G)QQjyOZ*ugPp^>1b*hx-lfI zT<43TBUCmSGylWRC=r*^Lu6mMDPjjFPlSqDYoH1fNVOY2c=ZxHvi?n&#!xx$uN|fA z_@Q#04#X{NzvP1` zIm-`BDrkL0)*)zVCAIZp z0XP<@_JF@~`8Tmx{?mb73dM*ECkYe@Wp<_YSdu3K9}DbQ6+`n7xsYZ+lS;%UU1?%R zrQ!~)4Ju_!CnAn$n?+>vJXG0uiVDYaJC<_uCdFwo)n%9sDyTDWWih;He}A&XN0q8s zC>Yy^QT<6yo6KC4x-2@Z6P?`CJH?q&x^vA_?@3gpI?a2O2`0x7df2HsEKl||I$jCNQZ%sA*HArY-5J>)l&fu6Nk`a zCZUAXTih``By}|~`g=c#{kuY4PNTVL3AMsfYi&+_BSuQGVqwXw-10)(T;-x`{d3vN zV{OZo>D!DZCs$`@y!|Q5ecEpNCDZ=0<94ck8dx>J+YBS0p3jV2ptOs6UU?y8U6}@@ zxlNFA_|h>#sLw%Q2##E_yI(CkY+Yo+f%zFlX5H$XUci=k72E9Wua$^aU~T5ZBviac zkTa*|u*4%Rxvi2y|LdXHa9R^=EQ>U@N~O+vRSqk4gmpu_>9SaxmI$|gRH2+Kg=B+5 zYu|2?97a-o7)%vzYHJ3R>d+C1H8%ywj^7ZjnBwEl0ZeZGbtK0WBaPz6w)E z|59F+73)E8SVhCOe%@;2URI1iZmTg0{YP23?}rg#>YjdX+c;*9ZFvg%IgE3AV-vRsA-Vo{4fVz8C-ufJ*D zTPNp`K2Y`kqnc?TX#V{%g8B)r_u72lagpoRyGKR5I2DG{uue;XAK1FhpOfzc5B+EM zc4pX-E*-rgk95_4HKP#F%v5s_uvpU4afY2R3WQaq@>PO0(ugcCq${DIMY9n(Fvo}W zD5sWd&Oy|?{>(dS`ap+@ah-_EtIBgGkt=9#7W#fJ^Pp=uiN%qGaB7nDl5$f?xajoh z1WP(B;3!2rQlI4cBQtu;`a6={x>0Ri(c*KFFnskXKWclAxg zQ<8&+-dI8L$}wgPpcKU(E2PZGpA*ati`gk9+=EIss;yv~@;wbXw za4qKdm1r~2KJ4_6&66qF4 zX|>4f;Ycd!6HbLo9{nAqUnV8!mKX-Najd!)53gNOI!Z`N3|5J{Qpd&rHg@5_7Rs%s z%#h<$DQh2aTs}()nJ4+aQ2HDLV!^H9Ss>fFKOxOYrdKy%HOm01a4^&y8i_Br!d>>t zxIhiarjl1UY>&I$d(KYyge)kT+1-}hzdNr zjikF%>M(;B=(=}MwZ^}R6q1$&PLb{( z_BuoRu5|p_&Iotey>Sc}?%VXItdqC{VVqkII%w2SdSMZfZ}c)li%*HV5YYXGj)rdx zjZ@weR+IO2Yp!YyI60?ECWCJ?BH)T{d;z3n)TU#k5rRDWHBj}>Q<@S_EIFy=XjwYp za9+)^<>?)Ey^aoC(sY_N*$&<4W=ejfm;TMOJM*Y-a>; ztoqQc&2hzuzT&48Q**M#$S98{BV1+w&u!yjdt%A*sKd$0~6j?U=8U)&!4lczncJf@?kJ33h?S&P5Yt$L$o;7oOY~^wrGa2z$Hl>TC=o zjxI||aR;n!x~^90VJ2AK7&@m^^1*7zyWRW6#PJWeCe=2m#%Xxl2-*I|Vqa<>mS1m1 z&+t$1Ms%i=ZLx*CQ9}d(WW4CZgX^C+=AZk5IyQ#G_Kj}#>*~VlJo__(1L`Z7jh#S_ zn8x2xKi_0oAAbjSi#^zr%YD2<{G@w^LjVJF(`C?XxBc~qqWc7K_Y)*Ix+g`*M2Zl^ z2m#~>5d_+nqy8Amk5S;-QlBIrL?R-tNkN(KYxqT0N;Xe26?4M}w*`~S7QWQo7WOgz zl^x$!O*5Ey;f1JbIGy`}Z6l=F^;V|^^lDp~1-QACinrU$rd|EpzB`y}L1Lq{X_wY; z$7(U!Jy9?e=&4eED1i&ac}lxLdMy25XG#t3^27D_TZz4ymlFu^GuFp;{$u$ylCj}} zT68kU_)l-dA}M)P)V5u^qNeCa!ujGA>qTOi^v0m@v46QEeLcjXv%KN%cwLJVjUGaD7 zJ=zDg+JX<ro(kH@lK+=%SuJh?YniO=C>( zMG2qEYE+bZqL2TYpSID?*hFp+C*`W!*mjiVKDCJ0*{nMZZUsPyYZ?s&!am;j+ zR(!Y~{?{Hy_|cqQfku;4*l-yN zgb?&N03^shQ-b%}viX})+%AutGLopRI(*wul3>VWE}YqL;#{bs!mH;F;Z9-mG{0R8 zn|$pFO*-s!p&L3xqTnu6vx`dw>@POJKtjJVTfaNvwmCpw1p$+w6w_SJB5FBahJ+zr zL`!uQ+@pldaE}C-a$0oCS6B4nN5dUd<_WU|ys}L5;-}=&g zbdj3>q6X6|aa016CrIKRDSC8KT^m4&(@SmZw`*8oM+(6)fK=O4L(#nbljFfVv?eaT z2()g0W@`XqWs-2AcJ8_kz0?`xzA`j$BfCAuVW3}JPVcTggWLuc4N~P8Z`IN$@*66l z0xP8--h(!YACfjDr8lofRgwyDtlPNOMNG7km;nd?+?;~P+Q!`601mBnG0V9XC>j=P(!Io73VKPODBt?bsuR~Ty}aofBcQEe7D+VLnS6*UH(Vfh( zM)uTj0xuQ0WTeh-5+f6FqNis@+`sQ-unYOlLMPh?VbaTJ=Nb4~aeGs(!C}r*YstQD zNw!PUL$dvDN2zRMrAcdf2N%(vCG(Sm-Jg@zoVWhnUhA~p++fF&#M_Uai6#h4KI1RG zX%s}@5n9dM3!4WGX&11sPV_-;_2Dns!OZYk_f?2CZIIj;>rTQa&PQ-U+xJaHs2U36 zcXN&YO?b!j#|TwWYeGS~K)X}a0`bO^Xv$=Fwx(Ek0xkmz5)pyhPi@RAY6btKw7GxiaRDUB;T&=9ff(;B z;yC|#dj-89o5gs}x@JN_MO!~I>+1X|dV3U;ReKN3RR=nL@gO_YsEv;@XQKG1lE??#_W zpO{EbPG!4#J39NZjo10(SD%)dy;9X9wv3~ZYc8XV;>r2k2{)U}Nv1-z_uhIJ^G|L8 z>q=*J!#35jWCP2&u`U)~(#%iVHWPo|$RE3*24xF`ld5a&0AT9}IPyx7K!hH~?$L_u0 zZ|GdbZo=x>SS(xsQ3l%)`lRyHKOLB#l1DZVzWICN-z>j>P5Ax4?2i=`C0Xd{zgN=# zWlyxIrtw`j!M5cHe*2P~OU?&gim&~NW8I7^!rZU@6+5-V71y@ zwYpa9ov-4VrF{>6FPi8@tZ!>^RK%9@DHuOAo?`=MYK7%XK(M;Sf_nuxQT_W{=oJjHd;+1dcI*s zsI$C6QFT***v!3t8z&%vhmM8K;9Q;Xpk7<&A)x=}=ld?fvzN>Y<#~=7`EVP-OLTsx~xdBEPMeyu}c59yv;%iz>4xp`V$uMT!gPSGh^u%b+6b>dPQy zg+$8jv4DCT*H-${O3p^vKF{VXk6y8&C7Au}cw%8rbBj%hs1tpeN`A}WMJS;M}q!ve9KQNnb{Q-ZesOa zrhDgyfY`n;TTCH1OH}}b=j@*8GAkA|Aq#64SJh;`>OzS>xNM*)jT1)EFJfYxQRzej zX4b`2m(hk3EUM`_FU5TAiG9Z0JZOg*f-t+}@_{R{KPN*tcDSLYXT4g}&Lor;xQR5g zuEF^%$?dJZ@45uM0x0+RV*wai*JR3o;_N739Kd z4KjCbcubx2e9dmzCpDh`rdJ@QeI$vD2}!rdF-rbMupSy%EDJ~#*qqpp4E;CZtSn`2IzX|kfwX+5W8Wz z1>ULNv2M<;u?K>;`v*j~*+RGcw#c#qi3jYj<#zS2xdyKKhC{dfx5z(#e8xNzKZD$e zKkM%*T$2wJ>&aAH7R%rSg4)7FA(QL+yZqE9Vcj9A1zjJYe1@q7mi&V*gKWG_bEEc* zbL0A~usgjy9op@~vkP4V$nd`#khJlAmUKyV0i{K%?n4iiv`K9NQVCt&mKnkmu@RbC8^jpDmG4>RK>PWY}>X`v2EM7ZQHh!o9@3~`;LCw4`+=1 zw#Hfe`_`PHRo%dT?H+9uZ!m9(cRY`TXKas*X9$nDXLOG?OTI1BH9qIH$DxkIx11f6 zA~as_Zf_)y($P&4?^=SdUvw{6-tK;SfggTd{*f@tV2`pHW9M=<3wvMRLlW|r&4DN9 z-1oV=@Hf`&e;=Cv$6B<4gZcN+{GVF18kC3P!opXU`<4OO2q~->gzrzx$A5vp|NK*e z`WeBmij2O}YhXkOHX@mxQr)0lR@|&47Y_>EoQsZu>f7r5(R!)^Jd@Tm*Q}|yFiw&Q z^f=mlG8!SRk@Ygz^gP;dzf}8rN`K1ad+2BWL3QlL^;0*1ex0eb!PK7R_zn>4|0y@o zGbmRPbG;hURPY-S>tF-%n==gL^SU?Tg6&P7OYSUg;5dJniVo1%)oxB9JS&3lmT40;cV6%quO+>OY3J{n{WchDOPX+VZ^bD)wz=R$wtZ@t%sa_n6sOI|@$bVm#7cvoB{}5qh&2lQ} z4XZO&3DM_V!BtF9acr@)v5C9Wzw(ryH}K4 z<9LMlxjqj~;UHjJy|=b9#c8jB*(Sc_PL=%jUzPA)28B=B#wDw3O@mARhqWLWk&}_| z&24Ea602HrM2V9mQ3S7oV@7gNDDE^4Ne^b50HE;(py!HqX9XXyIGD;_WA;pj9AYVp z&Poij6+|=M>*{1<)+(>3W6y$aVw($bgyQzPN*wctLYcqN4GijF!l(Fjc2K|a)4CknW$#^7-;B!^>LrX0a ztiDNUS!|}HJEe&J_LyYXEF^Q&g~IWYa97W>BR8O9`@vk9^ z=Bp+;hEb(D{Sn^C#O4i@pytxp0UU+*w&Qme`dE7kurxR3*xJ(|I&M=%ftnL&hihNN zjLXR|obKq{1}wSk!ndx5j@2yqnnUfC8&ajl;i3iWUHuvm$}-ISLy8;~?+Tix&S6!= zX~W~*J|544!lu)P$7VO5#aqp88wXt|xyiU6*&xJz9KnF2CFUHC(xg`us?Mw*6UaEp zo9Cj&q(oI)4cWA23k-&>w3g>&ufcd*R-8HfldV+2wFMi*m97fYh3Aa)O1?B7pjWO2 zG^g3F+T4e!AN13OzliuV9PmUFcnQnVLklvn=Y#UJTbL?`;CMYR6peu*A3`rFs1pkjgbw$bC6kyQu$K&a|K@44(Q>y z3fE1nJPmL_oJ1ceaE3W>Wk{|imZw7TYA)SgIcWzhbGGcRqOj())tDGpjE9)xrQa1R z*jSTp_jgu$|Ec;5KKjPEP|NY*J@D?Z*6WJ;I7H^wdRB*JQjFM)ch`y-3qA8L&G(%-6e-Z7j(#ZKvJB-U>013YIaOMWG=5^F`JUr*I4LRpNhsI<1x!mz`!%?uV);^L=mOcMTXl&_G`GDY6-L@ z7gqw$=?uGEJP)sZb%0ffe`w@XfREnduIA8k_9?1TYW+`vS7|1-kJ36NK@V77qTeDK ze!{#BBxx6+uE^}7l_B$T- zTOFkY-BeS61U7^Y@9oXZ^|~B=Z|&@@nw#kA1kl#7C*Avp6y18ZVjMKCg;Z}2dCrOc zle_lqck9;SdZz*ur|kh%8i7>cxQfH%J_Q&eF|LTqfa1i+9(R9#ZZUIb_(CgB77AB% z=Z;cfXfP@4?DWGZsx}-6&GVvW?C0)L=Ci%IC*;*{Nn}S^#wOgY(Z)D}6~)q!eX~H3 zzYtn*)o|bag8UelIq5vWF^TBPDBpiENa_5=*e*T4=rq~&Mu@G@W{&fCHwySdv>FWhHaG59(fMfmN)3exnfL<+)JRcEjh9NQgP#UZ>d-P_jU+!hp8)iVY#> zje}llRiruSh!H02a2qh0wdRiOG9|VKizB0OX^c!#^@CC69%g#uw5_Ubp ztdr9WAo^>miU9X13>U8C#D2~6{dv4Q`PNbX#!=zM)3FW0L!~eqz;$?O3AFj40b>fx z?e0qLUE;XU`M^Wzi|Ow8*DEi?6w!pyKXke4D{Gh6GR*RlQ>mSQ{j-#ka^ZF2QFS#oydB?Np25`zHqy5P~UUb}QH+q#w&XLL(X*T%jVVS#UM_DyDI!V77&<@4ywKFYlz*` znVV!uU||@SXY#Mp4N|TpATN;@wVQ^WhF+=121opUYxTTrxND&-JpzqN))=$Wk4r~a zRgeefCdF3ar6g=R8Bej23yRc48@~$R>_YQ6d)VQc4hrPhzN$(OFRU>EU+8q8YlR3B zrS7g=JzmctNweyUW)&LbTw=?kuB^vOfhH{qq~WYlI9jqSrG?@k1!tJQAq#Xdav%!` zJ||9}DerB z_#983a;r2RO@q02KCPpps@av<$%sGhJzDS$7)RqgW*dQj1yJ9jB+?qD9JsbT3)|T+ z;$LYU%WG*M2}!G$MW>rZXP8ANK(FrWTaQd)f<{#gf?~o-7Mlc;9Rt!m)M+8e{9=m) zj+jU0k>s~5d}f28jWF$on{UJ|soO48;S!undFaizv(-d%=gvyF+S&8R=|nA#EYe_g zA{4f3g%eLWaX4>T&W8ZM?-GpRFdh@n+EEX8!0Q4hO0|c}z`lNcL~S{V`CeLL?Gu{b z1jW29g>|EM<_#~XHJmY-ZfE#IYgCPOHdb*Y2@F_~;X1Cw$MODr+5cCyl%ym)do8s$ z9QkOI$9BR3Mlv}m&!HGg#&F?wi&Q{))xc0V^z7|G#P%u{dCAZdmX#ujgxb;*_H)8! zEuw9EckAOlZD+JK&9`>e_6HVL0zAh;@i;f3R!l+)5IlkDou~V+#=u{T!ETa=0)U!! zYLB;5Ugvy|cO~qDK3f(6Z-oBZ%OcUjR9Fq!gQ<{a2T#JihViVoGua3C-%%E*F3t$; zvbFO5i>t;Z^1-T0ezg*6a@((c0~*IbQvr;Q@JkI|GC8e(SY`-|B-r-r#fF+tcUyOf_f;x`W56n1d! zKq=||x?9R5NwV6AsH%_WEfSc!DmUkuF znfWiNN-m$kg4qj(__N3W+s__nKsd%w_CVR@MfFv1$2{Gc#5}Tay|?n}#-rx2((-G= zZ;`{xxC4uSaZua2Vj4U?mAi_a*eMQhb|>oh`Dg3})`CcuL$a+{zw5#BOfih6t$0Ho zvxBVqa94xXTftzCrRV1~*EcpI4ISvQk43KM{C~{|gxGLeXOq_iW)A$m$E7RE+9rDi zcbcWY`SAfQGk5n)+u?(7y!4FIG5mYfnj*K}T0_YdfoW2IHesu{<7h>IMy z6A(`6shO*nlQoYgx(=DEnQsR*hvy&dSpp%MSK0fV=zhXiRoDU^OX`CtAnzD*`=tQDd8^Cv_Hf%68ueMm#rU@aP$B%p| z1sa>Ha23YA{N=ivs5L7l%^>iI?U5$!l|F=NnDRjg|QL;zZ7CsaCXjhF9k8kH}N(jx1vh)UN>?S2SW0t@(lj0X| z3Ux7QE&gnbx&CYn1)q{llW*Qq;$T8^v!tkPQqd<)2KEO7*`4>XyFMQo-JQPb835)JF zJrZ8@wCjRpNuGYPQ4C;lQgbr&fXD5xItH$(d#iT8qQ8m(Lk=~pA+Ir1sFv&fB^0q5 zCYIYq(hq6yr)7JgF#MbnLkdArMQX!VN6>OaF@tD9c!5*`Z=4nhYNcP2uDR~hF$ou? zTasy0ZJz{B(?&n(YKdjlkxY(5UdqD$2ngvodZz4S?iY4Ut7@83JEzqQ53HYF_Rfd~ z?fF#p+KRYxqQkvE%@EG!&h+NqD$-zENYls+Z#a=X!a2~;RP>0U{ZMb=vUyYV|OQJi<-Z4vMhpLVmGqyK*EC6Exdv2I8pvix1NxFfbg zMXpQP1K6Hl6J1cRLWXW4mj{d1qZRli$@nE_f5GF;<{@tcuG)-3GeUMQ`W9?LwGV36 zz%#y=wIR;&lsV=qIb@eG>=w_3EKW{{zj}01OWeZ=xFq3QOhIYzMRG|VD2$(dI}^}b zHOd_4S0YE#dpD||`U@84!aT6u0|qaIqs$Yb#g9N-kY&i!WJ;-9-nPlHV3iw3BZ%#L z4K5waXB5xe1_H*xj)98HtuU3jy$jse=CK_i^ssG^CTEPPwJ<5aMUFLGs{``Zw;Y73 z#uF_?OoWLroF_HM=Pd2lXjh_V&oy<5Gij;uXx>2H6_gJx9RH=p&3MGqsS;DyZ9I-@ zbWUk%_P=a526=fKTD5Swn*&M?fDKNzbX3d}YsM=sZzfb&ip1gc4zi;PO0B939tU+U`uLA(j zQ9MNe=X$SOaLk8;>j0Njgoz z!4CGQ-@8xgQP#FR*Z9ie2pn*HyDaaR7~wMPXnX?+yUgnp(%VKi98O_XHf_(?&Y{*e zf71IuklCs5T=+R}%Ex;om@uk_GhH+fcbdnKpeue{+48*jo(J-c@ILdS?@Fiz#MKfQ ziX$A@;&H0N=Q7$cNF@q{F9dPKir&s1|yH>KZPtZ`<*nm4| z2>g{{j5u}hoJ}jEK!GMB@;_xoohKKj{^pX1w4FGq=kMsUc1VXSO^hef<^FCp^2#VQ z$F$wnqi9weaGZ(^osnL(j_mAy!#1d8OmOz_J>se%W!&8;m-D_PM*VrPEzvF|;VM)K zk%vNIVw^v!w4EDnp<4Cz(j-HmSCr?|x zW@y4|z%I48!sE0;nNUy0p{Za+F8 z$lkvNDA@UoKb4b@hEzT9DJ@pG@*0!UXCrr}16@~O@U|754ST{Kuc^RtPT{g7+*)2uDaGGJ79n-?KYS9Djcp*l>DdJ!l zr5AN$%ZDUeel6HR9gY?xlhgO}x8RQLLzl->+hS=~#h2Nj-L)#a*@j#6d(H-ndc-Y{s9-hrRBF=6)^+%6-}87JE|`6i*2lwHFgiuUSQmjg0AURYXNVmjWVRJ78JJ3lNmd?7Q^K9BgWSn#ijEXuo6ma z2j#dGZ{AlLPFkA=YDN0qV#kk}%Mn!#3A%y}okS*+G}(J>2B6&5zhLW>3 zo|5<#D}r(6734bm8+{6r!!f=&?(W3Bfiqw%zG5tT=4oa5rG8<(c-}Ii;gQKw69?f! zWt2b+<^oc8ICyy#L7zpNd{lr^IVBy@hzUmDYdp=ubDWvMx6%NdG+Z$Tc{M$pJjSr- zMsd8(YCu}z-to1MOjdE&G53|m7*pi9^f%0b3V|ucWNXx$yD-(N zXx_D0stV)y*Sw%2#JwA?LWz3StfHc!(X4Di{Ym*E*QE2S<7#5xFy!<4ZfLyiDBXRE z=V`sJGeXA0=?a9n6#c*oS@J;hX0!A&axJ!|QdEX}QF8$WsIrh1Vl67@=AIW?I(#Uo zMA2ZndA>qjwz031YX1{v_04@Z=5kSx8|^CWiNSQIwLtPEvPc9VQtC$RiPO!5bhcLQ zV=5`2Blb2sd6;NpY@#+sMW!_ouR?GoQAq4rk`R;WTMS{FVp`6jFnMYLGtVl@!su#w ztYq0^^8;r^_JLMP%5eftGBB8gOJJwf#+@R~@nbZGCJ~}HC+g6R%o#|yjt;8>0(o#L zU6}q_7&NH>TvJc{UX$mVVRM;Lf3Y>N{3P8$Ez}@Pa)MZ0qhG!NF}T%otPD$yvkZFR&q=;CFk{?eF=JVQ!8bD2S7uBpX44wUsGUj zUXH*6HK}v*rC>O^7Pd0Pl2682-(gO>q!7RksAHH-i+T(T2nMxWME$DfKV1bSPaDEd zbTxD_#ZExat>~=ltgIl4l-B-NA60MI9Hg|kT1z#(h-GFCETynow^1NOEd^r#3tA28 zyFnJC(6b8yD*uev8|tpj7Z&I#n8=`=NCYvWQ#@VlrNs-SmYg#GRSvrd86?JF9nDlC z>*=XUGD+?`nAjRL*%}lC_!V$R>Hn*dwZe~>a}Ai(xWL+d6-L_XrIzg_M82Q!HUjhs zqXkaZDN`9uOCdU`H{~>PAAjS8*{r1_~09I;%*~PE%(^YU=0MJnnVT zS1Va>HMl-0%uZ!4rw^lOHUoVTejXr}7!pP}0V2F$RAQ#ed8a&Q9%fjc;53bWZeeB( zTUM<^PsuGd2D`eQdUVMQ?M;7S zsVoap`2BDTm}hcK82LZnd##YbfV#{Qz4-^VkqRq&{>ee{CXE%;fx!cjdRZwg1|~z+ z`UUW`0`-Y9E5F&aonYD3)S1}=W-JSMV&vvnWlG_w8D zpjMjR+!Q9_mYk#oOgsHMV{$YWM9Ow412g2z0f@7JF@|_c8t_YJ_h! zT|j*hVGQ?5`yq|r*~PaSY#C+@fzad?{sEfdh2Sdw(csnch+uaC!;m}E>`jM&5dTH) zua%#)U0w2Ad#pTN5F#Ob!`U*C1@{{6pdbmT!FNm0vY*qo#ro9kad%!Rm(-;UbMMFY?U1k?DbziO?oxGF?((Y8a_JSvrQe zP%D5{=r!S}<%G7FEOcd7nV035A5elbX31v?gl4LZE%Q0U(~>x zgD}TYqFV?;zJsvTsZ|p{L7ojImSvs^F_O%)zNc3P+3Efq7Fuxe!O9&F(D(-o_RRgw)>bDmWp9&!FQ&Rh9WI?3m7k zFtXU8S2kgQ$cN`mytgLH>QS^+q!V0zHM%76MjDA{as?pd_eWwkr;KoKO|L6>^@dzm z@CWz8gowcU4iM(CAQvYW%D?Ewq5rY|uYi&1T;B66XhyVdDrag?d5(8S!EK7xv;n(j15en4Ov(P&;WdL2@X%aoOPVD)M(86y_zsn<`UTRQQL6yR|`C zEem--6q#X|a++>+C2gvBcV@#T=_EUp`7252aja#DNe0WKQqBBeJ!n*H5J%Wt#pAS7 zC8J9x>Pny|ARiz;4+XJQTkc>3J%YH#VU$>@w!0(bk(-85)K_Ka+yI>2j>81^r*<3s zlTU8?+MD{jpsXMp>mw4QfGw(0Q4nyGw zRI)Yh(rWZEsJXDH*h|x&l26)DcJ3T={d#i+yKI#sr$WkLTA4U0=Q&rjx&1z}6*y7l z@7*~NM=9x&pNV--5`&Ip0{J4b009k4lM)TqkQT&y|a5xd#7d7_A_wYS4!^r zk|6KBp~;ZI-(q~04~;vq({!#Uua(lHXMVN|owzu?5bht@Zo=^>=y%V5Wqa)3`w$E5 z9NoU6CYv>8igU((2MfFqpA}Z%mlUW3lj5v(2#Ma zcZ+>Upq5h-HgrN;@o>C?L0I|I{#m4bZGz2Hn&(OA4DOThOHdiBwzXXIuHY#v3c^K< zp`9?;`VhF@4jKIHUCZE7wemBYGGX0{`PnJdhANO>_vUlzOs-4zFFWofy0k54@{@3^ z&D8qmaFB^}5tW|ZGk)jP#1m5jKBKw+RZ{GMC?G>Dxyr!qn*wn{%i%V>oi(DO5OryS zEOvFo-se{DM3u&EcC8=L%QYk}xAT0Y*!y?nB)i9%VYHw{`%@3yL1lI)H+h8` zi`VkHDnXuhts~f5|GG~6s)K^uL3l+oDU=t$y6}1+VH*19^v@;saqMLIXwv1en}csL zB4VaZe!O?-B*lnpDa#WdrU%%U>=7T+LiD5x&%4O@i%{W!cK@-cOZ#}ei32{4iWQSHg*^FZ}VbsBvVM7&Cq#F#XQAhu~J^pO}_% zejAr=CBo^ub-)z8{Ms-R!r1sirX$ZyrPS!4ZXLs}Vv*QzO!WTXvReS0J|UE8W1$#+ zc#@e0?sZ4LnPw~)PjcDsd>nJ&ep6eOeTJHB%Yitq3dZrTQYO1X8C_~5xduWlD*bz4 zxB=T6fd>>`iqw90vvH*sZ8)uO<_|c?79;Bn#x}PyU<6jo%=qRYNjvct?I6(=Y@9)c zaR?|Qes0P2oL?Sl#5u$P?!DjIz)t~5)ME^d>gdg1lP>d>)3>BL^Czw}JvZ-7(&dq^tLbnAlS#lBX=;fA|*z~KhFW&}K|b~9VrP;N8f zXuvo3La2adCNy{}CBE0y?Puxxmw`+*^bCPy8vC37n3~%4_E>yHslC@U_s965W#W$k zq9sXgv>o?jX=VGj&zWU)d{+;I#0wZe_4LaChvq=d%)fwp%%VD;+~mI=EU%%vBh_wM zR<@10X}^C{wg8a@+B^Xf{3F=1`aV1X;DWZTU}*!ny#R25+pb#Pt^(zqfN%!YGWRF( z`F;gm_lDYQ)av$w58Lu~q>p~%8z#E<(48CJ za)R3%@Qx(3LyS>f7Jl@>4pGcb^;{z{cq=kKq|Gr)+Mj48BbCi~GLTZPex%G17-wu2 zNN3WX{~R$XY<0tstVMg9U(Qn z2zXXvzREoB9c~Ce$i7^* zEWNW>?JObgv9XU^$1HgTuRq{gJiGP}^AS&eK;0bv{(Wsrx&>Mf1m(&Wxo1IK2|RuP zoXhDr;dcmJ`FYb3Z@Xi1oOq50iok;$*rBvR8J4zx?lFF4$p*R_a46Vmb49^iEu~Sj zTFW)h`U-sQ*V+`+VWO!bK+tg<4|QMQq0lW+J?wtmgLE#L=~fKZq(SdLQ`=K}MztJi zqIY)p@IoRkA#^AytDQSmY>0f}^Lnz<`5dE(exVD--FAUZxnZo_@t7QXPV@Oh5cJ;i z^8froM0(r;(3VeN_Nl+Bn*NRAl~cDNS{0u#xjx5o_{APP3ktifpiYCvfL=F!oMybl z`x7s7oNwMNJqr8D>N8V$ud{o^@L=H0#6(HWb%fA9a_p!z(VsWz4gxzojb3NS%c%m{ z-DYc3p)yb7#bQG!iNXb=B?msZZcq+h^E^Ai;~kZ0T+T~qG#loI13POLbh2c@c}@;I zojPk1bTUq+!)IvmG%*3~nmsvXfV;>C#wo7MXQ*!ydO7%te}jqRcYI^fI-@gghC5G% zvcD$VH043zPry#iFR}h(a_e%P0{uk~FpKvor`#t2A8vRSJOg$^2 zlW^Z&WIGoYlVV`e;FWY?&+C)SiMXlJm8^*2I`A9NUeG&j(f2Kpo6A#N|Gw zvweDA`tE~?6x;Pmdkj73W1EW>$TJmhhO-TV_5`-}6s6(o)?bH!ltL*266PPnF{ZDW zH8gmvs1!ijxg{5jvD+D_jP$-*8;8I8OV_xhv~0*_K`3nuoea#cPDbA@*FxcOQ`{qi z;@OhNnS3IbXsbYUEZd^nV^T8k zJ0`(1EO9|s(WbqKP7|xuqZdw+sISj@m9b}aq@+aJ0N{*u8`?*q3jA&R+k?7@t8I=z z+>c#g4w(Pm(_Js#zQcJ<%J$EeAi19F6ww*un5-^gg%@04d}?N>{M?+1(46j{(^7`g zU~E>3+GLzRta+%XIRY$bv3^a7QB$ilvIhrQ7pf7W)L>}+4rr|`Sgsp;91Pk?93ypU zYopMbQJ(Gh*r{ZUgFp5C$T>5U9;Bz6w8w_NBTK8+gef?Pka^ZiWI>3@I=wha&w^)B zNMNK4Y!>aasFWw6ic7fD3~)0SyUG5>%1ubmAa_~lrE32#@efBQ}N= zu*kmtv8*5#_3@Q1!#~Yf`b4 znGr7Jy2ZggYK!{Iu3jywrhMO7Js!UJV?^7*gzMwd-@%f*7vhJOWO=nEcsGUOTo9yo zIv9e1C4Sa<93EU5{m!#?o#EIo`0681M7P|cTl-l=r`(cBxB3nod}2%2RmYrOVP3s5 zbNF6CkGFLWTwj@&dq*cApI|)w^s|4xQZo1X<`mwkJ~FlQFrFRVVz#oAUZmUtw+h&v zdEBzLiV&U&&iB1<U#PWAh1WDpB@4-WiVgnn6}U^l@) zRv}AA{lajDL3j$);PrpHMQ2n_apIe0g=ItuoSgiI7`S#aS@sy;lu$u)xKcY8Q{>KiKM|HV!K}$&=!(h%4wK;W{KbyO%PfSjmcThjr9;XZsqBd`@@S% z@qIEKg%n6LxF4yzLz`vrYYI~l{kAHt@G7KBPXRAkX_enaDsCwnbVzP*eL`Ye1cO1v zB+5oDP~hNobQFwfh07z#+*Q2*fN^-+CZ2Md`N*NcHrpe9q><7L?LzC<_rOw9E+6%D z(~3u7EN8vho;Df3Z-vvcM$Cog8cAB!6te_0NFt`cZ@G1*JpCzq=d32EiBzQcszHYe zF!p{heJdD`Q-U9Vq1Ladf+>83H1mMKz0r2g$D z93&Hc&k=lE->EB2!OMU(`MBcW=<|#_;oqtYqQ~755N$Ugh)p7HlAbKNH-MT-Q79ji zEUYlVs7NPn+DMTnl$(Ak^qUr?j)JtbSYf=-iZK{DH+2%p{=~x;SCi~;hBY_H3i0kl z*_L~QS~?q2h?a*2efn?BzfAP-V+1|M4${4Fc7|OkRU$mm zR{LPe$zTvx{Ge_mEWKEu6=!s2kZDNN zhTv<8N-bPdN?MIsFA`;v2cn|jJVxT0h2E)l9Evzf?Sn-*-FHlK+8`#^RL_U1-w4RX zIwt>*TOFSxZDV_ewCk2|`y~axVqKh-dp)y-lt0~YZ{UO%^}_nqKuP)0iT@nt$$++V zwsAQ{%|p)UCao5`m-*l!w}yJDebc7p+!o?$H@xpa+W!8+rezG*lTG6iAfgg5=4gN4 zVbiiieAPXjs~wqhx#53>YyE2rA5ObPy}5kdJf2{AXo;2zKhcp9+X9)ZV047U%9rVh zKc#6_(iTT4e9bhc**`Iit3>L&NMV4-A+sT3xnEZRrKcZ!qbrhp&j`W7@Hk|EP^~O1s zdNUto09Y^BE>)2{N3^Ljq-GSBRFb%OjVGE|F6>Ns6l*;LUlPw0YW8e(py8D|!KX}l zpc?<;FG@;h=&WUj%YXP1f!=HVDc}k!TupEJb8?7*AR+#_`z+@7JbNNS6OQ(6*wfa) zn>nogb+>OScUDcDLp(iekeX9UJS5EX&R;JBa=eS;n1_faLJMU4r_+V#nHli+eAt4( zl$9>UI{SS^?dItN0F;a-`Xh&vd`-imoMxIiT*IlljM2y5rLG^!_u?M0hpVw&5lEK= zp10A5S8!mX^yMecEcf0NvYW_Is_$VX$OdSK&?M#SDxEICI4$m&eNIPe*J3Bu;=t0< zO44ggTdgys9dEe%n8UcG9mk_g+b;`*;cZWqaetkLX!W>~ml#rYPUVa>h|n_Rt>v1=l!} zYxqmiw#B4oprUyC;$iq3g%WtFS7mIO0}M(`#nql%P{#jCa-Ap6s&Uedp}%^~c|~F} zPDkyqMA6vRH#m{mCJ3e=*vS{wPtD;dfsRyaD4gS_O#)5*J66wawm3-Q_H0rCh>2a5 ztCva>#4sCh2vz1+F^e-z0t9*$znE4zv25f`WDnKrA9Gleb(AL50;%_KEBwe!6S$Si zcBw1@!Sx*Ll@kXKtG2jHhxYtjnNxFSFT|E0TjjL-!1@91;*4R)`nYGL3SR^>5HAs~ zl&!hM8}IsT9m_z>GS)EU3bp43Wkvxmp?Gu4TydCCj#cp*SuUlY_3$+sK-$!L)?B6V z5O~Xs5L3-uku}0bGsYXo3x^xp3K0+OGc-0+&)p&QuIG|O#3wUKTUi`L8Pl|ZyH)fX z(C4ngjNh9}lgd422(zrc!C2+8Gu-}|{^EaVM6}9EQ&=AsJr^+9NxFS&A$^Lv|-Va_e)oabi zB!kvIL3|O;YkLuSCO`7vr_GuU+g*h+6rcb(P+ahj2Cz1XqSKo}dr!va-qzR$8Qk0p zc@U1iy(3WfXi@>;xQmLL{_Rok@R`qm!fT31TSmLVsd;=%uSJzFYI0?1tb$j6SWmk| zNYqPMRJ_GYGNlr;D4po$*Hfb|c=Qy@)m(t*Nv{&22Dmc4c?}b&_40s~dTeZxl|>ao zPnzg-O@-2B5Zo0l&d^YRYB`Bk=UfbDNS(joaEcO+r9RmM|9yTN3D=vQo=&LElx;PJ31iX**Azy-#im$Rs!Es(l&ri(r5uj3_w=Pprjb*>YP5 z9FP6r$H)6{$_#zxU{xqm$=9ASRYU81EU)OrIDsa>Gi}b( z(^RJPVm+W_OQqW|dFCt{g_m*1=e-A=d=}9-$wI`@>QCql=)Pr2F!Qci*fdO8bq_Ms z5IQ~!ns;U1ls9vOS=9`ojzVKzsDKizcAx%4-WuoQhmrgbn1rpm&oGDJ$B!27|6l&k z`hUy+|HGXVva_?cv;UtCfFjU-PWjuA+$q|K#^6^7r()X#w=CA2Z>fR3MDbVWd|n!s z&QendJqlCpcG!u~^K$A$z`Ghv8!$(^ z^Fv_rmaFCR(Q2wja>-epV`*j75v&U@IU@>he>{V*X~ogAt^m@P;GQ%93!azJc|6_R z?IQgWjuTcqN6QlZ3iAvn(lJ9f=RQg<2}`d`Sj<{^@qwvt9PdNdozI*2^~WgvNO_OKKRe3IOv;$uIrOOGgri+n)Uvh# zJF+7;=eOB)hLAXiiRO1g*QU*m%r?z*-R%6$ea3%*%v_c~Njk46*+T^0&pQ1`;pfWV z)}*7OMAt62GBq0WO780&c{qq%W{d~05vJV`i zhGDr!+{h12;P5*95j(3os*i;;_N+=aD33LUMQ2KF8XS-h2O2x{oEb|em!9|Rb2|=7 zLu%p6=LKe7Oc2z2Dnf62&LIt@2_rJk%+E)D4--@DCU;DkW1Ji7rgp3nm>Fl_sC699 z-$h5BcM1nW1GODzz(QG)1x-r-4=6^N??vasFaMd5J&jmo7Wpk=H;WubEKw)n>|an9 zz}Bl-{1>cR${PFgKnzj2m`CKs*lg#AgPU;(`Zi00YY;Xc4BQbz^qp!Cc=;Z&qy|3% z<-3o9Dw@`N&YG>@uM3Hg5b{-~B$@Vp^}~Ib^@;I7?dvBOw~8 z2x%c#$y1Y`IUPg+lp=wpn1-V<`DZ_4#_1_O>M^*fy3L8RnV2vk4W5w~C?}o0J^EZt zOYJYd3@2r5qjbU2^pDa4ZWE1yDFBy&OjS6pybW(TdsVVsw?-_DB6bnQA4a$&0>8d+ zRMZa9IzLd(yFTEjho9YH68}|r|Mx}vm~+~W*!M-d#sAmT{C|{5{%2NwV^tii^{p-b zGp!O7f!{Jo)XzfNj+#JuMEdLy!p3YGj25xqJ!II(fAne)I{#fbQNXluOI>!sszU&WbO&Xo9$BHdYmWq~i2qYnj z1J^Vs!D%YQ_t*Vq?n#iD41YB z0@($Y{vT`a7~EOAeT#O-ww;b`+qP{xzc}fn|5fMQQ?=h)x9U`_ z^<{mX>zU6O6Jwa1))>r^Nb0$Rxb9mE@e(6dU}`FfE49b918KbEJDx+=M-69`=JIOp zQ8N2sTY~RDWF?&#o75YO+kV=e#pYJT5{7jTV|1^DDOJ5UIM3Is0@aB69-{MJ$Wj$f~g9v6w-ZetUlyaJVZE{9p=@W{_&+E>4f-2aV}50kS_n1+(V$S! zXo`@)4p3Sa)vHQTAkl!*D3<{2C90TNWGrKIn_EuGIWy91?|4u%){?PpQJMcdcfYI( zZ}gQMJK5UKb+9=DYI*6C3K+sxhHs9tiR7fReRA#TDK3YkW&SEmfSTOB%BnG=sfKG)5#i4|z zfulB>D%SLKLP0puu^=CEQWe)Hrb_N(&=l zQpG5c175~6GfxjxbNzEKqV|)QWx|kDnT6m2Q)q4MNYScnFBp_8$_Nt}*`l2Ut*mu= z$L|ZN0|)Yu79%VVe_8#ewuCJ$t3dydp`l8`n_Zl4uPss8sb(62w9cl*iXt&g@yJCl zwN|=jCFLsr;Uz#GkDVL{i~@Cr6MK@gvn)!vMjGAN`v*R-mUEdOvJl(>0`6{4K5)dJ zI>Lb|gOwhfP}Dvn!6L%>slNiP?%M_vS_KZB_O=&{v^P8bP`%gka3@bUD!W*Z6-iW!{KRL>%e+{$u1`=3=oD?l(Qau&^ zCeu7%{jYEw=lMd!EjOQ%)(RRwE+TQK!2F&tpRD|{4~iu)ta>rM$op3Gr20mMswB{8 zal{WhUh=U;7lz#iZ)!z$`*7k%BZfVec@QogVD;Ww?Uh#hhugxrL{UvGqA^WB^WG7^ zZVD(8qLmr6enslLJdqryc|rPWoFYn$dm95v3m4%D<`^wrPRAGnz4Xvf<;%MDcLl8< z5tu5hfN~Zi(J2kfM|Q})t4S8$m7GzBdf#5SvB>drd1EJ!HashTbKy2$rW*;amWzwS zWCHnEDccM;sc|Q=h+jiR)q_zB=WKnvSoAfCElH6&`X{U55YE9rq0Q#1A7&qu)0iHS z)|11BGBW8AGmdYG279qi+I#^BW-s41siWh>N{VYQvA-sH4~VDt#9|j%-^+Xf0;+a` zVun{xE^!HZaLa5?-sNU3FfuKH9W`#j2~gW!V3VXUpfh1{2S;;Yy#COTAaVXBgbSFM zn|wHk4L`jiRaI4~ixD=%0-x@n?gq)5I!r)fM6-OQ3S2=MCEoJ>oyOSM#J-KZ64$v_N`qHlU+;AzSLP&s&IfkbCY3`+zU%#I`Q;c%tAHkX!>t@4SlHn)n~}Frs9Z7K zgu7#uD8zR4@5sp#*Hy*M@!76HGWUmL#KshC^`iGJK57VVQNGueY<|eqIUEAV0%F~s z%kd(D)a(rmqlhp-W=lgVy3@WFw?x2K-J5081+J%;sR9ziAOpFF37Lief`}Uq>S{1lc8vBQyVA{hlf4(O< zVw)(nc7CoRM1?KF!+H_VJe|cg6ZY}AKo+1>iFN|YVPP@XqW^kbV~qx5YId63cHid{ zn?Ri?XqEfhh|16_%a6)QmPS})N{et>`yH_Mcn75tgUkje7RBOr%!JEJM-$HOzGLGj z`cC>H$>SIcB+WAm$%v9?7slN)pJ_+Jr@T+nni=J#8WbzC#Bn6oQryZ#y)qzM;1i_@ z6Qh*kY;_P9o0b57gsMeRxWkH6>I0YsIE5aUSMN21^XxSv zMtwP?fJbr8%Y&Eop+t@(iUZuuUFuBD#Kh*S(Pq(~L*OYmunyMtr)Dzedz zom$Cp$8PXn_I)Bt9f%GtNIxTPUxHLZCqpqE@D?n!6P}P=iM@_!!JibKKGah%9pDW; zFgspFVZJMlHpOiRzE5mIHk7&*nqiMN?($#xd)-<0_*Q5+$k&V-KB_8j=7CNG?(6;Z zfiF0fR6fypIXaj{TosKQIKI7JzqLt5SAE*Cf8qGmj(n$P(>L>!V=BMu#0iEYaCA7E zK#Ao;JgOe|Yb9HFw5Mj(Srii*2N&H@>|QnaYG6msP}0rT!3J&UN-&SS4PA^oVL%hJRdOS8lcbV(OQn(DxV zWTRfDJb!IstL;T#20__b_#KMJ1nm4i=aOUO9T>mBDS&3$Ws?33K29Ahw&! z3P4l3rEp^uA??gf3lJL#(+j|`A%tr|4B40uU9g7{jh8fImvLy6&rAn82VJ@t)nH>w z6p^3NuJ@??B&jS2x05gGKT>}tD;WVEcgey(--fXV!szBa+K8&(Q~)-fAj^@Cl#^8- zEm67G!7KFKvP>xw5|n3MaN}X=lu=jSrRu_M;K1oj>oZ_-zyPV~Pa1ftTV{la>{!@3 zQX=U@y21tK0w7&tlNuO{_m%TzhYe=*m7ki1kg1PLEb781-T*BPKCuj6o6eQ(lr?SG z@3gJ^%Bij~dj&RQtg(0v?636j(DiVEJ^>EqqGf}gfH6QWg`|~FpMh$x`hnpT$zs># zawB#aQ$MzW>`K)9RZb^%cd)XG3hj{-6Hq2wal-(epZ3XBwaE$o74uq($pc0j@8$?U z&8oVpgRr$i*g7G^FEDAlliz`Hhh-teo-_mTEkGnPlKPqC4AzQQr=Jfk!kcuu;Y)$Y zO#YFjvnXOmRM#AYsuQkn@pCEvk5R0+$3_hEHi|3+|YE$(A{bM*hA6SL@h1bSgVsTPdw%V>RG|O(v95vScTFQcyd4I z#}5(j^Aw3kR~_{#vKE|C7S3I%GDmsyzOve9*U7oB@aefbN25a4Yl_cHQ-rL;l@}Q7 z={ojQ3%W?5erZ$cb@Zjop&{cCEZhd1z>Yi2r-J%$=Bz4%yLvDj1%G$i*{`Be>q-^d=*Uv( z;Iw{RA3N|EecWMoiCi29c?O9?qy=~YL2+@kETuG1oY=6sol)+MQF()(jBEuX{)9PH zM(zG-2^49BZEcu@%j{TVwQtCi)qH1^9XZ!lFp5KErQYeccTdA^zCe+AEmU@D{Hc3N zu~s=+76cbRirYeVJ;}HhgDC3ziAAltb8#B2BcFGNTFmjvX1oQfeDEKMJ&igb+4*mI zJs6ySDxM1bGgT5YHu@GLwKXwv`WEXY{^m~quMZ;j|DjM3iZXI*-&(I}$pOT)0oOA@ zXyz7hJ=3kH361E$NQ%mEG%ZyZDs{ud(@#vI5dF?5>h4JG-1SL7sZBZT@f9_}5E^Q%{5Kfx%*extf!8mvi{C zYLHYiN9qmnRJqF-A3;K2k83iC?h^@Q(sAx+2{%$?XQ8g5K~8xeNLR=bY4-4j5je<} z7rp&Y<}ic^?Eaa*lxnrUvRqZomNT7y^KM14Gdhr)kI{lr?an?~FQ=AIq1AP9O0mrM zSx?R96-38^B1C*0UCX9oOt6`Xs~@ICQR}Q5Z06~y=(pxXJMc4JDPPDx#3AcF7@Sv< zLJptiEp8w{H_XD2 zu8)~Sq|^%lBvbFAUR#iFz+ulJtlm2e?zpAW)NXz(1WoE96iw=498KyWBAXBC0DonF z<(gbGH@J7Oe^F{ByvwhaZ|&OLZ(9A|m+WZ&fBYx^`6&w2JiV0EaKADOPh{rWe)|5{ z7$x7UVRb@b6DjyZRlr}5(kO^2ozgT?&_N{Ax*r6K3zu**Kk=kbPbRIrENp_E&wZGl zD|?iF#c>4SExcoJ=2T`?>*@l`vDOz{n2q6&jBs?_ef;*B0!$Lo;rbwSlR$xmqLdnz zOs-Z&(qNLAk|@fyv+mR{m@?TkSTWkb-lz*vrqml%#z|t4t73RYG^~`$sE<6ZCfF?5 z3lKKvJKUt2s5MdRwWtbIsIdooGFB!yX;la>J}M+BURPA=6(U%kZf)%rW*B?o{^Tqv zASuOP_(ec+LCa5sF^gMZJ5KZNZv@l$bTiLfYRo>7^DrnOD#9%rqS0} zl9+FF(l`m%$&%I5`m4OUTTe#Amez>6n4x0dW8Xe`Js0ka9HHYJR!mk+kZ2zp+4gs` zxYSmK+*W+xf`Bw%EK z5hP@8pLhV<#>JyyA+dVkjKa~jVK(x8N-mLlIIg7ll!-Gjmo3iL#{XUSYEh*LY^To& zIU!j-G^KgCn>z3$?{9PnWpX{o>UwQ!XG@L(gs60U4-8V#VE;g}C_DtHMk$K}+$762 zW#EWe7(W7lK_@`Z#t>%Ev1x6G-so3eB#gg)KldEU=#(W(jFOIvqJipy{d9$_R|0ZX znJzwY5h$r{RA71GjI{=Sg=xxjI{S(oeqejANS+_+{GYfRD53XteM3kr3+JMQ`qc~O z1qM%#i_7ZSo3rxz4d}XFSJX{xv>esggWq!)<998fEma#LKG2HRXzs{u%B zsKm6~9^@(h(8HsUIyg1V>^?z%HJNryI|DRg=iGD+d)=inCi{k7P%}W(Q8)o>H{(oD zvLL3;yd~LQi4$|>86Q?agbOe>YGDM1CNeIN;x7VOZ5Lf5L#3;E%9PbVvd9uCj3$&B zp=L(5%5>9hOTR8??i-{=E{|6LIdYK(fSMKlL~bz@R)-9F47FnMCq{`u8q&?6CICxi z2lB)|^jx7(=!i)Ngbm9L-1;z+0Od4*=-X67w8eHi11b*ev2#F!46$kMXM0+OS4mvB zTBB&vIJ_aYZEWWQp2ScOtP=5{!zI_Yl7?z0^H}VMo!rSpPpyzL=VCBkRS3h`VnJg(SIJKHtje@hU;(2)jKE1^F~+;R%O-$FP`s6|7( zU4u#_(owE6SQqi!v19TK#c+gE6H;)YKczOqKh*^~ndqF@&h&IhfUs@<4O!ndls1X0 zyzk5-joe|E3xcDXD__I$oPGU)r*F%wK4LstvA(P&1tn4gXKJo}l<&v4nByZg91Va< zAYvDs)ESbJ#zUj2L|yC8thyqM1=eG`f#pt5nyHWgVr$)GM&4q)`5VBie}s$LpXWB- z?K*5loR#`)Yd565o8O@>(e>6DfuEZyM8@;HvF=q`r{M#YuV_usf zy5IrH4nJH84x^F3r@r#}V1`ofXU8&yWbXinb{96A=bpX3Bplm$Z{nN01JK%H;O0Wa zh31SxJ6o`p5dKcmV)WM+gEwTqP0pH$Fi+D#^&9!6w$!&`RC;%(Goml)x!Es2KDf13 zhbFvN_T#}L06PjKIL6nm|JsM8Cx0Mt?#{IiPsCbSg8F(zb=%N!fs_OjF`6!I80-4;38~G8S7633y5b`fQlxP<+*M&g@_od3pM{Yky$!?g8332sPKn~wSaXMMMn%k2{ir^UT9*q*&@E?z^Wh9t7 zei6Pr#&>Lg3Bf2W>rEE>TvcWcE#&Y9PsMT({|EIGeVGJM^cC>IYar|FK z5P|YKQa}PIJb8sJl@^Z{TQTt7{Ma*Ei2b1i>O97sQ>W2HXO-vYP@m;^zm9Y8r=vnI ztp#`~`qopJp2l0AzEf|M+>a#oNrE2vvo|9v#&n96qe?pPL@Hb=#mI;9^hbV`RNwT_ zY_7DwFp4k(h*^$f2b*CJ$Kk?!#^MdF6Rf~_8BM?C0@tBE*CT{uN9lv=H|np>JtK;B zIdLRaTJ+gZs4Kl>*0E1Ut`m34Tf?=_6o?x65H#q^(}sJPqx*wGxLGk{RbV&!Avq&F_FxBI zxg@I?e8O@+VU=rSX2P$)T&l5;#vIoByx&V%;O#*kf&Ue>2^#xI^>6IX5A;t#BmZaY z{;!~^S{VNawFfGU$pSH;@B|`)fC+eYMK1v{ID|VCF%V)PA^C|q>^3qnD>9B_a3()% z(1wRV^L0ltZbs6o_vAJm-EU@QdcJ+!y?}1R91t7Apt50TP4%gf=v;z2>buX@6pq&5 z#m`|Dr_z8+V8FZ}`s^eQeUP0EVnVVR)31JB z`nJ*zI~UM-%+(N){=Rhc%bA81pE^V?dHKr8p<$dyYcDYqBAt8caoP=SoL6J=DM99; z0jt}4Gn~C`Rum+07?w|`lMt0aF*)@e1O?_&7xYt)RfietS7PFp;b!Wa@X}?IP3{cD zno`mxaglAoxHuWS;ev{QFYgk0&_a2z$@a4eH4SJuwT<5j+vSDJRjSYshCKhbUkEEg z=B(~_%!K|iX2k!WG5eo*DQU=IDWH5-0>i-U0YUBhQP~*OD^{$6T8i`ppfpej3cfOT zD-Tths3XOG7NZ$4+gQG?<1gH=$EdE#w~S=e`IxnsdB49q0_y`qA_~C(0xdbTxvZ8R z{4`5X2ka%Lg3}(n*p;Tp!kiJ&f?@y-1wm4l2h8ck%wsT#{&8-x287N&_5lLn9bsm% zVnZl^=A^$&5Huab-Q=3Z4ziS39#TxQt1J;cDeR*-V6`>Mq%o%IUVIo^cr@|%p_|Ku z?fT?W7LR2j6L4i9L6DeuZkX0Hm1D~E&P$T52FD3=;<2*iX9TWUFjUqqf3=fi2pxMS z1355Vmf4#Kj4+5`@+dlTaaqRPDRm~2id|ewB}GhCgpO)U;t2@4t=zh|FOt5^m54Cm z#M7Zi>^B{$7>&i}W%s13l)z~k=I8%vzy*QHiu58||5Z1`IFneZWUH?YFIqOXFAmCS zgkI206F8wcXZNW@#fmY;SBaHVV?Ja5?5sJr2}Fm{>iF?S(x4l4FZAyD za6C}p)L?;951awN;SSwC*il?j@2#nTE#ps({Ut04zR)PN>{zQf15<|)q3V;QyZ>3t z-)`nvz$MVn+c*1XnR?5|x3lf+ei!H?e)keZPvB4Sa)FEN$#iJ){7M01kFcQ+w0je!%<&&_ znw;%%;xxPH&g$%bH|xde{q=hz9x<8VRN#lMwGoa~VS?W4S!=?4F`aIgoJLAVZ|!bZ zztDhDi?IBSI$h2>p+^ZoKe7E|eh)`v$_NRXwA9e_&Y*z{I*S9gXaAYow!-U|YAyGm zCfgh9$okk?kJn{H_WFKqdxMa{A=b`vlHk#-$;7{*LO%M7$OE8{Fd; z`%gL&p&vf z9IpB;^AQ5jnU2FUqz#?c?+r9k+tj7)L=zkL)%f>%qpx>9a~kj!_FLRj3KL1(ie}_Q(~G6S@lj zTs#9M#4#trS{t+l74id09AZHpi$q#l0@>o}^4hh0Ki^9_+7ssue$QuJeU0t^3R2bZ6Gs&t~o2voY1`B!=#23EsvDWa!zfSFa-@=VmbCtxZq&c9jPbug44t!qqZ8e?nVqn+&Ht1-Gt_kCv6oOk z6BjO_G`eqzj6jIlYhWS5@cj??q%FJqYil-wveaGn2y#F}AVMH^^tqhZg9>d@mt~kT zc$w!gxNuj4Ci5S{4J?;VjL7INj7&M_EVfpc#+?c$nsc@~+Wv$)aM3V%KCNc~CS50A zE;VjO(7QU}_2DbA$>pb+Q&X%{B(>9JBSn=`jN3^P!W+h=hctIr_CcxE7?CFqH6u0Z zI+)^=z_g*pLyiN@r6^PJ>^N}Kszm`%+(VI>?lo-h)^7Iv0zEBwpqG;~%8VJ~&J^<4 zSiz{x9*hoU2vCh~IRa|(vsuzwMW&=isxI_cQW{XBuS@~-I1{7;>l*W11(@*4$+{?g zGD?K2!M(bNTFfObBjePR}KO(Q`BlSW5bH{ooDr9KpIjtEAbN z3i5N)cUeDPW_AX21Job2O;Ke;`U>6Wn2e0(&^Yn}I3zSqZnXUb7gIAO92!n*Y}H*E zL&M2Ys_Z#!CuYTCr$DkWvTRjNn3>`VQ*wQ^o$d?bW++B}0jvDtiYj}o)5Q@|H?4a! zoa8h_SKWI7Y#4q847&tI%R-eX5?|DduO%U_Nu-~!bBshnH;K>Ih#U>(9i(gOu2V*z z6kz3ycq6u_n#!R%X9UvH@zrHcf4RGCIS9^VAfO;qpH)4)(bS#{rl#D8BFarc=QoPo z1D#gH5dM)T-Zq1QKp^hE;WT$gd2R4X1GBfuE9g-pu{IZ8AI42ug82B(=J>Z88DK za>umq-y25hhJNedI+o(li3^)OaZ})BNjLQfr9!Vjn|Bt4?!a^)W2XbDSd3`ZO```) zs}rs8)f%u12v{*!jr<#Is?5#iKs>?OR0YSUp+wI;5aVqG%8#e+?KeIOR7;)Zu z^m_J~!qp~Xsc>DVPsi2Fn5!l%m|5A2sCYYCO^v-tNPl#~k1_w&)RqfyvXzJziIh0m zD4MGBdi?T#vH*I=tq-#B87tCQ#VwzwHEqkJiogLj7e($u7r@DNN+rP; zpc0)4f~-7f24E6;A-`SQ;1FxT?|>io%h_Wz-N1MYVRs3!c}L-Sh3dW|irt{!?^JpD z1kr!`?uDY0#cSSEIkT6{*EKZlaA>?p0c9XLQqtxBUZz{-KlxDr^x1A+I3*OGr*4tG zL^<22ydtsnHqwmy{6i<+i8rIaHY@2A>&6FCjQsbg%NmXAH)?Vj+331Ur+Jt*Kp3Es z{$r4>rU3JNfbI6ju|SvZ8RzpiynGRg2geK91j?-yz$s$&vBUl?X{ITB54(it9iah~ zK>TA!JK{6q)r_qJi%YEvOlTGZ#6DM4YJE<&giy^{T#FyjUDObKpFPELqzHoVoR%fz zPUT2jTq2?PDR52E9H4aOS&OE&#*Jn2YD2N-xw?7{h ztHYN8`35DH;L@t`@KK(XWPKX@a5obt9zk1H0}85_-QWEu7sR-{jdkQt?@kK^eyWQv6?Mz`>+s3t-UbsyJ2q057R9g>l_?59wP0q(FTSV zv;-?x#E`#WS}wMbbk8eoqoT{w%lwH5Z*CFDa>JTkqA!$hLrW`dT>|A*$Y(fKAELUD zK_l_(TRgXA*@=ls$i;yS;MYSinqHonkn25eW(|q0N4y#pGA*|JSxTz&m7vyJI%New z=bgx7;@EY*noECa^nRP!%hD8AWa_=#T{<^{CBtvayuQ+M+@o~~+Qn%sC2yRa%WN4f zR@MdU7)`mU<-#mqYMdvL^!mq^y?2Db8K-Ok>DKBn9+igsqP(Dcox^v)KYyvx_-{`E zlO?NWqA{$2sIT*n;~$!c=ve_Vl{Z#w9GYXZ{$?%xBA44xSMmuYu2~Rs(?saUrk^m; z=HAmhS3}R33#3j+eJb$DvSMrIoHE`RCrU~x@Y1O5_yhVoW0j}T=M%>};^=7k*~YG` zfG6TAvin1J$)KU^bqGSa&CbxQfeO!&MqkUO`^Zvn5St|=rZQC#G^7tuiJEoRkBQ%AhRSIz*8)lIS8@3+qAq zEToQ)3OJ9w5ZSK!(<&I3YJHqrpyoB1A&9h3Lzdbn`$Yp^3{>|AJNj5`b3;97&E16D zwVQlDncex~-}AH(6YDNx-xKSd@c&dm_-`9F|0hyXG%+xiwg8yen*7gftxUK8R4+Y> z@X^w0F;!F!HlG`W00Ic;lf~;y{Id8gT6-!q{B};i@ey^9M!S2~)fudQSc{;5{@&Gl zGfy7Ns{2}X9SeNTA?dOL5IpC-7t#ifb-b*fpoDs($NagI>w(cm=m})P6{85b+S@~5 zHTxSO#)<}6$QQEpZPPCV(&3!_wA@i>N@w4de;2tF581`Tzj;F5_xs;_ovi=BB>s0` zsPc^tzx&|=MmEF@|6$`5Dn5WUVT9l4TnR?={myZX`sVAT@>~*m{Sw*J*Le=e_6~}F zaf4X{38a$LOMbb_D*ln{y#~L4!5xMH2F4{w?!5=TMtr7~f6Vs-8i*= zT;ut8U(0CwA?c~hbeQ|D}^)waIA6I8X0@NI8a2^N{hW;1C&Y^Sk#j3QF%f_}tD}DV(aAue zq)+ZVV&IgjDE_xwVvik9&EC(TmJ6OTlRuKM02}N{5V6XcPFTfNn$VXv1B|XMQV83;Wzv1*jslg80cR-PwD>EE0UfvQLNijXM%F;M$0DfL=b*?CMUJU> zqPtTUy>-vVp+}yYn|pasut2eV_2Q9=N(kBY%o5M%FVB0MC4WrMLjg}nZL(Wl(hPUq>?R@ zE;99s*5Z2TD%6G)k1S8(5k3v*Gb)mMNTpD^Ut{hnc94~6l!-OH(`PH`O(lKMNud!a zoBHfEoxl|D<8i*`GaW!?JdjLYe#;FOuFn{4%j)-zWZxN8bv%v?G4qQBOs71_K7B&Phz1sbsEC@$@6d5rlGYr;Cc^6uT z-eUzkN>uY=xz=ZyLp=K@%F@#t(1|0%eKGf^Ic@M3wY;KrfO}e+lbV~W?8x6ypKFAN zf9nJF_D|ts3Q{Bi7CfOn)4T!F`+=yCam3#}R=(bAB}?~ntzul9Fg!U~>Gg?txah1c zF_!{=vq?Pta$uX^Uz>C-*u%obEg|baGxd__THtge!w;gO+j;(~aTT9$y*ZM2ekr08f}f`*k_Vbe#%FhZ4(t%7v@W~y2&bRjkZ?K zNtdcDA0Jy+V#G=v ziLv%WNHLb|+1O~8$*DK$a-W8QPYcPhS0hE0gJGcrX{v9yw_aOo_`PHcx==-5#*!j# zHZEMagfls~j)Df2Lt~?r=E>Rm)X4l~ePVrSOJvP8m58g7%rzT_N1*sCF@y}6YdnAh zg=lIuGQ|n`+FaO37$i^;CCZ#6E~Muffh8T$IaPxh3^IUo&DC~oZMM$YO6zE|^6`@u zN=>Ba=+UX+{KDF5GuBn~MS;|;jccuKEj<|OGbZtTJNvlWEtP=i#))`cVorl#pW7^- z$yBuMso?oylvqq8g<_*0&h%F*()w>xN{?ab0n&(S5*K>Bkb{*R8bn-~LF5#dT-p>w zXQWVaQ8*JdR-vbedNRhE`E1OPi}6TuklhoVyc%KZ(rw%m@lY=SuETVS4Dq<{4hG}| zYFQ{P?u}Cr1_h>t1~g|{2z;=~w;GPlO-?|{NTDHAh5Hb8)vzlo_Rj3Ga3~3pAtxC? zvXg-kN3NeqCVcBORToswiV+Js7q9GHU7}CUVusVYa1N|jT?QCtfKlfrW@cwuwh&~Y zv@!+nNyO<(6Il0Iyoe|hK?}BDal;TwBA(df>N^(NYiXSkjr6Ds98JQp_0GSLZ4+)X zrHy3l5Ny}2w?&yD!eGJBer*p8V%EAGO6#?f{uO10ESP{|Q`U1AHFuKy^_~VxJ&44o ziCUTBs05%i!9(K$pYdZgP$24FgVByEV63=+EtFQw%DCXQ&;L_#$qE1l91*_`&BZ~2D_oR%H zIuTO?=2xN}D%#|+%d8yZkW>02IO0Gyet5D-VDgM@hXd{bSWtD8gR}f8bzoa(tErs8 zOQHO?pzT!Yy_A<=_u8&PjKOj@1bJN4OScYq9=%r1sv;vUvSb$H zwM7n!_?n7#Jcq${oMv}?;d$BS+$=5Pas(f}JyI44Q|ZVRze_Y>Ls4M%$#X~iiYGbh zRP;5v{c055EtKQ@RbM-vC``CPx?h^&$gdHFK^2>ZywNMHWjP<#M)c)b!Y`Q4{UHt2 zCaMT%;Hh1X%?99=9pDWLrkKSG0hxz`yg!mkR;5`uIMQLQ0u}4JQc6N-d{A4)W}*zQxav%> z7_sQGe27r5ZZTgk(I0>QV9Gh2Yn0=^DfUH2H}ymiQ3)8bX{9W8N({^fC^kCt9ViS1p0gh`|hvoW5*n~nh>4g z!+b60L6#tKB?)oKhy9HHUN&GVMY@n8A!TxYmBe@ywjAV8l+S;c7PI`q2K*KIrN2k; z#81h=jfyZpU2<`eIJROeTaB6gV;#9QcyZB!gIYoZWh6hy*~ex9tq6Iswo%*pO^bVf z++9OPGif}C6xKXLT64G+tGJG3CKdf`mwx4Qk|A$K%Cpv44UKT}v9hp9-92HeYT0t4 zvtEr^nICng(zq{Gjlg#R(su{viA8N9J)>Z8xCC^dXUILe%tPrkaCWX$UXPIwJ6EVA zr&0k>P+%(4h^Kl-nkH4D)Yh@3UVc~t>dlhn&h{}c553SZ{t$3UNoyl#)A3O%Na&R? zidN>>Ff32FPIz7h)1Y2j<&%}NS;7H2E>4^%OJ@@0b+qslr*;>bvR^Nn^Y#@Jw>QHy zVsJ5k5B3<*1ync2cTI{}-nM(~N?*-M-C!O%9?_-9H6;w;LQ+>EZf&KlO9Uu{QfZ^aO` z$`UcsyTG)@>Z3_-y3goIWU#Jqjxyj{YI;PhHG<({-x{b}8=4-maMhDQoy>NH`3=-! zCK;eoPf;C%rYGfqH^lACc36gjR>sV-+P^{S&9;Zz4BB*aLt;2t7tqUfW2ITQR)g+( z(j}LSQ7z&VfYO1p#O*J>1vYgjb16e6-!QFI)98QO|8_d)(ES^1#34Vj?~LO`H>tGP z%VQVyN#a*agZUk^uZ`2G%W84P;D#udGrO?5QJB1>nW;l`IlKdlT4j~S^{WW+!4OZk zU=kXw5%d!h2SlfaCl=Q!_g?c8yN8ttL*(0_{dnf*D+XS55k5v=-{ZZ%ky||6^Dy#t ztK4EDH5X^(R_$TY3|l0b+vD19DNkk`oXO%TL~F*Dtf&t9UQt@ijDOlpnCbZ-+&_=fYM4~>yYb|8h5gANsvMlIvJ9J$kCZr$tf@tJ zGy{8)6ljKtq3URBUZ}3%sa23BWX)~=Ts@ruc5k21SUIDMC6rR?;`DrhpsS;McLX2d z*I$cAWF@6GPL)|^8_sm07wa-4P*b3+&$9fcu$iNbQ#zJZ z;3xVbcqXN-0hs0}JU95pU2^A+tjytAv8y>wn<}TDKo$=(pa(rTIE@`&_S2Zzbj|sC4`O>^TS*?g=o~=MTt~$t1l! z<&H=?efES}S{xn5SyOh$89*J{c}o8?WCNVBx5I&byw3hvNHFb=m)Yby8MXHY>Pvfl z?FZ{*fWt=#agPPB_XYxxs-kstzM-H-Lg8p(kHkO9;V^U{vm?Gv*~`V{t{0|Qpey=m z`Ha*8d8Dq_C6au#E!)Xv$UbHM!5g^)?z9H~BI%8p)e~ipRW*H5wVUQe@;AbYChuVP z4#yja0-RRxJ-+5-_l516)6CZ9$uVHF7plNkL4Ef*fo?mvJL;fRT$1R{Ha5U>rqXsu zFic2lJ)OIB{nDYmrsiFO<3{>Kz4YJ(vTRiD)?I`g5e&fC<{^$Q`2a#`{mmHN69 zC%307+Pt03!i5YpKBc1js3OV%O<%=QwSX1szW^+?*&Scr&3isSEPB2?EWAC#z6knW zM(aUMW6LDStsb6GH5@@NBtP!rxyHev#P9I91c2Efb zF2%4gVaG|E;9#YiQYk&^*?6`?LqQiJ&W|wXXoNVW!HMqW&%QdOo)P3v(rFWE2V7EU zo#tjA-r2Nt?+}@Nd^Vbv>??2qcihb#>&SUXnPormq-~Zl&9>1;=qBH*PVrxvq~YoH zv3683)#m?VX-gYT@lVLilZg#W*vylOyV0^3sCv}#FB;#w-?U;>4d2P_`@X;x*?J4G zww2fjix-U=SN|wBATC%UtCmhcl$oyQYgTJCSSl=O2<{8pB#L#wEt$HHTNSYF`P4s^ zu6T7;R>9sFF|3E{9{3=m=B|A0enAlnA05%jKs0pd3%=t(V!KyF;8ast=?a$M!oBmu zeNCiXPaW*JqV@Y&k-p!(JhwsbcJUy8270}7LGQ}#mrCG$TD?4*5_-{^c6TL5@u?%| z9oQ~_fp^ybb!V&N{LzI)E8aKYVKB37SQILNrFAw*83o;TcY-5W(>fGGElLXni)!o~ z2Kn zy(&flzIK^A;B3B6eUhP^_t@N8?Z~=Cv&lOYHeXL`p@8WLs~H$McE}qNw<{GqK=5Zn z0O|~qV+xUf)PV{8%kmXpF15-SR5o{Xlw%&S2}fY9eBx@A%oKVxDZWt(uu)(sZFfE$ zzDWacf#||2`PhZ}{X$}vf^!k=fC9e#_Iz0a=yLf~*UZvkW*2RPq)%V@D-sY?geLww z(7)*Jm2akF1l*4w!36);=&qfusfF2p=x&0djvTTALWUF{MHqhrrQU6hImI;SzEZdZ zg^hK&j-XXUJM)@LAW4B#V-s=v3&88aH~D!R{#p!kYTfpH_Ia0goX5T&3$Tpc~$o7<`t-?l)RacJ>YQ z-RiuS>6|``SMOKLoK=!$emBYVAERu;VaI{Esg#6%o(`ax;;Y+15mFi*TZG435ll2EEoeJ-y zF(7>};Z|hNh{h_Ol1#M5bpOt8@Un24N|UWkW+@&`e=hzohlcA9?uqt;{`07ljXM$f z{%GV(5OPts%n2i0SL0fv7ZG{1b|n;)X+|Mx-VYj!dj7CJ^^ZVNB^1;8@);-i3UlT; zAuFtj$LPu#?g@s~>0`(VgT>s9M#+t_)&tdX4`|@QFgV)!Q1@idk!MGQ@m zn2R}e0#d~uAy5@d8I9&z6V?1&nYU_Aq3j(ay+(XtDucIqjeaHtX|n zILm=~p7tjAZykQOzKY&!XO|RAsfwKphDAXrhE+gNHCh6J%SF+G=QuufW%Ey;{}yN| z?v*YM{+=R9_!epTzf}9RXJnvv`(L$R8vwEjinncS?MZF2yk@y5#q_VVdZ#rMlmb6i z6qrJhIA)sq$hwsd8??r@l(sfhpHRK`RXXozOd8Cg9q?#S zCQrRd9=a*OB?sFR-fvfQeoSm6MHr@_whCviEYHN8wMrAq#)UbQd z(aptoSiZ$yjbGNtMZ{7JxDu1-)>!R0L@AN!&sOEM`rw98@n!D{)V|g$>JuCC^g(m5 z;iJd-uNLXXBn*?RXzc-YP?PL|gD{$Xyl{;)Q`4uYMuf}x=SUOI^mM+b4(IHp(3@b) zdg`peQ^^DXHmIje&zq{45AxESCujw_Mov{2G`cOtjpJbe_Sfr=T^+SSw0UBW=cex{ zh@{DiMy;Eo+g-b^{dr&)MvufKnZ|+@i&gJLHb_Q z>`R_Bei0N-ht-PqWaF43X4)Vc$BF>fYXmwgQS+Y%$30)H@KCi@6mnPpN2KJ6a_Rif zT)qDYytoBV)WEGDsyx4W%=?*yw+IYkFN+q`R)dgRm|ke&XYtw{IA_^0M|0z*UwHye z3Z^;Y@q2BEfAjM^_8QENM4!*yzkeUJ>m&=Tv+r%#GPToEThr*Sc8=d^?Z&vY-yd!-_o^Ue(e>G+;Z%mO7i|-c z17xR&ME4LJK8Z}+I zP&20`cTi?aQF^GAXZYfX_k^6_sZi^Lv5BJb|BMlrYsb;Icq@ML{o!(GMo-b{b4+Da zEG5Ve22Aeiy`lUkxY3s>CP#m3xhntvX}SNk=l_?Ms}AK6ztF&YlqPNjco8!K;r~nO zLmlf+;^V_d5Q`>K8EEx{_0_?0u#a;S`)$*G1Ct{Vsg#|$TVjCdF}SE^(8nK28O8| zh*PIx+1$;YM0S=jbeK?JtD~H&Yi)fdNEgBMYVQRwDR!kxV3i1{4Pd?Ip&m10FK8t^9Mq%c2q6eI|cXAh`pFY*W>6yd0IF9cj9wK#u^w%KjZDT<+)%qR$ zYfq#YQv0_VRN-fq6<~^F;rsfC3zh8ywVaDEQCf%AgdznO;vG~ zg}UO=9qY?kYJ0=yXkh8AT}lTaWkp^gPpF_C6<$(DXRAy~P@zCkk@g`m49?WIghhn; zuCsTavMOke*7{aCfmLZSF;OY+2-okhEZkKgz`102*I=UelUbG256HE!xjI^C=iQ*F z7OMoKP+BdUeweup8WxZlh!tk8q%f!0SzOOQd?KY*c*q>)A<#e)L~v_PY3AXjqIki@7kamfdTayj3@;{WAJ;lL6FKwATsghE1+yD?FNXKHN4hzPj zD5xnYt0CbepVDK%&^h+!MxGj)e5px>Te^IOM2ZrYjGkTLAC|_b%0?8xefnRWKr6X; z22x4vk($DlGys*Z4PhplfNh`cump8PCmqwd=1WI zQsH7dcunEOu#gSVN;*-IOoiJuUYP>4HB?|G>L&7ALqp?5^b~dRJp-q~NgOEOSEZg7 z%CZr08m4qqs#>F{N+9Q|8Ixt_#=RQmkX+`G%}dJ+N9jYAluQ)0RnDx7%dASTS(9b` zwu}W1K4b%`_;Kksk$pEb)wBtTmj6)A5ex`4$7Ttb%hDG0G@4#4;3204B|mltUfQrt zucHeg;{D+a?Y}vdRY9F${9}ztx7f;wZAOI*t#0%zVBYI%;!HfOm?_VF)&5A6hjUWU z{0mv@qSi8*Gl=1+p+2BD#{}x}^8H_d)Z%UAVz%F9ew(EO#vw0z=xrmPN|LlrkvqMh z`9C?G;*L5R)i8%2eWP@2_EQ)tYdL-HNO!emf;)dLo!#x}cQF*iVyAy@B!Nc@{lMwJ zcMSw&zV|22&mslZ&g9y;S_h+JP&-BkIGxqUIf-K+oG_)Iv#h!&h98`(O*WgtuL>fB z<%=fMPVjzN@YM*SoP5b;SmkI~I{dgHWCs?+i2co5Ug3|LL75%6n0*${u*$QPcatcp z3SFI|KghBM*~>06ZKCHbQb0FcJ01=&aH0&boxZ#G4`wTki_>J`m}EM|9SQP_oCyQ? zqg+RMSX(TUIkpA|il3lmh>VCBMpVK%YRSr@F%lu?BrdQ2kz_lo7xaR-g*zys!n>z& z8xyexMBo-PE?b(4xwc4e6<&2$RVLx0j7Ch*sWNAKi6`pecw%6!9F0R^F9xX#2VI@q zd%9uV*5LCgjk@C9vwZN4KU_gVyl7XkQO`v=yn=TOIgG4qP!qN`|9Gh(y%oulR4W(O zVVbtH1ZFE#5aN75#Pc3u4#as8Mwi~bxoW8Y7ySAa(HF- z#6>Zk1Ppmb4hv;cFkGUpcXuj2Pe8t&_Y%w*30sqr`?akpy8V{Q;s<(s1h-HT6 z%^o!(AIs5-$ef~P3?yD@3zwx5Dw{OjC7DD&xYp~DO_D+n9A?RQjekU1uyp$@1ynsx zGfd7C!j)u#`3=>zxHG5gDPg5L1+eJynVu2lm`wMubM+4nN2M1+wj=%Q)H>1>$&Evb zR-K=nX+a9|_fSZ$G}jJ-qJD(uLoPbd+XWj2L>vaXh!!-)7*#AB&>XZ6){4 zwp1Nt3A}Tpm9@$y#k&mknh5HHSwYY%>id^~b$;*r86ebs-7xj_y*I_6SIHOe;a$d%}G<(N{DA6VO!r(1I6 z*DRgNmfQnmjFCtcHHZ*7>gFh(Y8H^kn5bx}x?r4~A5iISC<+n5&Co*WQmIIANmw($ z>W7FC4=AAHES+f5O=e`+TuK-k+Gc@gc%CP5{JIen)tDs%AYpWDK9}RP!}vk%t=)E* z;bo&jX$MW?0qbuEGzj-rZwk4h;iuEeZk`k4H@y*}vfBR*O?CMW1qr;l2XV>n=6Z0E zil0o_y0nuPbS3QF7{}KyD!5RKj?_*?4k=T3vVlZhZI}|8@9@X-fKN0E<2!MkL!`>B zvaSk5wkZ7A0-I z2B84SK!Ftr%Wg;nep_l5#RbueZLAmoPh9F5S>i>1jfgS{hQEqnZigsmm=3yt6H@F( z6sC9;Gw2>)`kOy5A(7#ep<5s5f_v?P()r8fAJh>jMsjs{(X>Aqhzww7q+3C%8PcT` zN(MC3sy7K_ihd`hyH4sEu)RXc1>sT&g#kLnxbxCYLh8YO4T3@oM$5Qkw+)R_`KuDJ z6VM$dwG87C07VC0$+CmJt&UO&TFJUY(hWy?4*Hm8Lv$^Vq7B}@?yvHrifKowTP5{f z@Nkb3CGn+o)j!Rriecx6O&wIzkET=`M3)Ars-N2Cy@cD2q#iUjX;4j|K??UL^tv_1 zMNm2rxC}eA+r>~}-cD)N<5Le5w@XFK`hMS^t)xn};(NaW;$Ly(pRJ{4yzN6jSqqNa z2K>7qJ?uwcKVzY+2d>atl@hG;EVI4U61x6vsVunB_SWTE?qJ& zxyw_x$e#9GQ2vEvT;{x?DRoYr=WBtVDHtf#lLVkd&4LCj;=5H}3$NDYUXx#(<$RFy ze(Uz!n}QH9G~5o5&nIXmFBS-RA}_A<5BIWkp+m~e%Bg#?dC5~kOx z5Fd$wW@jgVEJ3x(E&UBIMTwU~(Ar?ij(?WNZb(ezFccgsxd9_ApgN?B=7S2Xr&-|^ zu6+8L+Kce=Se3^cGO26EdHM2!G`Q!=a;Da(NFQf86Z7t^JMR0wJ5jmomGoscJ3A3* zg7(h>Ymt1)_8#An29alyK243Yyi&~A z04bg_bJn43V7&ErkT_t0pY~)lwDERyALT(jfY7emxe>@T7Pq4X*b-_|Wx?M+z zhLOqOi^YzNn4pqGW8+d7d^)}33#XA776GERiHRk`J+)G%6DL8)bLpTme>ftK zU~Kjm3FjN@M9c7AbS8{UB@;OPy_4 z_62#J1`BQlV0!~OzWQ1FJra>I=Ahoz??H(R)E3({&zLhm44(EICTpd~aWbt&8u0Zo z9G)S&WCDwh)H5nNJZ8%4*XuXp3-LzBfNh1uQ*~8W5AFFoM|vK=a0=#dR5h%18NcAE zuUQ%ooU0GK5HwEPlGA_xMfM7=*cZh-i>jgVfYALaGLs6^;~*W}mkA%S4j++TNDqny z0~p_k#g|7H-jTf(YSETmA%{}}P)foC~-OuaJRL~>S)b4g4)9{lc{6GloF9swY>;%MI{$T8eyY)6hpn9DC zNNmG|0!2iT9H|T|STTPft*L=%S1VFBA_h+!LR+{J`c^eQ8>e=&V4J!@mBu25ubQ~Tg77`V<)@(y1>7!R^w7@E4y>gaIZjsC z56L6&`VV&Kt3egfYnwTEs|=^}Q(~Q?PSj;m_8YjvmEec}2Odb!@7@>g1@b4gb{2rxhpXlC<~@ ztk@lNz60shDzKH6e*;d|d8|u7E7AQqxpg(IxVv^&!3smh%^%lglCzt0oz}92z>7tU+ojfLYo$Q70jqBSn>G9trX%u z793OG1$LL#^fL`#QnOZF6)Kba&uRLmvihoJ?+THpxH{$T2S}2)8B7!4$#Hogva6?d_MzHeeog80< zO&Ddxavb?G_?9T=!RKM;D`hc<5$1Db$z;){9ifGNj6fYJP{AmFohl!@5g<&z27y`r z7zJ5v&a!ZstjnlgLTx3(I{*eu#>82Oy4s6xS`odSIzC+!$0=O!m5O=57~WLu@2nL^ zH_cdl0+eo4s$IPkQe8P6Z!hXox8%*F5UTgF!T0Xwg<7^Xm1X_xj^uSA9;D9er0~2L?C}}>%af% z`f-o_TO!bw2hCZVhveyY`SZe5;J6XLYoT_an)p5{YT6_ zv{zduAW|-SoI;%#CB8~6xoq+FC+=cw7z!-2uhIDzOe+LTb5h_PL+U6Ufw)`D;k9^c zx=ta$D+2w7wFa(}f9wU=8rlT}zH6!XT_vNtlGh9i-j;y$;Ydj`0vtZ_ZD0A74P_lpMJ9#6;jPG zl@wk=beEGE?75X)4P9p^=Ntw|=d^r1;+b&N8ep;W*-few#rx{{nFPlQS5o6b8+sgC zSo}xp!-^$vM6@S>%&X+Lrg?knA~G!R)JxO^_^p^$ z>bD(O>s%U~VlwM`sX&fpvtzST3Yin8L~@bhW+r|meTpeXh`)aiKZdk(fFK5=+@e)S1Qd)SQ3sm1}~aw z8`j1yHzSjp$6dLZDOkl_xt>;cz}u?srcS7~DC33&QtcIxs9e%BWcHmrhl>PXbcQE; z8X>Q|S$q-8m*EkF82G=sptElLZN!0yj3-vSOL@M4`n)jSqmww$;UW0?9%ZGBdN26A z>u}48mBxT)Dj=~lxjf)g~O8X zSy>D-V4)30M8IP~kl`P>GpQ$19*M9$7|me`%dq7~PQ3ke#Hr`ZS+EeKYT06Q!R6#A z7;Q@d)YGNh+Y#TpnfT;2X?7P#G{cEsH~x&=9CrujY0o0mzZB9g$6cKn1R z%c#E?8v8fRVj!Q%Ic2KTHX`hqc6DprV6&MY_x9?QHE-qbk8we$s)ulb9eJ?IW73jz z+aM}cwD-?H5KN3;Z;^8QXd#6F=4M~)PsJ#Kx%#W|vbk`dMl{(V(>e+#f~?%RnOSZz zxr*YQ@R;UQf4iixpqyi0;!EzKQ1J_=44^+U-b2DYcD6wuxH+VBn-v*1iPy=v+Cw-G%;LU+579iIxuEzHxcPEe*B04 z{GYOL|6i)BMH~!F|91{9LqSUhRRz;)^0HTL5J`n^#tKG4dE>zRuj#@fng*gnGy}%lsyMZ^Bxvk;nfM?CARITEbJxs4bZTgPKxjG4|Ww zSY`=5b%e1$FeBIGM;|{Lt}U1xuKbM8FF__6JopHW#$?z;nBI&MdP{6)a`#Oe8rMxQ z{a7AB9U!dyhY;^6c;i21+#|NZX)Ve2P=siMV4OmVc3G|tWhj9sc0j|x`DrN&hy7Kp zYK@dFe~+lik%_*EXINM$3fssu8{IpOFJync^|LR=Y2i}Nt%5m2s@yT$Eu^}yyn-_I_0xC)U#CLFJZ2A*k1x^Uydg3SA@4Yz632MPckyJNQI>rnITl_3#M!5E&x{kIYE9D+x&0WlOR#Qe8d1JJ! zJ(xg_Dq^8;1DhzrTiiZaOC_0&$AB|%LmgC6WuV+6%~0W`|7+*Y=R=a~*GB23tpDeyI-?50q zZ{NVu7uUZ$+Tv)Am-$YW_`qbG$yld7HSl9KhLyYPcnKRf|4lVUYpk{Kwlv-m$(agp zas*35$nWq3pCuQ1VmI}Af^BVUz{W7uPR!VRM5KE1fmq7lqr$? z71Zgs7i>#!YF{exw%irWbeVktbP2OdK(VF-;1^~Q$P*lBm}Wp<1qL_^btU~Lqh{#v zQ$YJWqh<&Gf7-v_oBM~pwI!X6iL1S-zOIF}sR5mZsUF?`Q+LFF_V549rxmEfcqlHU ze0is+09v>}{8f2FAu(Nl#ryvfiSrRBATFj)k?J)8fHI=sH*RdGt5qyiE?!ca zd0Hr`M^qGxUtjE68E#0NCDJUeE^aI~HfpSGIQ?!gKlw^`H?}hd@Y}pF*k7jKaer+& zciv^dRDIm6VEj~+81|#?+2zZx(!0tOtdZ^B!hv#Bx)0=_dezTB)0&z7{9B*9^*chv zVo$}hJq%a+`>7XqL(W_0nvdAcQdp86`}S#3k^O9+kcrOk5cgduu(ZT{Wp?8@KV$!!+i`Y|Volx5 ziFwI#*+j>g9QN0XSw+Rll6unU`AONy)g?UgL`z=y3CsWp+Jyfoan9q7#AsrLBe2Z_ zh;!yNojwT1SuX+IK#aZmuMw_uQ7eLm5?s5-zwov*2iYqO8pF@2eZEtF$zZ8_o(cC>Q zlEv26*3}^)QcV&PqDQ*$eRb=6k>I6-sPHTgPmbVu70}QL%}A@A8&mg3*5x>?h0o5pD5g_WU6k2Zw{Y!bfvZ-u`U!qTK21RrSW>v zlS&492z%~j@? z4Z7~{?sV50um=gDFkddI+rMdlA4LtiFe*$G5*f}iNOr!JkH3QcbN&HMF9CHtdBgQGUW&X+S73(OKd?lY7-e>_M@JmJKr;=qo;ba6^~LC0v5NQ&}!%hj69c#vawDxr=D_( zz2!GiKCAkcrY_^*M$s17DyPWwC8Ge>6joR<;^XiSIH7~rjQZPpb?-`#AOd|QI-jVXieqL{KB>EJvRkEUH=pJeKj z<3$fvo;3-|G~-w0axE3gaJX_lV9Qk$x_&41FIGylPTm!l4%!vgQ!&rVI0#cHNYUm`PPP+y}r z^yv+Ja}Ys_8E0?ikS#2#EI%(Vp1YXyukQAC;`CNO+1fe-e})t<%Qeayi%DbSkPO^A zEU$5(JP6?|GhnBx1!#u4LI?W}$S5B;T&{v`uUfpbIMblob{{;P_NH+6TYa9Cg z0I_>ssedC&P-xdySSZ4-=TLN@@#obW?p-?x0tJov0Rr@^s0gG(&ipj$ zn;cS{nlKO~3_BtrYf8N#N7Lgm%~%>!OQvcleiHCBd3udk!pQ~eakw5F$Iczn&Y&XV z;rK)>b^5KX}X2{Tp?-8nlJI3-a{ zS+_0YEX-cC00g1A0C8HbW=rN`IjA$drMg>LIf=!`Mo**-bX|WBC|ly`oao}&*Y#aT zcDZ*q`y(nf=;CTrP1VUr+d~#t_zzm*z zV>x;^QNN}7s~*t1xG4;Z_-r3Js$7PffGL15X%yUSz3Q@F!=;^i9Cda^y`xsdOl{0i zUmczJweey_eyUuvy8Lz~yFYexRnoXM_w4RAdPVK%J?8<|=vq)k zA5k^@=#I|Y?sjUtY4k80M!9r!b_DiLJ%4sbVU8rxEI+Cv$yUnC9%le)D5JZ=0Mstg zj>Hz24DHV?^l*@^rzr8 zCF2Z`I%+Qjv~>3HxiM54&2|F>sV~c`nMeKfjR?6N<>#iFUbvhTm*k{OJRyc*LEF5M zmyP+n@Db1Oxe&8*~SxKM3ZWQw9HaYUAzd7sQ4mvZ>Vd6E=NqWpJOR-(p zD!O=&+sGG-xN}hVxiUmZ0?9Y1v-^MkbvU^HHYOuFqee4!CBPS2P%)+r**$KWX0yz( z{dZX9hE}JrK5U+ibC8G=`IEN76|D?!Ayjz=PS@M92d24F4v0FvCDVxJ0YxiMN{%b| z45R0cI%dK3l%pDAX3Z8Ot@1f4*F2`Whselllx-24)E_X(;vUI zfoB7UED9<~lSzKFC9*11VckRL-VCbRW{8a1vE@$HZ5AOr7qMH2vqnMjV7wa~x;GcX z;@25ZbVO5!bfZ#f+Ow;-E$~CU>bJ_pK2+eXG@^1svl9N{oEw(Ii$5(L4sdNx5&K-#zFVEDwG;e8q4=t#34V zTm9Pl28ymptCK*Op8(PmUJjy;r(%OJVqwO5ubAYlMM!7@bCWT4#kpUazJ#}}jwZd=%~ODIe7rPWIU2MwOluTZBKz26{T*P6q|hC8L!@k2VWH{~ zc}@M@r@@YPNuIET7I3cYQLz3&S3{tMW~*-g4OUVB;-RzwM5Ocvval3n;~6)y>Fy~| zmy6RMBa%drLEO5fYBpMw;+Em?W{>3ttkI)jIwjo$%iH*1<{@2v+?s8PeM#e>Fg@#y zp{{(Ln)@s?lA!4tl4~;0hJ!j6MUzVxDFd^Y*MOK~WFQWGW`yuvK_pi}lgkh(1G^Uo zD@5A<<{osI(K}eT8o~COJjTm>LlzMB~MPh+e z;n3d<*=m~J8Fm}>x>=Du{RlN;%iwv-j}*z1bhRJmwUM5)rTW5$4EunoJOi}0ocDyE zi}bNlQciyY-0F>cuU0-h_(FMY4nQ?XQC9%I#zvEBv&)hgA>RieYRSw6=^tZpiEN9e z8maX(V1mz0j*^N%t=mz_er}b3!oP@3sHqPP!C*kN20iZ7MYOVt$u{>$wrDD8DP#;z z5VAwLmp>yS0WOvWHm=AU2d4)F6QhP0H<2PLuJoYNZuDrJrk-SH*y{)oYNECu<|hgX2qKmjgY+=)pn)-o;F>chh;=F}d=hsJv(hmkJaXPAui!<59cHBSo@eE@c{nO3fle6=mPg*GoM%Od#i2-zMm zJ^NdtniNTk(2xl(sl5o-PHF-cn2?D-dUesu@yKZay*d|I3vJ0hBWxDc<#A)UPqt-` zqxTw$=db;VlBoW|*yVBp7OId5;qf#|J$r^4-MaA`fVO;^0Zok>D>%y*K1y0t8msjl z1UgGs9#_Ft43fnnXK6Z^=y>Zw=b+(2*_Rq`pYYYu?OVZo0>U_2lsW}=&jAxdYJ$Xz zZh}G_dK7Xlb_No~i?pQF4#A{sz6!9}VXBJ9aS z@*pis%+iF!gwtL#kr8ze+8UsuKE9&d7qf^s*1+<4PV7CY`c5|c@?^OG6gl7x$oS$D z`CPAgmMOUNrX=c$;o6^jmMOaPCMEi6u6dryzw>4x`g%67cU?9E94@=TJVi^H)NM$u z1sU8j$fqO$9p_RCMeT{CltM-&gGH@|gd*n-;Kvi`R_`apyGRbAI!Q(pQ;bsTX8H~^#EZ{$;=per+fLC=H_iIwM;PSa>Px|O`H~j zo9FqXOJ9kh5130oNDqf8(oT2tPxa0)8x%1@Z-tlv477!4}c z(9vJGrOPjf*E-dfo9*^^poV3|F<(eVN+G={x3>BD)r3M+e z&%sHLIN$DiyN#fjj@;3v-zvBq7^@E2HnbaaRxgqQHK;5X4?Jn2nkYDI=?-;^KFwnw z5@vJguHMG)zYw*f%Hv`~R%+uQa!g-A)_Q75FaGMjS$CWfk15$Xf+s#YBo447YSpgk zshK3;u(q+?{FXe3A+zMlKpxI6Wca|7HoT>=NOU;4%62HLFWSp!mUnX@X^Y&$k6bW{ zeTVvw%7usrwHAo{;|J(BN%X((75OHU|KC(DOH+G&I^g%^e@a>r3KLey-}b!lpyTw? z-uVR$e^yHeewr4c3sV)sq++J|X#Ew#RtA;QJ?%!sOm(`lPj0p=OG`Al|LO5FYcR_m zBGxP{q>jya^6DwWed^=!ZcgP#nhPZnpK58FW!@Uc$(rMw?M2{BY(<;bg8@lHDjB;``RyY870Ubye8d}Xv7&rfn<7xdd|f${x+ir?G)yrKSE)& ztX0X}8q4~|)8;Fl0`1Q-Ag=#*TjjMXu&)AgHMw7N<#mo`A?q? z9^TZ38m=eS2qg2!P^Y^j@^uL&&%t;L1dD0gXfH(fbMxGQHZ8Hd95;~?D1D__O9)~= zwPdVZsAqudS|Z;_R^AZ4(kwES_g!BZq7sjvp=?7c68$O#6R|Iso-?m8PEskPs|0Y= zbdyRYaMyjd8aNGc<|c0NS6Oj41t1}D*3eScfLMXufIUYwMHY-F_M|5L%(=&kkMdGA z#Cps?uB@IHfhsRj6{U|zvAxkqz#wh&+Sin=!zdSVnD&)RWgLV5==)sY~p6KDCNWl}`jFcqg2Lrw*l7L9W(>#sLOw4myhA`NVp);S{jHDCJ_nzf`WnqcbAb#a> z#JT0vdB=I=;rbSL_G3}6A1ZpTA3h}X06E?$_2&gaB`W51CR3;ms)~PUJ)>xX{OW^PaOC=&aTaB zxz^a8314zB9DNZT))9tWLm^c=@J01_5X3jsqd;TNjC5~+TeZIx+%bWr9C$lk9RupS-?d$Fc4*g>&I+k62 zE1y*9vZB0_ow;&O%*@b{!bmJdiy$0ox1M>HrilLC)Xc~1lrUqw9srYW*!ij;Nayyw zWsIk#KpKVy|ER?LjxP7esrmAa>7dg!5dVA|KM(}?Q_ayQ;!JIWxbHk(cR4?Sk>oYV zrY*$Qx?2paHvQ41I_Q|iwK|Ho1Mv8h4qjrJOJvlJP7q@`K=8agb$-@PMKoNsogp3j zewQA#wl+?KY-9#!^En30{#hc5TNSI5?mc$pqeIdWyLmGCDFn zl2~XzhALz&JAT@4T2|}~idm$GCN71NjGH?eepe2PN z#3);)5|h&~is>j<)ZrDbJJ-^C!e&CUXcT3n@~z5ef^sO-GmpRnL}5vm4i>bk*qzzB zxtZ%6(vHssM}KcVtt@ZI>Z@777iHr7l6N>smTRS+TE`vb={{L}RP(TAw;g%0{tW*! zVs2$71I{??U4;v71$`KFb-SGrifVue=Nb0uaO?&kE>~*=jE-T!e1cDVtRJ4Zn&W75 zDEDApzIEw_*8%B3O|DH(QgU3bEBt~sHt->Jk zs)ELzoS9|?_v&vRs`;y7Y8cyJeti_79ximN$OK1|X9*0~%0|9PYVuWcsrph-(L1z|C?Sn(MxN1kar6Sk zBA*+-{5=6cx{YmwL_Ig#%_m#19l%?w`D)sSILIRYd z|FY>vvpjY66L$}e)8C5N)ibkKE}b7Cv)~ce?b}PkHU#m@AJQuzkT)9!3^W(bFE^uU zf!w-~L0iPw^}@rq{uw&3&sPp*89i*^{3JL3_8(#)sxApUn+ZQ0DEnboO)>`S?RXbhk^(*r%C7CR{ZYho!a-IQPf<*K?pEAVWu~E4H zi{~BD_@bt8gFd@va@xki?X@>}a|L{WNbd@V?~u%X0=Op??w~sd%bwAzb~xK3w{8MW z`qT8d2Ll3|27b^&fhG+QZ+_=axo>bbrxa+d3@C~W6r@KA(;JJVMu)D$fG=3@s(dX7 znQ6s{4Uv54ciJ#_4woAijafNrj2-ri_6$8HaUQ}|Xj~X|b~5sV^(>$N1&5o)dW7Nn zPWAPFg9QKka76Q;aO6g3rt7L_Xh>&jFVT#au;qGaDUA~9}JNWcE!?MxKwO=Z%)D7E0&w0$xzcy`CD>At=8+@;yU902I6ky z!+|J4Cfsm45BL$}-J~M3-BkD1YWQT|h0YBjgfr z6O<>kc3aQqFUyS`@gN4`v0+xn^cDN@ha=gMz>zEZ1=Eh^$3 zx8E^TMIeuUC0#hkt!Fyx*Shyaq|!VkFI>X>daHH(?e2kV;!MPgrSW=%lrDj4>w#KI zywl%{tb4MhH@oM=PAyTB-kz0dkuu$Pdfst7=7jUXS5wSMl|rb{4pl|IVwDI}*!~il zbNgMa1sHD@QlRffCne@sSs5fQ%ntEOz9cV)Qs<-}OS4XX$*?pqrwzMP9gg1*2z@ie z{4c*#FxiVjzi(%FkpJWH>c3C||8IZq|1vmGHFZ%uK=bNaxin}OgZu@R3y*04_^B5z zPXaA279A69f{YBJY?rbg-7_MU4i=|qnIlWp*l1=s&{(-pUl~lypHtj0pxmb3wl=@| zXqxqTes>>r%j7xrZQ}k*Ae`6kNMn+HOKr2RTjR_9;Fr(XH3A%bz`%}gt(M3a{2X;y zzr0cX+Bp@>h@Rhyb4QF=Dij=Tz`NF#$)JD&N4-s(39oTL8LlaX^109!atRd#3&* z|MsPwWlyVpvot!1zVAlJxVSFrs=(cSLdenBxL1nQ)iXmt*w$X7*l;88f@XpF!SVY? z>S_4ymV*qafu&Nj(|mLk{?o_#{iul-A}nu?dI)YuY9vKvs$^3U=A6pIR>L>Mg(_FX zCvJ|9I=QqHD5{KcJiVQ;Ak1O3qp3!-$biG6rd3Y#+n$M9DVetc#*=&y5Tjj8-^PQ? zh%?L0IW81dLnJ{0bGoNXv}#8Dr*;arRel30)$7KgvJq60>?q3$qhli-(93EKaHDa> z9z~tZkm?VPdLu$T0~Vz!^a~(l?vQSWUIaQKc!u9!Vz@FNmM1 z5ymljk$+n=4Y^8Jsaim&>H6)`iSw560$$(1OuT{*;=&&H7J?+!Hd`?5`0I~0ujXN4Rf zJj;efANRphrjKe>2*_3GqhMo7`k7+n8DoG6kQgHx}^pKrCP;YS6uH@OvYe~3#eZr*atiFQ@`koXcq4)B1>RMlOA$%pwBL+3sJ14i9O{B z>(J;}&Z(wHU9%J-%J3Rn@Jb}_((>%rXU$azf=VQjnGe4}l`DrNY&l*;>Y-gMHEmF5A1irZ5TAYWG}@;$-&V*F9kp`%SmP(HYz}yqOUE zq?!o@jcVMlPI0wWu_yUl8!uD#NtecO=H($gq!OUCwq9M6Q&Z6s_NMxWbtu+CYQH;{-t!ZoX0!%y@9R6O5^=R zo1yFk;7hNxil{CzEEw3O@Xjw{HG52E2%!NzK^~`UuBe~4pOIy#-W@i zuUvKN@+(Th+goc0p*)oIF8BQLa!F~xX20bgqrMN%}$yx&O zF!aegcaNqWcyy7-PeH*hTYG`>EIlJDevPFqPh02mWQrY)3WM8r+YrZ>g@B5kY z4(XoboIC$>{C@X7_j&I6-1}hjJUq*SU7GoKI)=t!whr~X$uk{kIrs46efr8fB{f-+ zEWFreSja`a_p_}o2?3#ACMVTirdv*G%E$z0x9HBvu691`5n(6D$l4qP*xXSY1*0;d5BB1Yg za4I``4ADy9XJJzcOkZ46Qp!cDO;j@|8+of_G_xQzjugjX*G%3u8458EezCnBez|b@ zxUeRLU7x^qU-43D4hudPxOGU0uqn3aP|_mj0@ST0wW+IqhOHXb5$Nc@4_Bfo#+oS? zRAM)8(6oiW2BU%NrHg&Xqmq>QJ}u|^A*H^pIK7}rnJdjh^09^rP@JG(jdFmSa4ABr z97^M}Aaul2!+BJY%h_Nt6k+cH4|#A|e}Y!x=#8K-{GN8h4zp)oTlTv3b5&Gatw3~2 z1>=~I?k}D{@MP=Yj6HGbp1%Vd{xEA^Qe{E9=?6p9fXK)FA{t%(ai}u^SB~u~ZOu0p zb=q|~@cGhGQr`S$oKh}Qv>!YY9cno4$yu(@anYk6vlCo1Ox z?Yq8{;WIAqVqRvqdTTsWPw!{$PUEljd4)~FG$$w7=`cogeIAQ}Ca80{+@tvXj6vPe zy(JWST(ZF)aZ0f96pwj5oSNC|_@~<6rxG|mxk``u*s*soMvln$B>2|Zm7PB1NN1cAWtK5Tkzl2d+CGP*hlW$1ImI5_PUo#PAN99?FV zuE(uxsfLRd`-9jsIg49vGR5yHmYLYEn`0_o4y{teziRY%qopc?tK1JmPra{|dlK<& z@y3f|vRvH)Pp$Y{4_r!xXCmy)gKwr7xx4V@F1eo-elV(RVm8UN7_F?aH1x$_CHWGo zce+NH`A4r;$aitWNp8WfsY>TQRHwoWbODGDX?}j$WJk{} zljre@n!8(h&Rlt;R*TCM7M%RlxHIPmuPoBzYsyvpqg#i~pt;5=$?-mz`>C`T&1FLoe0!_-B09>&k-#tw^_(5&+; zr-sC1jO`z3P+GKfK*eaY8#%jKOpae=?vW}=SC$Af$4i;nJ@v+nQav(fK;UH4zJ$En zL2Il%B278sm>GBRphw`Y7$v#m;&?CqIK-GI?!~-&&4ULJMk7C~tgPj#>friLTZvlt z;%X*o`yKaErGkW37^ig*Osw-}F-xO7nPnVMyD2H1m+{v|;2pY4b7hX*6<-ibx1(JS z?1JbeU1CIB!gXE3sXL3i1&|iI*!ekl-j9JOdq;7@n&L%jVMd7Mf!5LOdp>g| z?Tv2yR%6YwSI~P{@M+cJ8O;)!xw}n8ECm@8uCl*EC%PQg^n}nsAdbu%trMK_#g^U@iWEpxWt8JTHt*K`W8UHC(&9TN9|m|W zH?PCX?-{uRT!&I-uIh-Dn$CYZr~fW>3U8`7{BF>!DAG?@s&K%&*CV03ZL;~UNA|7( z^R4$*!WKHbMqB*M#1szfbXXc2Q=7fKH;b#BGEqS4KZRAB=%RC9b<|(?&E*KTP%2J)kLu^1 zcFbDLl4=%Q6KZgd|$CBj_?7) zjBQcIAwz7gY|ZrmO*xY*<#$7<=zbO_yp8&6s!*wYc$|wi@6N)=4vCBcgq`*+DIxjt z(|2ZkFFf5ET%X_EvfW$J(&6fjanV%T5r3oGcMGljKHvXtSdggR|FQyUXnW51fyuD^ zM;n0{d+egFW+wGx8~piBRu+}pLpRoPFw~LI|%-vZH*xlWLH2uk70& z>X}~VVPd_9e=yv03ZbAw+4wY|+9dnq%8W7nqR1a_CVypGU|{l-d>c$h^t=)<^hO z;j4T47`HKR$yGbR#ed*fDO*8B%eLs^D<`_K+5TGNuSPo!F)-EdP-Qu0*A^jmq%2`O%Y|6niD!LV1o>*C z_5~_y=}NooWH;94k}nZbX>1KfTK60uI5m^uIjqT*)}R$_Rq{3e+cN9&_7qpv?Fqv7 zv#ds64-AjDVLpxzhZT8u(?|sc?BSu;fAKBn9Llw8I@>F0tSR2@V>XUW%>5&$`wOdQ zx?|&RdlKpW&W-EKoO9iKx9vhwPAy}>`Lx|^4>dgSemzEaCN*F*n`+ zB>t?G=IMDM(aLsP_k5H2KvgDhKVKtys`9Df>aWHL&yAn6>vhi*yo!6;w0ylgj+gt< z%$}k1mr!o<7pU2;%c)K<`NcA5s_Lbrqmlh$q6NECd!$3z4EDuBdO2btuORUb zgOp`|tX=!SN%<3Iwqbt#FUzc|HGT{w zKNJ1v$oe&6p)tet4K6x<+*^>%zEAk|SaabyN7su7_w1zJ4R3Ua=XQJ&g-Rc@$A~F$ zu*%SOqB8Ouc8%;C$;&S6YigGpxptfXh;gKdXc)VbAX}4nHyut62j@8xHZ9iJbz0PQ z=VTF@-WkU+jB#ofrfF`W~Jx!o4;eh9lt$avpz(MYJ_jOW@# zv-?4szb=Et(O^|JnvyD5a=;FTa5iR|$Z(D659T-A6!*^vW(5uew3vVR6c9K?XMNt> zAQ4lSrlNlHcxXAFykuSKW0AURDv_}Qb+=U-UPv3^7amnMD@+ZqI%Q7dJXE9(a)r$H5_^MAf&P zB!B(x^B!(H98VJ4LGRM<=R*e#V%`YY%pss^%$4??TLl$UZSfwq3~~cHSZ|&D#e*M0 zRU>m!=<7n3Z=ALI;eL(3(p!EmD7ZDn7&gUF<1S;ff_x+d> z=YI1x)nz8$IxS`2h0t)G1<18P6ysB=3wZ%GAF?luE4XJFidN?z>wNuu(ad|aYEZV# z&YwfTvh1A2jTn!)De=~ok3r_JpHaHECf_O&j6TWF4s{P0ebe9f7bqxMAS@7CT3QHA zc&h3X|3nt>I3NTZzk#oW9C6Zy89>F=byOv_p*rfSFnt3FZPlOEgb|+69PqYII3esUUC~Z;#-!bT0I@utQ zzvsC8VV>hHP$?r&3$axKkPA}(9mg-bT2DUJrWOh;0C^U)g&Ya;Lv8ZN4o+xmAR>E9 zCrN~hlO*)C9zmV7E$v}2xZWvk@_O5rS`%;u&A z(0~Fa84?yM!#`zl##oXkp{S3tvj-&4L7N{VAvt?yvm`)Te5c^br&M5k%GxSQ>IUSg zBqO@sHUKJTP#;p&k}~>pD)Jmdl!_JKfm&GrM=eQ`>R6xq0}k@wkq4g(?gRtM9QWEG zG5_M`z+IdO+C?5+ZTc(J2lO9c`mx5gg|VAO-`F~qgZTr3f$+mNd`*5tRdw|N;j4qjCRN-O-%as=$-_TJxw?p2+Z8(WdCE6{PD&MwA8Wco zzfFtn z&C`*WP_4K_=vh#e6QBbp)l$Z<8)B=2<%P=MA z4hBjRC4Q|^5XT)QHBsu>&B6aCwCY+4;;@CJBkuQ2Qmlq5TyL2~94msfA7)?NTs2lX z$Tu$WBmJZdv~(2fDj{(@{LS$9DuFx$@sr@Ba+;+70|t_(|JSw!@gpaswdiB~Qx5XA zAby5{l)+VK^9;mKr>w05u?sxmIfvCGBlc$uV8yq+42=hMNHW|Do2}!V+)B5%$?v6Q$9HxNCRa;hKMec`jk8aRgEg MPT_u-fPoD1KO|CUP5=M^ diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index aa5a919..b742138 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -82,8 +82,7 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan private TextView display; private Menu menu = null; private Intent service = null; - private int msgsDisplayed = 0; - public static int batLevel = 0; + public static int batLevel = 0; BatteryReceiver mArrow; IBinder bService = null; Messenger mService = null; @@ -106,14 +105,12 @@ public void handleMessage(Message msg) { case MedtronicConstants.MSG_MEDTRONIC_CGM_MESSAGE_RECEIVED: Log.i(TAG, msg.getData().getString("data")+"\n"); display.append(msg.getData().getString("data")+"\n"); - msgsDisplayed++; mHandler.removeCallbacks(updateDataView); mHandler.post(updateDataView); break; case MedtronicConstants.MSG_MEDTRONIC_CGM_CLEAR_DISPLAY: display.setText("", BufferType.EDITABLE); - msgsDisplayed = 0; - break; + break; case MedtronicConstants.MSG_MEDTRONIC_CGM_NO_PERMISSION: Log.e(TAG, "Message received - no USB permission"); usbAllowedPermission = false; @@ -134,7 +131,6 @@ public void handleMessage(Message msg) { Log.e(TAG, msg.getData().getString("data")+"\n"); String sError = msg.getData().getString("data"); display.setText(display.getText()+"Medtronic CGM Message: " + sError +"\n", BufferType.EDITABLE); - msgsDisplayed++; break; case MedtronicConstants.MSG_MEDTRONIC_CALIBRATION_DONE: Log.i(TAG, MedtronicConstants.MSG_MEDTRONIC_CALIBRATION_DONE+"\n"); @@ -495,8 +491,7 @@ else if ("2".equalsIgnoreCase(type)){ public void onClick(View v) { display.setText("", BufferType.EDITABLE); display.setKeyListener(null); - msgsDisplayed = 0; - } + } }); diff --git a/app/src/main/java/com/nightscout/android/dexcom/USB/CdcAcmSerialDriver.java b/app/src/main/java/com/nightscout/android/dexcom/USB/CdcAcmSerialDriver.java deleted file mode 100644 index 50ef700..0000000 --- a/app/src/main/java/com/nightscout/android/dexcom/USB/CdcAcmSerialDriver.java +++ /dev/null @@ -1,258 +0,0 @@ -package com.nightscout.android.dexcom.USB; - -import android.hardware.usb.*; -import android.util.Log; - -import java.io.IOException; - -//import com.hoho.android.usbserial.driver.UsbId; - -/** - * USB CDC/ACM serial driver implementation. - * - * @author mike wakerly (opensource@hoho.com) - * @see Universal - * Serial Bus Class Definitions for Communication Devices, v1.1 - */ -@SuppressWarnings("ALL") -public class CdcAcmSerialDriver extends CommonUsbSerialDriver { - - private final String TAG = CdcAcmSerialDriver.class.getSimpleName(); - - private UsbInterface mControlInterface; - private UsbInterface mDataInterface; - - private UsbEndpoint mControlEndpoint; - private UsbEndpoint mReadEndpoint; - private UsbEndpoint mWriteEndpoint; - - private boolean mRts = false; - private boolean mDtr = false; - - private boolean isConnectionOpen = false; - - private static final int USB_RECIP_INTERFACE = 0x01; - private static final int USB_RT_ACM = UsbConstants.USB_TYPE_CLASS | USB_RECIP_INTERFACE; - - private static final int SET_LINE_CODING = 0x20; // USB CDC 1.1 section 6.2 - private static final int GET_LINE_CODING = 0x21; - private static final int SET_CONTROL_LINE_STATE = 0x22; - private static final int SEND_BREAK = 0x23; - private static final String SET_POWER_ON_COMMAND = "echo 'on' > \"/sys/bus/usb/devices/1-1/power/level\""; - - public CdcAcmSerialDriver(UsbDevice device, UsbDeviceConnection connection) { - super(device, connection); - } - - @Override - public void open() throws IOException { - Log.d(TAG, "claiming interfaces, count=" + mDevice.getInterfaceCount()); - - Log.d(TAG, "Claiming control interface."); - mControlInterface = mDevice.getInterface(0); - Log.d(TAG, "Control iface=" + mControlInterface); - // class should be USB_CLASS_COMM - - if (!mConnection.claimInterface(mControlInterface, true)) { - isConnectionOpen = false; - throw new IOException("Could not claim control interface."); - } - mControlEndpoint = mControlInterface.getEndpoint(0); - Log.d(TAG, "Control endpoint direction: " + mControlEndpoint.getDirection()); - - Log.d(TAG, "Claiming data interface."); - mDataInterface = mDevice.getInterface(1); - Log.d(TAG, "data iface=" + mDataInterface); - // class should be USB_CLASS_CDC_DATA - - if (!mConnection.claimInterface(mDataInterface, true)) { - isConnectionOpen = false; - throw new IOException("Could not claim data interface."); - } - mReadEndpoint = mDataInterface.getEndpoint(1); - Log.d(TAG, "Read endpoint direction: " + mReadEndpoint.getDirection()); - mWriteEndpoint = mDataInterface.getEndpoint(0); - Log.d(TAG, "Write endpoint direction: " + mWriteEndpoint.getDirection()); - isConnectionOpen = true; - } - - private int sendAcmControlMessage(int request, int value, byte[] buf) { - return mConnection.controlTransfer( - USB_RT_ACM, request, value, 0, buf, buf != null ? buf.length : 0, 5000); - } - - @Override - public void close() throws IOException { - mConnection.close(); - isConnectionOpen = false; - } - - @Override - public int read(byte[] dest, int timeoutMillis) throws IOException { - final int numBytesRead; - synchronized (mReadBufferLock) { - int readAmt = Math.min(dest.length, mReadBuffer.length); - numBytesRead = mConnection.bulkTransfer(mReadEndpoint, mReadBuffer, readAmt, - timeoutMillis); - if (numBytesRead < 0) { - // This sucks: we get -1 on timeout, not 0 as preferred. - // We *should* use UsbRequest, except it has a bug/api oversight - // where there is no way to determine the number of bytes read - // in response :\ -- http://b.android.com/28023 - return 0; - } - System.arraycopy(mReadBuffer, 0, dest, 0, numBytesRead); - } - return numBytesRead; - } - - @Override - public int write(byte[] src, int timeoutMillis) throws IOException { - // TODO(mikey): Nearly identical to FtdiSerial write. Refactor. - int offset = 0; - - while (offset < src.length) { - final int writeLength; - final int amtWritten; - - synchronized (mWriteBufferLock) { - final byte[] writeBuffer; - - writeLength = Math.min(src.length - offset, mWriteBuffer.length); - if (offset == 0) { - writeBuffer = src; - } else { - // bulkTransfer does not support offsets, make a copy. - System.arraycopy(src, offset, mWriteBuffer, 0, writeLength); - writeBuffer = mWriteBuffer; - } - - amtWritten = mConnection.bulkTransfer(mWriteEndpoint, writeBuffer, writeLength, - timeoutMillis); - } - if (amtWritten <= 0) { - throw new IOException("Error writing " + writeLength - + " bytes at offset " + offset + " length=" + src.length); - } - - Log.d(TAG, "Wrote amt=" + amtWritten + " attempted=" + writeLength); - offset += amtWritten; - } - return offset; - } - - @Override - public void setParameters(int baudRate, int dataBits, int stopBits, int parity) { - byte stopBitsByte; - switch (stopBits) { - case STOPBITS_1: stopBitsByte = 0; break; - case STOPBITS_1_5: stopBitsByte = 1; break; - case STOPBITS_2: stopBitsByte = 2; break; - default: throw new IllegalArgumentException("Bad value for stopBits: " + stopBits); - } - - byte parityBitesByte; - switch (parity) { - case PARITY_NONE: parityBitesByte = 0; break; - case PARITY_ODD: parityBitesByte = 1; break; - case PARITY_EVEN: parityBitesByte = 2; break; - case PARITY_MARK: parityBitesByte = 3; break; - case PARITY_SPACE: parityBitesByte = 4; break; - default: throw new IllegalArgumentException("Bad value for parity: " + parity); - } - - byte[] msg = { - (byte) ( baudRate & 0xff), - (byte) ((baudRate >> 8 ) & 0xff), - (byte) ((baudRate >> 16) & 0xff), - (byte) ((baudRate >> 24) & 0xff), - stopBitsByte, - parityBitesByte, - (byte) dataBits}; - sendAcmControlMessage(SET_LINE_CODING, 0, msg); - } - - @Override - public boolean getCD() throws IOException { - return false; // TODO - } - - @Override - public boolean getCTS() throws IOException { - return false; // TODO - } - - @Override - public boolean getDSR() throws IOException { - return false; // TODO - } - - @Override - public boolean getDTR() throws IOException { - return mDtr; - } - - @Override - public void setDTR(boolean value) throws IOException { - mDtr = value; - setDtrRts(); - } - - @Override - public boolean getRI() throws IOException { - return false; // TODO - } - - @Override - public boolean getRTS() throws IOException { - return mRts; - } - - @Override - public void setRTS(boolean value) throws IOException { - mRts = value; - setDtrRts(); - } - - private void setDtrRts() { - int value = (mRts ? 0x2 : 0) | (mDtr ? 0x1 : 0); - sendAcmControlMessage(SET_CONTROL_LINE_STATE, value, null); - } - - @Override - public boolean isConnectionOpen(){ - return isConnectionOpen; - } - - -/* public static Map getSupportedDevices() { - final Map supportedDevices = new LinkedHashMap(); - supportedDevices.put(Integer.valueOf(UsbId.VENDOR_ARDUINO), - new int[] { - UsbId.ARDUINO_UNO, - UsbId.ARDUINO_UNO_R3, - UsbId.ARDUINO_MEGA_2560, - UsbId.ARDUINO_MEGA_2560_R3, - UsbId.ARDUINO_SERIAL_ADAPTER, - UsbId.ARDUINO_SERIAL_ADAPTER_R3, - UsbId.ARDUINO_MEGA_ADK, - UsbId.ARDUINO_MEGA_ADK_R3, - UsbId.ARDUINO_LEONARDO, - }); - supportedDevices.put(Integer.valueOf(UsbId.VENDOR_VAN_OOIJEN_TECH), - new int[] { - UsbId.VAN_OOIJEN_TECH_TEENSYDUINO_SERIAL, - }); - supportedDevices.put(Integer.valueOf(UsbId.VENDOR_ATMEL), - new int[] { - UsbId.ATMEL_LUFA_CDC_DEMO_APP, - }); - supportedDevices.put(Integer.valueOf(UsbId.VENDOR_LEAFLABS), - new int[] { - UsbId.LEAFLABS_MAPLE, - }); - return supportedDevices; - }*/ - -} diff --git a/app/src/main/java/com/nightscout/android/dexcom/USB/CommonUsbSerialDriver.java b/app/src/main/java/com/nightscout/android/dexcom/USB/CommonUsbSerialDriver.java deleted file mode 100644 index 2bc8865..0000000 --- a/app/src/main/java/com/nightscout/android/dexcom/USB/CommonUsbSerialDriver.java +++ /dev/null @@ -1,138 +0,0 @@ -/* Copyright 2013 Google Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, - * USA. - * - * Project home page: http://code.google.com/p/usb-serial-for-android/ - */ - -package com.nightscout.android.dexcom.USB; - -import android.hardware.usb.UsbDevice; -import android.hardware.usb.UsbDeviceConnection; - -import java.io.IOException; - - -/** - * A base class shared by several driver implementations. - * - * @author mike wakerly (opensource@hoho.com) - */ -abstract class CommonUsbSerialDriver implements UsbSerialDriver { - - public static final int DEFAULT_READ_BUFFER_SIZE = 16 * 1024; - public static final int DEFAULT_WRITE_BUFFER_SIZE = 16 * 1024; - - protected final UsbDevice mDevice; - protected final UsbDeviceConnection mConnection; - - protected final Object mReadBufferLock = new Object(); - protected final Object mWriteBufferLock = new Object(); - - /** Internal read buffer. Guarded by {@link #mReadBufferLock}. */ - protected byte[] mReadBuffer; - - /** Internal write buffer. Guarded by {@link #mWriteBufferLock}. */ - protected byte[] mWriteBuffer; - - public CommonUsbSerialDriver(UsbDevice device, UsbDeviceConnection connection) { - mDevice = device; - mConnection = connection; - - mReadBuffer = new byte[DEFAULT_READ_BUFFER_SIZE]; - mWriteBuffer = new byte[DEFAULT_WRITE_BUFFER_SIZE]; - } - - /** - * Returns the currently-bound USB device. - * - * @return the device - */ - public final UsbDevice getDevice() { - return mDevice; - } - - /** - * Sets the size of the internal buffer used to exchange data with the USB - * stack for read operations. Most users should not need to change this. - * - * @param bufferSize the size in bytes - */ - public final void setReadBufferSize(int bufferSize) { - synchronized (mReadBufferLock) { - if (bufferSize == mReadBuffer.length) { - return; - } - mReadBuffer = new byte[bufferSize]; - } - } - - /** - * Sets the size of the internal buffer used to exchange data with the USB - * stack for write operations. Most users should not need to change this. - * - * @param bufferSize the size in bytes - */ - public final void setWriteBufferSize(int bufferSize) { - synchronized (mWriteBufferLock) { - if (bufferSize == mWriteBuffer.length) { - return; - } - mWriteBuffer = new byte[bufferSize]; - } - } - - @Override - public abstract void open() throws IOException; - - @Override - public abstract void close() throws IOException; - - @Override - public abstract int read(final byte[] dest, final int timeoutMillis) throws IOException; - - @Override - public abstract int write(final byte[] src, final int timeoutMillis) throws IOException; - - @Override - public abstract void setParameters( - int baudRate, int dataBits, int stopBits, int parity) throws IOException; - - @Override - public abstract boolean getCD() throws IOException; - - @Override - public abstract boolean getCTS() throws IOException; - - @Override - public abstract boolean getDSR() throws IOException; - - @Override - public abstract boolean getDTR() throws IOException; - - @Override - public abstract void setDTR(boolean value) throws IOException; - - @Override - public abstract boolean getRI() throws IOException; - - @Override - public abstract boolean getRTS() throws IOException; - - @Override - public abstract void setRTS(boolean value) throws IOException; - -} diff --git a/app/src/main/java/com/nightscout/android/dexcom/USB/SerialInputOutputManager.java b/app/src/main/java/com/nightscout/android/dexcom/USB/SerialInputOutputManager.java deleted file mode 100644 index c0a4bb6..0000000 --- a/app/src/main/java/com/nightscout/android/dexcom/USB/SerialInputOutputManager.java +++ /dev/null @@ -1,187 +0,0 @@ -/* Copyright 2011 Google Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, - * USA. - * - * Project home page: http://code.google.com/p/usb-serial-for-android/ - */ - -package com.nightscout.android.dexcom.USB; - -import android.util.Log; - -import java.io.IOException; -import java.nio.ByteBuffer; - - -/** - * Utility class which services a {@link UsbSerialDriver} in its {@link #run()} - * method. - * - * @author mike wakerly (opensource@hoho.com) - */ -public class SerialInputOutputManager implements Runnable { - - private static final String TAG = SerialInputOutputManager.class.getSimpleName(); - private static final boolean DEBUG = true; - - private static final int READ_WAIT_MILLIS = 200; - private static final int BUFSIZ = 4096; - - private final UsbSerialDriver mDriver; - - private final ByteBuffer mReadBuffer = ByteBuffer.allocate(BUFSIZ); - - // Synchronized by 'mWriteBuffer' - private final ByteBuffer mWriteBuffer = ByteBuffer.allocate(BUFSIZ); - - private enum State { - STOPPED, - RUNNING, - STOPPING - } - - // Synchronized by 'this' - private State mState = State.STOPPED; - - // Synchronized by 'this' - private Listener mListener; - - public interface Listener { - /** - * Called when new incoming data is available. - */ - void onNewData(byte[] data); - - /** - * Called when {@link SerialInputOutputManager#run()} aborts due to an - * error. - */ - void onRunError(Exception e); - } - - /** - * Creates a new instance with no listener. - */ - public SerialInputOutputManager(UsbSerialDriver driver) { - this(driver, null); - } - - /** - * Creates a new instance with the provided listener. - */ - public SerialInputOutputManager(UsbSerialDriver driver, Listener listener) { - mDriver = driver; - mListener = listener; - } - - public synchronized void setListener(Listener listener) { - mListener = listener; - } - - public synchronized Listener getListener() { - return mListener; - } - - public void writeAsync(byte[] data) { - synchronized (mWriteBuffer) { - mWriteBuffer.put(data); - } - } - - public synchronized void stop() { - if (getState() == State.RUNNING) { - Log.i(TAG, "Stop requested"); - mState = State.STOPPING; - } - } - - private synchronized State getState() { - return mState; - } - - /** - * Continuously services the read and write buffers until {@link #stop()} is - * called, or until a driver exception is raised. - * - * NOTE(mikey): Uses inefficient read/write-with-timeout. - * TODO(mikey): Read asynchronously with {@link android.hardware.usb.UsbRequest#queue(java.nio.ByteBuffer, int)} - */ - @Override - public void run() { - synchronized (this) { - if (getState() != State.STOPPED) { - throw new IllegalStateException("Already running."); - } - mState = State.RUNNING; - } - - Log.i(TAG, "Running .."); - try { - while (true) { - if (getState() != State.RUNNING) { - Log.i(TAG, "Stopping mState=" + getState()); - break; - } - step(); - } - } catch (Exception e) { - Log.w(TAG, "Run ending due to exception: " + e.getMessage(), e); - final Listener listener = getListener(); - if (listener != null) { - listener.onRunError(e); - } - } finally { - synchronized (this) { - mState = State.STOPPED; - Log.i(TAG, "Stopped."); - } - } - } - - private void step() throws IOException { - // Handle incoming data. - int len = mDriver.read(mReadBuffer.array(), READ_WAIT_MILLIS); - if (len > 0) { - if (DEBUG) Log.d(TAG, "Read data len=" + len); - final Listener listener = getListener(); - if (listener != null) { - final byte[] data = new byte[len]; - mReadBuffer.get(data, 0, len); - listener.onNewData(data); - } - mReadBuffer.clear(); - } - - // Handle outgoing data. - byte[] outBuff = null; - synchronized (mWriteBuffer) { - if (mWriteBuffer.position() > 0) { - len = mWriteBuffer.position(); - outBuff = new byte[len]; - mWriteBuffer.rewind(); - mWriteBuffer.get(outBuff, 0, len); - mWriteBuffer.clear(); - } - } - if (outBuff != null) { - if (DEBUG) { - Log.d(TAG, "Writing data len=" + len); - } - mDriver.write(outBuff, READ_WAIT_MILLIS); - } - } - -} diff --git a/app/src/main/java/com/nightscout/android/dexcom/USB/USBPower.java b/app/src/main/java/com/nightscout/android/dexcom/USB/USBPower.java deleted file mode 100644 index 451b613..0000000 --- a/app/src/main/java/com/nightscout/android/dexcom/USB/USBPower.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.nightscout.android.dexcom.USB; - -import java.io.DataOutputStream; - -import android.util.Log; - -public class USBPower { - - private static final String TAG = "DexcomUSBPower"; - - private static final String SET_POWER_ON_COMMAND = "echo 'on' > \"/sys/bus/usb/devices/1-1/power/level\""; - private static final String SET_POWER_SUSPEND_COMMAND_A = "echo \"0\" > \"/sys/bus/usb/devices/1-1/power/autosuspend\""; - private static final String SET_POWER_SUSPEND_COMMAND_B = "echo \"auto\" > \"/sys/bus/usb/devices/1-1/power/level\""; - - public static void PowerOff() { - try { - runCommand(SET_POWER_SUSPEND_COMMAND_A); - runCommand(SET_POWER_SUSPEND_COMMAND_B); - Log.i(TAG, "PowerOff USB complete"); - } catch (Exception e) { - Log.e(TAG, "Unable to PowerOff USB"); - } - } - - public static void PowerOn(){ - try { - runCommand(SET_POWER_ON_COMMAND); - Log.i(TAG, "PowerOn USB complete"); - } catch (Exception e) { - Log.e(TAG, "Unable to PowerOn USB"); - } - } - - private static void runCommand(String command) throws Exception { - Process process = Runtime.getRuntime().exec("su"); - DataOutputStream os = new DataOutputStream(process.getOutputStream()); - os.writeBytes(command + "\n"); - os.flush(); - os.writeBytes("exit \n"); - os.flush(); - os.close(); - process.waitFor(); - } -} diff --git a/app/src/main/java/com/nightscout/android/dexcom/USB/UsbSerialDriver.java b/app/src/main/java/com/nightscout/android/dexcom/USB/UsbSerialDriver.java deleted file mode 100644 index 146d98f..0000000 --- a/app/src/main/java/com/nightscout/android/dexcom/USB/UsbSerialDriver.java +++ /dev/null @@ -1,207 +0,0 @@ -/* Copyright 2011 Google Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, - * USA. - * - * Project home page: http://code.google.com/p/usb-serial-for-android/ - */ - -package com.nightscout.android.dexcom.USB; - -import java.io.IOException; - -/** - * Driver interface for a USB serial device. - * - * @author mike wakerly (opensource@hoho.com) - */ -public interface UsbSerialDriver { - - /** 5 data bits. */ - int DATABITS_5 = 5; - - /** 6 data bits. */ - int DATABITS_6 = 6; - - /** 7 data bits. */ - int DATABITS_7 = 7; - - /** 8 data bits. */ - int DATABITS_8 = 8; - - /** No flow control. */ - int FLOWCONTROL_NONE = 0; - - /** RTS/CTS input flow control. */ - int FLOWCONTROL_RTSCTS_IN = 1; - - /** RTS/CTS output flow control. */ - int FLOWCONTROL_RTSCTS_OUT = 2; - - /** XON/XOFF input flow control. */ - int FLOWCONTROL_XONXOFF_IN = 4; - - /** XON/XOFF output flow control. */ - int FLOWCONTROL_XONXOFF_OUT = 8; - - /** No parity. */ - int PARITY_NONE = 0; - - /** Odd parity. */ - int PARITY_ODD = 1; - - /** Even parity. */ - int PARITY_EVEN = 2; - - /** Mark parity. */ - int PARITY_MARK = 3; - - /** Space parity. */ - int PARITY_SPACE = 4; - - /** 1 stop bit. */ - int STOPBITS_1 = 1; - - /** 1.5 stop bits. */ - int STOPBITS_1_5 = 3; - - /** 2 stop bits. */ - int STOPBITS_2 = 2; - - /** - * Opens and initializes the device as a USB serial device. Upon success, - * caller must ensure that {@link #close()} is eventually called. - * - * @throws java.io.IOException on error opening or initializing the device. - */ - void open() throws IOException; - - /** - * Closes the serial device. - * - * @throws java.io.IOException on error closing the device. - */ - void close() throws IOException; - - /** - * Reads as many bytes as possible into the destination buffer. - * - * @param dest the destination byte buffer - * @param timeoutMillis the timeout for reading - * @return the actual number of bytes read - * @throws java.io.IOException if an error occurred during reading - */ - int read(final byte[] dest, final int timeoutMillis) throws IOException; - - /** - * Writes as many bytes as possible from the source buffer. - * - * @param src the source byte buffer - * @param timeoutMillis the timeout for writing - * @return the actual number of bytes written - * @throws java.io.IOException if an error occurred during writing - */ - int write(final byte[] src, final int timeoutMillis) throws IOException; - - /** - * Sets various serial port parameters. - * - * @param baudRate baud rate as an integer, for example {@code 115200}. - * @param dataBits one of {@link #DATABITS_5}, {@link #DATABITS_6}, - * {@link #DATABITS_7}, or {@link #DATABITS_8}. - * @param stopBits one of {@link #STOPBITS_1}, {@link #STOPBITS_1_5}, or - * {@link #STOPBITS_2}. - * @param parity one of {@link #PARITY_NONE}, {@link #PARITY_ODD}, - * {@link #PARITY_EVEN}, {@link #PARITY_MARK}, or - * {@link #PARITY_SPACE}. - * @throws java.io.IOException on error setting the port parameters - */ - void setParameters( - int baudRate, int dataBits, int stopBits, int parity) throws IOException; - - /** - * Gets the CD (Carrier Detect) bit from the underlying UART. - * - * @return the current state, or {@code false} if not supported. - * @throws java.io.IOException if an error occurred during reading - */ - boolean getCD() throws IOException; - - /** - * Gets the CTS (Clear To Send) bit from the underlying UART. - * - * @return the current state, or {@code false} if not supported. - * @throws java.io.IOException if an error occurred during reading - */ - boolean getCTS() throws IOException; - - /** - * Gets the DSR (Data Set Ready) bit from the underlying UART. - * - * @return the current state, or {@code false} if not supported. - * @throws java.io.IOException if an error occurred during reading - */ - boolean getDSR() throws IOException; - - /** - * Gets the DTR (Data Terminal Ready) bit from the underlying UART. - * - * @return the current state, or {@code false} if not supported. - * @throws java.io.IOException if an error occurred during reading - */ - boolean getDTR() throws IOException; - - /** - * Sets the DTR (Data Terminal Ready) bit on the underlying UART, if - * supported. - * - * @param value the value to set - * @throws java.io.IOException if an error occurred during writing - */ - void setDTR(boolean value) throws IOException; - - /** - * Gets the RI (Ring Indicator) bit from the underlying UART. - * - * @return the current state, or {@code false} if not supported. - * @throws java.io.IOException if an error occurred during reading - */ - boolean getRI() throws IOException; - - /** - * Gets the RTS (Request To Send) bit from the underlying UART. - * - * @return the current state, or {@code false} if not supported. - * @throws java.io.IOException if an error occurred during reading - */ - boolean getRTS() throws IOException; - - /** - * Sets the RTS (Request To Send) bit on the underlying UART, if - * supported. - * - * @param value the value to set - * @throws java.io.IOException if an error occurred during writing - */ - void setRTS(boolean value) throws IOException; - /** - * Just to check if this device has the connection openned and claimed - * - * @return boolean - * @throws java.io.IOException if an error occurred during writing - */ - boolean isConnectionOpen(); - -} diff --git a/app/src/main/java/com/nightscout/android/dexcom/USB/UsbSerialProber.java b/app/src/main/java/com/nightscout/android/dexcom/USB/UsbSerialProber.java deleted file mode 100644 index c1bdfc1..0000000 --- a/app/src/main/java/com/nightscout/android/dexcom/USB/UsbSerialProber.java +++ /dev/null @@ -1,171 +0,0 @@ -/* Copyright 2011 Google Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, - * USA. - * - * Project home page: http://code.google.com/p/usb-serial-for-android/ - */ - -package com.nightscout.android.dexcom.USB; - -import android.hardware.usb.UsbDevice; -import android.hardware.usb.UsbDeviceConnection; -import android.hardware.usb.UsbManager; -import android.util.Log; - -import java.util.Map; - -//import com.hoho.android.usbserial.driver.Cp2102SerialDriver; -//import com.hoho.android.usbserial.driver.FtdiSerialDriver; - -/** - * Helper class to assist in detecting and building {@link UsbSerialDriver} - * instances from available hardware. - * - * @author mike wakerly (opensource@hoho.com) - */ -public enum UsbSerialProber { - - // TODO(mikey): Too much boilerplate. - - /** - * Prober for {@link FtdiSerialDriver}. - * - * @see FtdiSerialDriver - */ -/* FTDI_SERIAL { - @Override - public UsbSerialDriver getDevice(final UsbManager manager, final UsbDevice usbDevice) { - if (!testIfSupported(usbDevice, FtdiSerialDriver.getSupportedDevices())) { - return null; - } - final UsbDeviceConnection connection = manager.openDevice(usbDevice); - if (connection == null) { - return null; - } - return new FtdiSerialDriver(usbDevice, connection); - } - },*/ - - CDC_ACM_SERIAL { - @Override - public UsbSerialDriver getDevice(UsbManager manager, UsbDevice usbDevice) { -// if (!testIfSupported(usbDevice, CdcAcmSerialDriver.getSupportedDevices())) { -// return null; -// } - final UsbDeviceConnection connection = manager.openDevice(usbDevice); - if (connection == null) { - return null; - } - return new CdcAcmSerialDriver(usbDevice, connection); - } - }; //, - -/* SILAB_SERIAL { - @Override - public UsbSerialDriver getDevice(final UsbManager manager, final UsbDevice usbDevice) { - if (!testIfSupported(usbDevice, Cp2102SerialDriver.getSupportedDevices())) { - return null; - } - final UsbDeviceConnection connection = manager.openDevice(usbDevice); - if (connection == null) { - return null; - } - return new Cp2102SerialDriver(usbDevice, connection); - } - };*/ - - private static final String TAG = UsbSerialProber.class.getSimpleName(); - - /** - * Builds a new {@link UsbSerialDriver} instance from the raw device, or - * returns null if it could not be built (for example, if the - * probe failed). - * - * @param manager the {@link android.hardware.usb.UsbManager} to use - * @param usbDevice the raw {@link android.hardware.usb.UsbDevice} to use - * @return the first available {@link UsbSerialDriver}, or {@code null} if - * no devices could be acquired - */ - public abstract UsbSerialDriver getDevice(final UsbManager manager, final UsbDevice usbDevice); - - /** - * Acquires and returns the first available serial device among all - * available {@link android.hardware.usb.UsbDevice}s, or returns {@code null} if no device could - * be acquired. - * - * @param usbManager the {@link android.hardware.usb.UsbManager} to use - * @return the first available {@link UsbSerialDriver}, or {@code null} if - * no devices could be acquired - */ - public static UsbSerialDriver acquire(final UsbManager usbManager) { - for (final UsbDevice usbDevice : usbManager.getDeviceList().values()) { - final UsbSerialDriver probedDevice = acquire(usbManager, usbDevice); - if (probedDevice != null) { - return probedDevice; - } - } - return null; - } - - /** - * Builds and returns a new {@link UsbSerialDriver} from the given - * {@link android.hardware.usb.UsbDevice}, or returns {@code null} if no drivers supported this - * device. - * - * @param usbManager the {@link android.hardware.usb.UsbManager} to use - * @param usbDevice the {@link android.hardware.usb.UsbDevice} to use - * @return a new {@link UsbSerialDriver}, or {@code null} if no devices - * could be acquired - */ - public static UsbSerialDriver acquire(final UsbManager usbManager, final UsbDevice usbDevice) { - if (!usbManager.hasPermission(usbDevice)) { - Log.i(TAG, "No permission for " + usbDevice.getVendorId() + " " + usbDevice.getProductId()); - return null; - } - for (final UsbSerialProber prober : values()) { - final UsbSerialDriver probedDevice = prober.getDevice(usbManager, usbDevice); - if (probedDevice != null) { - return probedDevice; - } - } - return null; - } - - /** - * Returns {@code true} if the given device is found in the vendor/product map. - * - * @param usbDevice the device to test - * @param supportedDevices map of vendor ids to product id(s) - * @return {@code true} if supported - */ - private static boolean testIfSupported(final UsbDevice usbDevice, - final Map supportedDevices) { - final int[] supportedProducts = supportedDevices.get( - Integer.valueOf(usbDevice.getVendorId())); - if (supportedProducts == null) { - return false; - } - - final int productId = usbDevice.getProductId(); - for (int supportedProductId : supportedProducts) { - if (productId == supportedProductId) { - return true; - } - } - return false; - } - -} diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index b634b7c..2b23702 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -64,14 +64,12 @@ public class MedtronicCGMService extends Service implements OnSharedPreferenceChangeListener { - private Logger log = (Logger) LoggerFactory.getLogger(MedtronicReader.class.getName()); private static final String TAG = MedtronicCGMService.class.getSimpleName(); private boolean listenerAttached = false; private UploadHelper uploader; private UsbSerialDevice mSerial; private Handler mHandlerCheckSerial = new Handler();// This handler runs readAndUpload Runnable which checks the USB device and NET connection. - private Handler mHandlerRead = new Handler();// this Handler is used to read and parse the messages received from the USB, It is only activated after a Read. private Handler mHandlerProcessRead = new Handler();// this Handler is used to process the messages parsed. private Handler mHandlerReviewParameters = new Handler(); private boolean mHandlerActive = false; @@ -84,20 +82,16 @@ public class MedtronicCGMService extends Service implements private final Messenger mMessenger = new Messenger(new IncomingHandler()); // Target we publish for clients to send messages to IncomingHandler. private SharedPreferences prefs = null;// common application preferences private int calibrationSelected = MedtronicConstants.CALIBRATION_GLUCOMETER;//calibration Selected - private Handler mHandlerSensorCalibration = new Handler();// this Handler is used to ask for SensorCalibration. private Handler mHandlerReloadLost = new Handler();// this Handler is used to upload records which upload failed due to a network error. private boolean connectedSent = false; private boolean isDestroying = false; private Object reloadLostLock = new Object(); private Object checkSerialLock = new Object(); private Object isUploadingLock = new Object(); - private Object readByListenerSizeLock = new Object(); private Object buffMessagesLock = new Object(); private boolean faking = false; - private boolean isReloaded = false; - @Override public IBinder onBind(Intent intent) { return mMessenger.getBinder(); @@ -183,7 +177,7 @@ public void handleMessage(Message msg) { break; case MedtronicConstants.MSG_MEDTRONIC_CGM_REQUEST_PERMISSION: - openUsbSerial(false); + openUsbSerial(); break; default: super.handleMessage(msg); @@ -216,7 +210,7 @@ private void sendMessageToUI(String valuetosend) { Date date = new Date(); valuetosend = dateFormat.format(date) + valuetosend; - log.debug("send Message To UI -> "+valuetosend); + Log.d(TAG,"send Message To UI -> "+valuetosend); if (mClients != null && mClients.size() > 0) { for (int i = mClients.size() - 1; i >= 0; i--) { try { @@ -275,7 +269,7 @@ private void sendErrorMessageToUI(String valuetosend) { private void sendMessageConnectedToUI() { Log.i("medtronicCGMService", "Connected"); if (!connectedSent){ - log.debug("Send Message Connected to UI"); + Log.d(TAG, "Send Message Connected to UI"); connectedSent = true; } for (int i = mClients.size() - 1; i >= 0; i--) { @@ -349,18 +343,7 @@ public void onCreate() { prefs.edit().remove("isCheckedWUP").commit(); prefs.registerOnSharedPreferenceChangeListener(this); - int level = Integer.parseInt(prefs.getString("logLevel", "1")); - switch (level) { - case 2: - log.setLevel(Level.INFO); - break; - case 3: - log.setLevel(Level.DEBUG); - break; - default: - log.setLevel(Level.ERROR); - break; - } + if (prefs.contains("monitor_type")){ String type = prefs.getString("monitor_type", "1"); @@ -414,9 +397,8 @@ else if ("2".equalsIgnoreCase(type)){ } medtronicReader.previousRecord = record; } - - medtronicReader.mHandlerSensorCalibration = mHandlerSensorCalibration; - checker = medtronicReader.new CalibrationStatusChecker(mHandlerReviewParameters); + + checker = medtronicReader.new CalibrationStatusChecker(mHandlerReviewParameters); mHandlerReviewParameters.postDelayed(checker, MedtronicConstants.TIME_5_MIN_IN_MS); IntentFilter filter = new IntentFilter(); filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED); @@ -440,7 +422,7 @@ public void onDestroy() { } synchronized (checkSerialLock) { Log.i(TAG, "onDestroy called"); - log.debug("Medtronic Service onDestroy called"); + mHandlerCheckSerial.removeCallbacks(readAndUpload); SharedPreferences.Editor editor = settings.edit(); @@ -509,7 +491,7 @@ public void run() { } } else { - openUsbSerial(false); + openUsbSerial(); connected = isConnected(); if (!connected) @@ -554,19 +536,19 @@ public void doFakeReadAndUpload() { bufferedMessages.add(TestUSBData.fakeSensorData(deviceData,5500)); - log.debug("Stream Received"); + Log.d(TAG, "Fake Stream Received"); if (bufferedMessages.size() > 0) { - log.debug("Stream Received--> There are " + bufferedMessages.size() + " to process "); + Log.d(TAG, "Fake Stream Received--> There are " + bufferedMessages.size() + " to process "); synchronized (buffMessagesLock) { processBufferedMessages.bufferedMessages .addAll(bufferedMessages); } if (!isDestroying) { - log.debug("Stream Received--> order process bufferedMessages "); + Log.d(TAG, "Stream Received--> order process bufferedMessages "); mHandlerProcessRead.post(processBufferedMessages); } } else { - log.debug("NULL doReadAndUpload"); + Log.d(TAG, "NULL doReadAndUpload"); } } catch (Exception e) { @@ -770,7 +752,7 @@ private void displayMessage(String message) { } - private void openUsbSerial(boolean reload) { + private void openUsbSerial() { if (faking) return; if (mSerial == null) { @@ -886,15 +868,7 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { try { - if (key.equalsIgnoreCase("logLevel")){ - String level = sharedPreferences.getString("logLevel", "1"); - if ("2".equalsIgnoreCase(level)) - log.setLevel(Level.INFO); - else if ("3".equalsIgnoreCase(level)) - log.setLevel(Level.DEBUG); - else - log.setLevel(Level.ERROR); - } + if (sharedPreferences.contains("monitor_type") && key.equalsIgnoreCase("monitor_type")){ String type = sharedPreferences.getString("monitor_type", "1"); if ("2".equalsIgnoreCase(type)){ diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java index cc7bbb9..8632cc6 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java @@ -19,9 +19,9 @@ public class MedtronicConstants { public static final int TIME_12_HOURS_IN_MS = 43200000; public static final String PREFS_NAME = "MyPrefsFile"; public static final float SENSOR_CONVERSION_CONSTANT_VALUE = 160.72f; - public static final float SENSOR_CONVERSION_CONSTANT_VALUE2 = Float.valueOf("5.8E-4").floatValue(); - public static final float SENSOR_CONVERSION_CONSTANT_VALUE3 = Float.valueOf("6.25E-6").floatValue(); - public static final float SENSOR_CONVERSION_CONSTANT_VALUE4 = Float.valueOf("1.5E-6").floatValue(); + public static final float SENSOR_CONVERSION_CONSTANT_VALUE2 = Float.valueOf("5.8E-4"); + public static final float SENSOR_CONVERSION_CONSTANT_VALUE3 = Float.valueOf("6.25E-6"); + public static final float SENSOR_CONVERSION_CONSTANT_VALUE4 = Float.valueOf("1.5E-6"); public static final int SENSOR_CONVERSION_CONSTANT_VALUE5 = 65536; diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 7fc39cf..76a4c55 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -31,7 +31,6 @@ import com.nightscout.android.upload.MedtronicPumpRecord; import com.nightscout.android.upload.MedtronicSensorRecord; import com.nightscout.android.upload.Record; -import com.physicaloid.lib.Physicaloid; import java.io.File; import java.io.FileOutputStream; import java.io.ObjectOutputStream; @@ -103,8 +102,6 @@ public class MedtronicReader { SharedPreferences prefs = null; Integer calibrationSelected = MedtronicConstants.CALIBRATION_GLUCOMETER; - Handler mHandlerSensorCalibration = null; - /** * Constructor * diff --git a/app/src/main/java/com/nightscout/android/widget/CGMWidget.java b/app/src/main/java/com/nightscout/android/widget/CGMWidget.java index 47a4c4c..98f92d7 100644 --- a/app/src/main/java/com/nightscout/android/widget/CGMWidget.java +++ b/app/src/main/java/com/nightscout/android/widget/CGMWidget.java @@ -16,7 +16,6 @@ import com.nightscout.android.R; import com.nightscout.android.dexcom.DexcomG4Activity; -import com.nightscout.android.dexcom.EGVRecord; import com.nightscout.android.medtronic.MedtronicConstants; import com.nightscout.android.upload.MedtronicSensorRecord; import com.nightscout.android.upload.Record; diff --git a/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java b/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java index 527213d..abb87a2 100644 --- a/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java +++ b/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java @@ -19,7 +19,6 @@ import com.nightscout.android.R; import com.nightscout.android.dexcom.DexcomG4Activity; -import com.nightscout.android.dexcom.EGVRecord; import com.nightscout.android.medtronic.MedtronicConstants; import com.nightscout.android.upload.MedtronicSensorRecord; import com.nightscout.android.upload.Record; From 264b32442dff3fd59a5fe1b53581617ff8898c0e Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 20:03:11 +0100 Subject: [PATCH 23/62] Various tidying up. Removed other logging libraries, just use bugfender. --- app/libs/logback-android-1.1.1-3.jar | Bin 493903 -> 0 bytes app/libs/slf4j-api-1.7.2.jar | Bin 26083 -> 0 bytes .../android/dexcom/DexcomG4Activity.java | 40 ++++++++---------- .../medtronic/MedtronicCGMService.java | 3 -- .../android/medtronic/MedtronicReader.java | 30 +++++-------- .../android/upload/UploadHelper.java | 15 ++----- 6 files changed, 31 insertions(+), 57 deletions(-) delete mode 100644 app/libs/logback-android-1.1.1-3.jar delete mode 100644 app/libs/slf4j-api-1.7.2.jar diff --git a/app/libs/logback-android-1.1.1-3.jar b/app/libs/logback-android-1.1.1-3.jar deleted file mode 100644 index f63ba7f1abc1bb4e6e5beaa33fad920eb0bdb716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 493903 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

TYr!+mGUq?Q!2*<^blB6@=_#(?A&tN8gy|K zj3I|~w(^aV8=pa*m7bN({d|5Vv{!IPv4m9#4sO8tC$3{w;xa;LF`c^MS+zog*QHd1 zTqCP8n%O7KCs5;Qk;8F)oXu^FtjoFrloy@8_*WXW;!SXy=?eF+dq z6`l+se&^eCBI=u}Sa%Q#g}L&FdGc=a&XuA&YFX(ioe*9Z@cIP->0!wjK;bIdLRu&4 zd5Uje#_hZUnWWDPEV|T^VIhjf-Q{_$%Gq-6KLAmTGQ7c0q_|j?_=ulo_a{ik7o(>s zxy@r9de}galvoU24b{5|^pKrMl4R|qp;k#ryl0Y9xRRCw3rMGGgHO4T1GFiNlC5^` zv@V3%90!_=2@kMfbAUgzOV3e^IMUzcR2Cs+_!3oQsnBAYI}ws6sn{x4I`?h_Y*)Q+ zaoSAM0ZwJbWM%fbfx9Nrapk2Z!OIfBuT<+9df6A9ka40aF18LcmB(luwNs{&s$?f8 zc}4ircKpy42s+5XRl|h>&IapvD)4)??ZWa>?*Vj`jpCM&`7(IEdA9uk_T~EQsvy25 z@};VztEz!qVdzsAqDcSX?^c)VQMuwr?TkP@fJG*UTAxXTDRV6=+E};JXJTnb!Q?Q+ zS3D|)c6oE`p+7XsQmM}$Bfz7O>tPW<>>Tj>@ltZ1M)D??4u3pDw2`#`knfXx9EH^o*r1akPUOb41#()&vGCc=w--?plro`v8Dp} z1C0W7(gJeD%%E_AN$x(r`dr$yvSPbfZ$;~{LOr7fo26QNNh zqubGl+m~YYN+(XyzJvc1Q0jFH+D-Y&q8%@hs`fK|Q+NLm1fXC4 zooX{7PXfT@GzbZ+{vILRXS(*(np8E3s136Vv6+Zp$OED>5TdfF8LxFwGR+_E3kkq^wF z#`D;t@HAHw=oZKHMzxPeHNxdBxZF}*yeVEb*PB;5MR3eE*s)TwU6VU@8%c7F3Ha+g z6@bKYRU-{vaU&Jqf%Xw0Ux&mn4Tw2nErtBSns1380nW5H(K00LD8lIJh$34Ox}i_`RBEkX5(_O>7qRJOJ3=75fRy`K+UNp3dKefBj$1gVb>nti4} z+oEd3S~?^0B}nZG8au)!N;SpRauIX=LS=o$fql<|Sw~3BpQ_&mbD{%sJfYP+gQP*E zgDn_xG5I%bW1pjQxvr{%-7msLDG{{5XR_Wb{dM|!jT|FOQ=@UpclN@O*2S+W4*~db ztKyx0>Xew1D0!X&ASGT+X~vMVJ!QDtqU&f%8Kk#Y;B!3K5}TbL<`$N@hN=*Hbp#mh z(j&+PtnN=BV>c%2aG%(f_2agOC9gcixZ2an#u;xPDi53?x5HuA6FsqfTP8&BM7X|I ziV#^#9S((YB5@!)JhPA*SWtaCoA~1$)9LzBloPx4*~(XS$VFXGTfOIMHDsL!GjIZ| z?lOjb#AX*g_1TWxGa8&%-<-}iMb+$2LdTY@4vWby z3`FmW!rHAWr9oy~G7ZRggA6CUX6#Q0`S8c@CT80{f53EfP&=sf7b_C?kIK$hgZ_V% zKfbbaGlMUKUPmVfDLv~i$LoJ_B$>))3P>Vo-WVvTN!QB3gcP5FSdCD|ucEl*bi@D2a)89=Png^tW#?jJ2GmTZ^l(ED~5eNYHQX zL0gO%Hn3NXzgKLwuoV;uj@lgiDl zR&wzM48f2XF_i1;^^JRHt^q}eBvGqvrpI-?r1uHrx&ez{0rjmu z=Mxl>MLQUx^?(_xNKklj$)n+Wx@pd%y=c6z=x_ zK_VO3uwE(G%bsqp${#6Z9vuMva2da!lOZV|{uDNx-xWPeTaXq;B@#FCKqu5hh}G>4 zo69v&eIH9|{Z*qPL#DhwNde4CoQoVxF#`bcR62m}w1);vl&`HoSZ`MdmIuYu`83OI zb)6kw4SS)v*AK|}(mY6pvy65S%_c2jwDen!*=vA{S#-B_X5fXKLEMiH_=3mD(fZtE_!BLv%EX zj8N$iNc6 z#H(V;Qf@yQyJoK%aa5lvIl@G342fLY)oI+v;=Ak!ZF(ZJp{W@cxyeoXZ9n#ircUEp z!rtK@mgiwKp}4=_yrd|fQBp#f-oBA<&MwusSrCgok7N>Uo}N}%f`u!KLfIFjqdpV` zioo4F^j0r}=8Sw*ebrD6pY3LgoqY?*ziy;+liFjVBR4F0P)jGQ)@HUvvqf7Tfq|c_ zoLz2I0!rSxkRTmOZ+01mA%+1%*(M(5MH&5pI|dAk*@$3+`jv~wLb8mSePF+TBZIFs ziG}(on)!5ko5;KWJ@7&vcXE;%UnW{a0t}bd=sf}Oeotrv_nKHQ{F~_g)3-po2QUP< zsD@0IJ@BPl%km^U$OU4}v^BpA0&#Ac37AKWZxu``HXoK|nXEjBuPjHw^e92tY)!NR;)a9u+y4)bP? zP64dCFvTX*BA@|&bzM#%;0cr)j(E&5N`RjF0fc3o{78++iaTxab*DtI5r7 zcPY5AQ7=Cu_|6Ivjs%bK;lxL6TMmC;ms|k(DmaJ*oHe-oraUuTr!!b*JGQb2X}xsR zRC1AV;hz_VN4nqPY+uhxXD#QMQzadNMI1>1GY&R-4BL!0+@p@w5FehG)Tbo=GR86^ zdhguvNo_4V(V_e<4D&l=0&BDCBPIZg8(L~F9E(`oMrv~kc=*^tCF^5CWahJx^yN@f z>!LW}s$d>GrKQ!ps5OrrA=H-ET(m66y~>ym`yJ@*Pb(J~sLi8`FP#k%`k%5r%)fyV z{jd5fBiH}0g4#c-ul|!D|F5Bhob@c7^!~VY;D7e($b9*beObULc`2ah%DZDP*Rf@UT4s;hdHN(LRExh}sK%F5I`cgyRGC7fs`dgt zD(ExBPu!9BII@CF{0laID+C-ab5mq=8>BhxqES6*3S@C!8Ld0ef54)jFdW+5=g%N) zOuaOc_lCi$ZEdec37bfqR{{4l0>7tyCGcN}pV-Ch^zk)&3IEu^^B=m8|4hvPYkrNa z9sf1SHvbkzJ~<37$rv{f^;)J49fPw`-WWSSq z%|H7;Y9s%ly!-E;!G8-SkueiCbG&c^Ta38Y{NfU;aHA@kqj=z@<=SFM;N-Y5(4dBHDjn*leCxZRvCYE)OX5O55&x zO_!ja*%JCaYUd!HMAkeEz6OfuKPlzuSz6GSYST zf9I5E4{hhFh{#Aq#TCM*Do8#X&s_02dj#R)e=V{E72-b{^aM5HmkUJ{`=zsDW*R3N z$hj;QDH?%=cpM{pDMC&U$e+8x_A56ikzBlaqER+&3Ee1vqh+#04?PhgNw%p!uwkb2 z@*E3J{Zm?Jpax2ald)IS2W2=kwBFt}x!O#iO$6UbM4nuwKNM+ChPp4=Zc5lfai-sk zpGZ779Gmq)4_axxRt*PHe8u?B6;ds@6vb!%C=27(0t?Ocw#efO z@FHq^uxmn}MdpOjqfHw7T)E~Y3eB{-=GN#8q{^LDr3C5QpCTo~8M{*b*P_7v5-R_m zF(dn%z$aj1?eG;v|4j}5i!W2uP?+OI`alUtf)j!yb%oZZrAqwiLWPfdtG7^;ffv>YL<43<&#_;jg^aie!a6BwfOS0n7dF$mdxni@$lQz66BJa%3VAjcV>2Pm>+(mp{;wPPCq@>nVRhmVSUb^&33RU?{-f-mM-mVFt z9CUxiRkNDe&xmoE17QcKmroGF>foL2#)KxwEH{1FlJH+_3264YRC+r2m1Pn1`UC0npy^aSKFGO2mvaR?K% zXo;G#J~=z2A*49FjGX*iFLU=O20eA z3u;D0)-l^-nMOokqhKc)is9j~>O#U=MLLFaFmk8z-mdPLG(I#0vyfZ|wOgH5U#(dP zO$Tgu<$A(N#D_F9&~+2E**S?e&hqePLM0t*MLM`7s|b%QH3DB1^tj$gG`ft1Wamj~ zOS>w9;%yA!f(43|=+WcMEIL~~mT0nRx=GueP#J3ssqwS}kWQ_+UziQQeyLHNuJf_L zspl3YK82w#>(hpc1$Fu;R?BserQy^GBA+Z7Or5hl#w=s6TMb#Q=fmW6n+gm7t|xjW znwaLo$q2q9YXL%WMLsmGZ&8D>7pie4hAt?*AY?VLm z5Y^$TpE6ZqIJ;{f@{K_vAIfezy^bCT1(qz;WBfmm6ZvrLo4ZYmV}rZ($E28?!wH=wP-r0%RHf zwMPt}kuoX1G*4yb)B8?rSnDLoVn6k!=#+88IFlA;&ogNPX78JqCDb|Lieqm!DF5{C zm!%wL1?>H2fKEy#Rb%?vhwlH_B82z%d(qLz)$w2T0`gKah3rkf zrRwv|xWaARPL&ej*S0mw+~u-pZ+)Pm4VrMUBXT8{90kpHATn$1hg%v6)4WAAaX5H$ zG{&o!s|-Y@7fZx--x{p$Z}pAJtVSxzV7$&nmEa@xY+Wcd{{SPhYf1>bL!2RPP|2OU? zDnBbAx*&ae0;a&B_=0WfBMrpllr)f6B%#D8TYb}j8^Cb}mrzx!ZEo8+Hv7G}`da_+ zF`%=Go=KMHROEarnR$Y{aN^+s6lV#ainnF6`Peblwl&7{`SAhzbK^-(*TJ3AO_?P= zEekzqZf~UCnskJk%YuwSx!97N56pL!;U*zte&3RKg~d}?OoJ~0+)|aFF$BVw${Xsi zAWgC)Uwp|@o!~Bq_n_Kb)d27`0RKl6M1qM?r?5Pv`YV;dgfR>l&^WlS>nQ4STt$Xh zx#!)m8e2XZp&XOhaeSEG#KUkr027SqqwRyT5}%jo#~v!k$E#MfI2|jRNGI#B~Swn99^I0E}vq_`or1$Rg|+Q4}RV z%gx9T`2<&VhKMJfqD#$6%_MLVtC6MjEPI&26TwvQe;U`0Oc9ofF=@r@{m|E|&ynM2 zQm!@iL!uJgt+tGkllEIiAEZ7k<)d=gAi>*RzeF`v7asR_{Sna-AsY>nv?gP1j8xW* z=DVmm){$URq2^c3(CGOyiO;tJvW7d)Ok8-8JwnpjZ+D$5UYWS1-p^Gvhc11t-qhEV zu}niwZSKy@h%i6|2t&WH;moj+Ai~)ZVm^LM>t)|^>$qkhQc1)bwMm&!SYEe?4) zio0S=1(d*K6Mcp@3@;b9b44DlXrvaQfwS+oy`F}}!wIb+wo0sWQjlIN#WY*c10X*@ z#a82Brq~Awcbc6j3YI;Qrl}whyOsjQ5Dk>B{Eoy;!({wP4mDu7q!NoeFem=wfu}>2 zeu*%pT2)M1ckQb*DJ4m_T8|-zz9a{ACFTmB*-lqym+gee#zD-(9+EuV{Z>gIS5EjK z!#MB?qvD%OsPK>>1A95Cnz@`ntcYHz}kefizl`z^-GZB$}r-NQFJGOeQDnvMG z_BfcG3u;xIDjy3?jU-|DAcpkrE93JUfC(Uy7&eJI9B#~IIlWfgWwb4K1nhMU?=aSw z8o>*rQ72I&r$_TN_kao1729_-apA%XgXICQB^`psyX2>^_?L!&2GyY~uRa~K!a&N6 z5}VRKZ>IP{I&;}yqiuKaUlpxWT}GcVU`G@^1<+_Y@95nS0o|=;=(Dg5-yWm9W`h7f zXJGuhADJtnxCz2LtMX)4W$#u-MrzFV!@T5&W>$FH>q}2=L0_D~j2r=1cW;-mx}q)| zmf^cXlXBhqkEX?!v>c@-^&WejV6`4+owl%6D_2p#IYWXq``OviYw$lX)vKDPKy9bJ zqT+hLVWu|wpQfAQhH<2dSLa$iT9Jkg?vEL;6+>`5jMaHOOp`~K)SvSbA84d|FJNRhYeVUBS;1 z%ea@L`v`xv+{a7XIJ)0|nP+P6p4{plySq(;YNEl}|GFV7e&(deT4&d0o^aWb!~H?cnbAW79FJ84bMv`Ta$EwEiRQLGri91bd@Dj_rbGXk`_50O(f?4Cw!E2`~N)arD{RNXt{GMPG#2c6hM`NDX0@O_%?;BS4$~cPej0 zfg@{k@rmjw%GWX#31@P-SPO`RV)fUyJEC}6XQo8pkT#M!pufsE!Ptal z=_VC9=EyxdCXCz{J!U}8mWrx!h=8(;F6dDpn+AJ9mf9$hU}!u!cFX8!p^6`8MnY4( z+a?JabTh0-HNMoRZ?3OLOEhQQfB4dp(Wi-~+rpt!vDnK_+595^YY2-d*@9X+Y5`)w z+`|bY4$DE&IQLQwI5A$)`w2C75oFADc+!`8Omia=y15p%h5g0$VXFbml*&PgXlON0 z0E}OVVju7_ULxv-QD5vlBs|KFV2v^Hfxf>}tnM8T>;C)JL(-cTSYY^Rx$JqE7h2;& z5>%dZ+OF}MpLd3L*&GJRkGsdx9`96IXiUz)->1t4zPah_(Ke{7Hg#5Q$Lz^&e1m$R zp2j6^mxvrz=fKzE=KVvA4_iBaCz5! zg!1L#?03YwoF8ex#lHNXP_b zrXdDid&+7E<(n)TS&`P=S9cdUQnPh;nk-JUx27>(@r6a?_cp(KpG_MRj1LI7I}z^? zI42e#EeKQwvIgVtAUam1Xyz=$PV*KlOp!aHHg@Q+eg!Y^SHLNm(|5F-L!VO5=i5^A z+2rFD_mQfUDfX$?|CpKVOtcx;pb!#sPu@H$ayfn{tjM+QJP96S3AsSHqsyZTJUB5W zj#8GHCAl+W$t;+Pt8awAKt*u6-zaA`zd>H|$}BL!knWP2y&jyyCtrWzqaEF%MQ|!@ zW;ex5$TST(`;~kYU92s>t&xX&)ecdWp^c+Ysk1gu(nIy`eg)#o;_Csl3AKrTmAYLA zbUCoK0+0>KEwc^TP3GI=OM~PJ`h@T6;`<8JiRKyF{l5L(mj>{6?%0|q@RPW26~J%g zC-W;N03Apiq?9GQ?CvFh8@MOoD=7eqZ9HG4YGPVI6CfNAlfb7(f02M&`tG7`lw}lF zQ0^a34&9aAILoN6NSwsy$)M4Yo(xYh-AzAjkXgTN5!-&}#IuFRg5ZSCf`6iYa`rvy zHu5do<^ZbnC-9B_`J0pKvkgf5+ZNT8+!Yr9F5ni$mDl#`S5oqyNAO7O z^jx)o#eMT7lv}kRx-&o8yI>0SWK8GSu=94Q(sO7q|AXwsIJQ$G4$DHc)5f*f=g&Mg zvmlmV@+*hcg8C;;>F+wzjQ+BE{Qn~6|Bg8R_gMUHjz)a;_Ihsr-I(U3FeZ;E2gj8> zP7v@bl%7)(B=RYR)0UTzoMx=rPMj3whBO>nfS#}?B{V*iANe2*cN>y*Ruqs$-gqQtjGXOyh@^tOjg} zrcpHx6E=6_p#~hbsFu2O6bX7X0n;&0qf?@~j3rc-#`1ECzM&sdsAEDdNj=2_Dt>Ty zz(076uezMWDvc7fK-4tG(1bk$^;FXzRl}S$bZZWk%`X*}YQ|9&v=d*pFwprxW(-W= z82!hxh62A$;t8rN#@#9sRbsH9xof`GG)QghvrSEl3|&7zP)6R8iNARyl~`G;M@4jg zdwCYzasCdj>XwCRDElk0&XeyBAEDbw@YB9BHjz&7J+a(=lgf1xoljGU@+U>JFnFDO z%_v(?2(wF4%M9|h&JgtGvQ$ulv+`#bZzSNJqe$gOZK28;s~`fIHU~d&U{bKe!%2rN z2Zw2u5n5|mL*!}6k+4bhplvWLmvn`qWbvwMvUCDSlPQ4Nh|FlrsATD@B z6;224v`PwoJ}EKG&gU`m(@Z2U0~h~~Sp9L9vQf~GAdvZ(t{4f((2!OfrGSn1LM~hn zmzz513p0MiuUppyI#WscKm`EhU^0pJFTJsMI;eZ!&3C@6UJzMk5+YuWG4g5@W=K`A zVfXeU@hz*STt|8GeshIctK%1n)kyY@B1KLe`#6XAKKJvVx-KT8An|c^tBS)9&gJ3T z=MnshpUqJms=h+;H8ib{(kK)2j#1q}4EfZkjatJ^Ltqz9N052SmbljQ%bA0(xf|%> zy(o%;rOgWirWeIyvg?Ry%bkY5Y`S}xlNVPi2(s8xfY$$unDt368Oiu!>Mj1Ul<^O< zf&ZjP{d?gH8JODq%RBWiVkl7F!Uo}M+4osMTI<{yc`4v(nc7t>s_@16z2<_WC}1GW z!5X)fS0lT`c04_)VE~2_|3MDfUHUD4TaFGx3t`XdRH5Tmb=F|b zD&r+8&*&}7+iQ;0Uorz$m?Wg7STQhevubnVcSdk|#=U1lz7-V@1LilMO(EhI&pLyg zL+Xme}*>Y85%KD9Sj-w0%HbUoIq}B7xnpDG%Z<@lRF)c)PjPOaf105G2WYr!} zqhhP1Uj?sNMX{>YgTCe|pi2Guk(k)Et639tW*1=VPs=h|yp8f`xt#YTx6F-~R~Q{e z&RBq`DiS0lxvN+$7Sj2f)sKd`6dU=VVk;<%7sZA3rgY&xo&0i?Yj_t&q&(?}ff@fX zpt@8liQEilJ6AJH1d19sJpQQ;rJP3F38Rv%6Cd zpE>P>;DhWNE#@R1RzXt><+$=|&`#05t*u1{HDL?PmIvmxqrVux%Lij_5{c%b3thc>5R zqU~EY2;ONxA5VIKDO~9wh74=Ss8IxBU+)wI&rNC)Y)3pM|51Dk#vo*&$tEkNe*APw z^No0bb-j0lk+oDIwF!4flAJ|iHewnB9`OF__4mTd|GK~bn&toI10!Q4 zzNF@_MzKJC;4{eVrwBW|UHx5Uuuu#XVq!{K>SbsnKcNdMC$i%@MauO{{nSzq#-cED~x6NEJ&OxD-;ivMN2;I#XFDS zbB-ncGA4+XqXJ+8%eqXpo|=~`*oW3LtJca9x=_gs7EAW0rA6kit#;Yz=~F}@lSIVQ zAlZk^=Xj(ByA?R9SN6J6S^{EsjJ=H+Fa!aogrn!v#ElvNhlWKQR<#L?IfWe;tC`VC zLevh7dFLBg*M?oqW$X}TTU$>6s2Vv{h4?fbBCc6wmzg|b_nD}Pt3c7Ay9IiMGj7Q^ zUSnGXvS@Ao^c(Q)nhCxZexufV#yv)V9dF$zF_`zc#__3Z%k2Z$cWHOJXEq`%U5e0 z7geYWo1HXVDmamzq7j>zNIeMS*jts?0_OuO5UCY-CUTORKr2-nb(QYR&k}2*hyLgT z2u@2800RS(lyU*0KGYF07^NSA9+NwQekQm4I_K!|tpa3fuZNXkrnX-;*Q0J3V5CmK zM8|RcN*8j|;oU!e3$Z@E{Kc!1M|QohNpOF1?j@C^wLvd%4EN>J<{($Urwhc_ug$)= ztJP@bl<6O2%j(CfFBdSg3W2*Bk_RpKar%LKkxqim4?DyO$43(-JmUvvfK7mB)}%@x zdE)ZK%^;11q9X_Q49l=ntUX>ij$E*hYc8%W=%nUN>UkGQbRe~ORZv9X&E`jjzVtYv(rHS z?*`390;ItSu*2rwOg0B8rn|g6DsiiolJWq%GHUaRUdL>PwnwwACp2qyFQX-9>t9g} zMlFcS1C-3RpZqzmJaPifDo5K^LUdE_`TY41B?G%zixopsn_>L=z7&cG$D|58h&T)S zi^@!;wUe37s1g8NZU|%7^Y|r{Yn2IF10@46eOK9%Q>>oQAkUo|SSgi9N6md5MoTZl z_F&USyvWGEh0*r1?j;%@{EFnyBDCq1n)D@3>+NPU<5pw4cZkJju?SkUDQH_{)1OVL zzk9ozO8)d=4ES;Nv(qzVI$c=q0vdSbi-8wUqS+N{j51p~8D>pQ?j!4d1r=?@Xo@|@3MW@#jSk}}cG<)h5iYi>!32bkh4{uRN` zc(2Z4yCAp~m!Ffi;wAIMlLvEM1Sy+8icrm-Hw(45V8Oy76@L>4Ju{6;V|q-t-*x2% zAA+f&H3Tb<=k$%;khM0_Qg0W6;RrdEqKYawa|&@gb%FchTF99tlE*wNZ{zq{?ik>< zFVhhCi6~-=7E?Bpy0CL(2j6D6x+BJGgLIO7%-qfB&@#Y1e z(QonbmwtxJkLp|#?6o=UIu`hm5l*?KVQs2H(Dwlp{Q=F1HmX_n5l&$XKI4*pm z{ekm&OM<@i@MR-5a~RpuxwWLw`$_W$>*=%5Ve$Qo^^^zyC%pVSV}*Z*SxG%N8z)B< zdp%p*uN$QPpObNIx%~D)@6d^B7oX4egV#=hu;T#FCj$e6l7FwqP+fh{=+NZ@zu@--)4H}8|qU5Hwa4B{Mb8(|tmER2qU4;T*dkV_RJ zTu)&dI17Nwj>bOBsb+KSfN&#Vtx>C4unrY10`f2_$A<_&uZWteW>kk5 z+fi4lp139*~+Evhomq8|Da{w;Fa3wMt~YF$BH}+%5jp|KaQ% z12gNIZPD)7wvCQ$+qP}nw(X>2+qP}n9XlPKeD8;Q_PM*?bNBs`zw^nOYt5RYYK$7S z$fR-TODZ-+#5~7I$~X_UqXtYmOKRa3p8MdfjrfM3680Se#4yS$l%C8uh#|QDA%F~R zzzqBYsy~iiN=%#+hsLyRa{t)h5p*pKpdFRU*8%Fa#8e^uGEa~7WU;c3JjnC=vBnK2 zHEqLu(5^5^E2mZXsectiX4ryi3vIB4mY8y9UooX z6e8QOFFuJbvue`3rHN5H4?=s`D2#G&hEh_bL>J@ua2IMiW4SHSbcbw6GOEv4&Y{@aumA^>A5yDyBH^h zB67o^E7l5+_9oEmq4@a#$27w1K#q8$U~br5rT!lW_Qu-Rkz8vBqEz)cYt7y4tKXDM z6%SS`LwNK}stu?@+iB6*UE0IGABb+sF1Pr1P+oJX&e=+1pqR=h3J^PGnJ9T>)9)j@ zUNU52GW2;0)C2K>w}0<5TcnkQpGr$Eq&m&mCB~snMC6!{l=`94*|nN~yNSnqjYFJ7 zmvy6Ec+O2^FB%)pvix#Zy0Cu|@+_+SZh#SyE`%;7x}YWTk)LbBMhe00Lh^vBNGOr2 zSeEQYWl@qBOUnBJj=4O_Wm5ALdw;=Xk4@}xnfyb-$})WBcMpL(I6ooR0QB{^A53ty z*|7kFm)Y~$=c!a~V}RlP)XWu21Bc{s?2O$? z`E&a`p^`?tt3)K5c03d8*c9y8ghf1tPr$UwZ>tZEJD&E+ZAM+ZbeN`G7y$f z@m2jop#)3KRh&aZQ8OGIuAemYa+cht&NSRTfb>byQ*F{O#04vao_qbsm}9!&A}6H3 z6unqs*t~y!<|LP_94$>O@7!G1BP zZ5;IUEsg$PU{@)+QyP#CF3{vE1#4J_ACOoJ0RmDTZW5e`2nbl-eOOhO*13ftbU80v zuov)JHnbBmtY>bd{ch6z{o(xvd3{DwD_&EYB0$q=^-jp z-D}sFW|w3^o%;~4Z!5qvsn6BU+H&TB2Me(dabJ>^_#B2NWt1mvf3`p{yn@$1Gxo<; z9{7zdBmOgY4H1c${Sk`*N)^%RVh=@QZbleKiR*G zaV(Mwd$4d)%3%aPJ6l0B29tt<=5CFZv`DX>l`T9pn#Y6p>5064Q7xPP=;N0Ro=Rhf z@+g9yw>3fUTiy5}!V_;NNY@kRyAT0aMX%`v&t|f|h6qos7m6RR^q#7+hc;A>h2=$H z9EiVE^L9(-@MwhZP>!wIFTWsuT2pn^9&9A;8nrv7R)kOm&rv!13|rz9&0@#p$8wD# zXCHaxRE?HofQ8tXNeqs=9$b#f6~_7{KZHB@niX9ohl^GPdOcA3Jh0fQPeJ92|Llx)wX-R`1w3vqv{frnFaC@dz0SWS29Mh(0!5ew zrW06ysQ`6~nv_Z2W3%jt1v~-Aw5MxPC4>}Q->LwZ2l5CoO!};7$~qkD{@Vxq4r;FI zi1JrRRWUnLeqa#Lb$22!I%XdC;+dlL{U)*<&Qd*bxT4?meKffxtgA6nJ8? zypJRgC+|M^_7b|!&4B*4fiq5>YRC-d>i4i0=Iq;x3peuqIS=ZW8ir@c2zHvHU^h+Y zJru_clqkgdA!^O#h?BkZxYi?h3x=EA&S`RMUlbK1BdeMaL)(7xDQB1(UO+h9GJcI1 zJfM*#IXmju5H&{g`F7e)#UR;KyT`YYvc8fUKJ%X8$v!uP(rOuz5^{VNg4X*plyOxM z-fMIvGBYm61Y=s)xuA#+TpSI$;Bp#qG{E}yZbZ_O7ml8nWp?&Ni0UMg?^)*`pn21q z4*cayXeRZy7DRut!x1+7Kc&4t>I+*Dl3PM?`ikvChXlP{jAn9UkTS01t@ zkVU$8er$TuSvbB|RBkSk7eGXfYFM6K)RA^0yE?qxDmg}bksK90PTPvEf&mU=DTm_| zDSx#|$of^4zM_uRolQ3DUVVW4D~dV8D$2N(`W&Romv^4tVnJGW&~>9qaiDTmQ`w zxLz3${<(Ww|FiRN5-E;FmIV)Ds{_vYCIZnCR!V1z*aEPmHd0NFj3=n=%u6W>R!!<) z`)?YvB*9xnJ0Fwfq_@UPG#l#%hRT)xAhp$p;jT>ci>VBg^^JFOoE1MWq<&MXU&LZ? z5d_D?L!;)oCX(Nt^9l>K54ZsJ0dOUp){|Hv57)~4bS`BLZ5~_qKvG2HBd^RIV8ibP zzaQBX1J=q9KAz27LJDQv?3bR&PGDhNpSyQlo6^WOmNA#=|GuBzfX-ncX!paGr-&mt z{0aE-H8erE!m7nydhm6YrVmh16+v2%Za`Ke|Jm2yYoN`_T$uQc;eN3~>es@QARmNq zSkbbbr3hbLwe$DLSklS8QNbX1$Fl<7$9b;G zz1*MWH1cE?#Wdusiq0wa4#s6X&oeS~#&i+rbjIYe5~;w-Ky0f&OubPg5B%(hZnM)K zf^hdGfGh_Ai#RGch=#@Hca_aJ?zo^dG3*CYC+{%PTkf>&1(!|wu&9S)hmnC_=ks)- zQme-Gtr(3ls=~|tP7)x}WqvcErh|y9PoXZ;KOMYl(!1drr7c~2pZom5P5sUgAw$Nh zPR)r?dkkg5&7|LAyi{P++a3p)v)9x?p6$>}@~Q~6d~Nn9yw=3I50P-kyBdBEG+r@a za>G_SaEv@K;-4L#p1h(g)8X}fI<%RlE>6{V&JRy{iKNcz@lF)%@p`9nZILvJZup-0 z$@J!D!nT+AvNb&NPN4>UI=xv6;O z$0u*j@U+kyDx;U0{4i39>QMchSGW933sV)CcmFwu@Y0Odi&k8;*Y|Fv8>iW-o(TE4 zH$k)F=;z^#IJsJk%x)G%Bmf>78#})n%(~@t$d{WZds5r>%1DEZv|Ksl>XEQ(&<%q7 zgiVvS9M)A9gh5>7^UYu#_>H18@~??95~a@!Yv$La8~6_n(R60o=yY}GH?4c6FDH*4 zm(IuMI@cL~lQR2s; zh9O$Vo(-hz6yNPYky-(6e!EP?zg5|8#lTuXYYvXtv%(ejhHpr`~ zE+O@%U|nk55Q?g<8>lVxCFx2Ya05Ucbg@Tb**%B|rFk9aume+1JKUr}YJ|1vew$H; z`s5?d2eDRiCV@0XH|-2CiLWddg(kAu8+rb*1@B|>eOUc>M0Z3C06U~Bi`62{&uEOz zh!z_3A3s^peQdrLx6ZVLP7xh~4kyRrc#6v{K|!ZLMP1|feodVBq@-O_?)gp3DY*)n z_%8b$QG&HWn+@?q((0T3rIujeYIj4QEeLIRz3Jol$oh8$%J1C6X^EGkWBa2hLyIzm zkIy?6EOZ=Gt?M}EV4FQ}0P^(S2c|959iagh);z*0(2-XOnD1KyjW@xu12y5(4I!9B z?J}s>g@yvDGXlfw)-?D_+KbNZxxbdWjQC4~phIY}a8#mof_$EN-4Je`4(kT1bf}Zh zC{DCM1<=D3JCV|b9ko$hAU(C%+olKM_=F);c-Ea+uIp@Feut!g+z zj8S&LDh%j>LWftX)CCbs=;5Rv^paGYj#zq5Y4Z-A6`-FR6ssC39T3?rS6wKdM zx&GABXl!QbXk`CCQcf`cfk6J(QhfRjj`n&6j#7G#2Bt>#Ux?uA2ma0JjZ62*!f~NO zB&jR%dh+l`)-DJ+Q51mFweX9GxZmwbs&c&@8t~T~0rB*KDuL^7T+Jya3JC11T2Pb#8H?XGQKsySINR zSz@|`o}_b6R3yd`WB~nzgPx4R*;%jYMYR@9hr7 z-}23gA1%imfU*PK-DYN)nGS6+^94lBOZX^hjc=3(-;-Xo?>07**gn!+ev@uAK)z>`YJ=~D=QrMTVm-?rp*6(f&Xcj z{NG<)lA@XdA|Kob2^O2GAoa~RXoBHE7QJ#;kAT&!C>b z5(2qO+%G#Zb?2*60ANDIuwv8qj!#cc)6I9sS1~%@glk6N#wtp2C-c%-9L%Wh_$E_P zR8$^1c9Jo+=Wa97X)E14u0RY#r3Xn7&(@NQj+h9GsSB3fga?Wcj}z0xP=gAM1mzLa zn6#;x8?j=fhS7r0q#X0(ddDdi(E3dDi=`N*T}pthL(Op!svl1v29L-$X9gJs1n^q& zdLVOPrA+lqe?UwkK&09~iSdcq-3bUFRwoKNU&(G(!8t zL4N*FD|YGz-2|#YhS(UP7X%3V93S*A)-(!C^~cdn##2GtV562_12H*)$ej8)V{!5T z|HKUvLyKMQk2$vr&coJd$!x7=KecHR_tR}-z_-FSf)Bsud3I0`tTww`E}V2O-;cd6 zfP%4#a{5Hg+=;+eJ=a8m9K~@lZjpfIfCoP8q&1Z}(;DL@3yNkW2veXyxU+>Qsi(e4 zc#9&GKZya|7;I@H05hNJYsLp4ldO|LrZo$)Pkje#f-YJ`DHrh5O;3bJ>dy=+iZP(iGe-vyP@-KzD^O*#y3 z9rWz5*|T>J!6ngd$;*@u8WP8DYGyPCiaK)xDfgMVVNww*EK_N>b0TMQ8i(^ZQ8e!mr%xX`0BD% z1XM`GLkD%|TYai-P=rI`Yepjul=z)%_+zgMWmLF_wnOFYeuR&5wZh`+uLWtjnlcb_ z$vnm@joro9W!)$GEn!b%-wF^D8Gi3O#n+Y-4AmHDLMEv$H?VyEtK?z~ktqH8b*Lu( zw$JKM0_uMqtpEKyMah4KLS7^;Kw!a}?_D>Y6i%}(ijiRmn($HsHMT6txzS4~>o>hT ztuuo9dwsCi`H{`YP#~fw`j?Vl4$PUY^VL@|GT%5>3|H!^COBwlv8THZmZHqux@a-y zK7N(=r@!~f_CrT)Ve`tP*_+zc$u4EUXljsJ6XDt>u*8zFJQuExd|B&L8g zKsv9ROEEXp%4q~KqL?l$%%BD+@+K0i^(_&HWk^wZUv|&f#nMc$dYhU^%A)IZ{o=Wi zDS5iI?rT>tW`4Td^qB5E=04u7_VNA=-J^sAtUuUzfV${DSCOpJuy;JFzc`m*(WW+E z>2B|yZ;CNkI`pf|8W@j^BMW<)X934dOrbn6!9@kuT8vTb-f7v$R zjO|4f+B!mayh*BXG&4x*l|?Gz04WB)`*{&>2=QS(2>k0~(Y*zA1CKtp2U1vXu!x6{ z^Q#ogn)1jS%{ObJMB4NfEjueTRQy?GBI?SmTYJ)0Gx|(t3^ZV`!8s-dB%)<_V(Vld~Od!+0|XR$oo9W;NT*B5m?@ z3;2V$!^LSq+90#XONe_MAjq8$a6=S=uhHFTxcbR>RGpVl*qs6@{c_RuHbMDg`f#vd zZllO4X3E_Q5(Oo0>`DG|Ri@7UdGcm$>I8_tHb~oIN{>?n)2m#DR_$COHJ3*RHzjZ# zF0SK@T9sI34&Lv1B5>sqfKW!y_+!0KYkGb3riD2@#%lG(E(XoU-UGKt@Zvy;7O^wq z3aKgO6NjIj{90^X(zWdVuZKTN(nMugW?CYE58v5V#O}A2?!DxJEn}kp#B% zMVW30PLlPD$o08Kew1xTzauPIKEuI$Ork zI_*$}lF+p;b<4S{p6F7m1Mse4Ksv_A7QwX>7!*Px@th>xk&<^Ddamvw?;}YeesQ9k zx%t_ZS|ai_gHDcKX`JjwMm9)tHQOcY%t^bu>$tn~JEF3Wy9 ziBRDzl_qY4cor9u^qN3XX9y`m?Xv>*8JKnA(}+A)5(~U@L#{Uy40zu)oV3{-h`ScdU|@k^QgD{6R9~*8X28KOd}XttjGh6WrRm4VkDkiX&gj zaz*C`q!tLSqap@Z8IO{-zXm{(b`FT%|u=n%f)$uJ)*O9^eD?s=+ZS!&D5?aQA{YRuGE zTxQBEJG&KOdFcc+%Rp#mMkvON_)Ql4TUoBVr=id$)8}7Wb>SMCp^dKqF7dbY%by6X ze{Y+jslAQMKj)(m0{iH8?`=%-~VHx=8*K72kdFo9Fa8J z5yYc{blc_XYifhX_Uqa9cGEXa-%(mQEtX4HKe;D!q*tJjk@yOKq7(Z#C`T%MgjRrEhW4>k>GD( zd}Z#JTI;arjExPLFZ6tLE)FrRSrsF;1a(XT#ny>fPfb=ynZEQ7qp}2wufsDe<$>&| z`9oEFs^{s24B)3)xwfz3o7OAVst1WNc{;)X!|X^+zePnEur4GCcY$WXI!kDw%Gy{2 z+G(@q^fUYu(9Q)wiqSyYL{qLYtQ_O;^a6K9Ct+Mp84MRUcE^x1htSdUN9Z%vzcR%Q zOGQf`Gpi*FMoyP07EI?JTQM%IBjiI3*=zQxo7>LbneLl$$CI@OWOcdGr1+Q$Z z)M)unmV+kX9v~9JSGrtNgL=g1J;RA1Y?+7#-Gt?#tF)WH!6ndh^TrX*iNSdc4-bdo zW>vyF?b@Q?-lUF0k=8Gkbgnj*bgNbG2Ig87(n4PhY zU2${&*-mJiEG+ZwGgS92I{&!&{))9SQlpVn^c{okeoiI2S&4`o4$Teba0n5L{1n3@ zeBb@n1&Xs@7QjdMIfYF8s2T3}ZAlKf5^N>UDOD!b@o@H@C*O>ty2Es=%#L~;p7Fq& zvTzL!K`~bd--=B!sXEyK0|Ax7{Zijx(_PUB&c$06{N?_J#InReEWCQEm`}%Y(ybRg zIZW7kY$HCMjO2QJSH2FwHli4NP;J9u3&Gu~4C;f`eSt&--3uC@IhE&DpNiEr{d;>? z)clQicE#yp)BM8<;b$I%W7+_?afvfQCGfjU=;-iTvaZ&`DP0yN7$K~!@%{JU#yD`V zL?9mr-1iKCb;)x}5|^+4CIKEt#Py%#wv-p$(LV+@JpFB6@F(}+|HJ}&J!=PJ8~cAv zAB|G9l9AU#>%!sX69o38_&zBf5a8}!tKuj4Gw+(1uad1ugpT zTUn!Ad1XxF@5axB&1p7MX}g4r>&#d0s&x%SMGnDHQrel%+|H`o9~IBYRu%JCg*3J^n7M4wo-901`6!< ziDF=j3nkqf>da^XIY{kF$UPMGAx}!x*A<(CKwj`i$@Tr{=>Wt&Y3TQ-25HwE6(eRN zJfwgM_?SNh{iSrkd0L+r;!jqWzP$8+CkEPay}HXsV+2>XixANGvuf+D447cd zNOL!_Trjr@irz6RP|C8Za@2_8%_Q_>5ZoCE&Jc|~iuU=T%zg(T_<~k1u%7&EXroOr z+8heShaS#hrfcJXrFn#|VbGs8L6cr%#nT}<2L4N8%M z(%jrk`SrJCRk=#j__9ffF%swr1d6J$lVV+z7Y0*aSgt7DRMK%E%vGu3bK^Sf;dAA> z_2^aVI&v4Su$ygEFPhlHyac=IYvfIjog5PNhKR;9y3{bJ&_0@b2&H>3-sYXlYW<#u zAm(1LNmmOvXCJ)lc*bD)UK==SEb1N^MBbu?s7rO4pUsTmYa|6v0) z=k3zH-aZ)ij;Rq8b!eT?*DZ!7hZ>oV8-YVI67w+x@;jJGV4wavR7VyCalI>%l^|VY z8I;Ef`07(cWVm~`a#6dK9p{_=S9FDOc--8Vrde@89pveL4p5&*FbyGLle1mRR1S01 z;w@@%KhR&V{^WrEf7Ln-hJ9^NzK&btm!9O$3V8HCWmk??mj9zP?N1F0rvF$-z`=pv z$;|RU^Hw+>Y?iq}K)&c=XJL@T1E}}DH~sg_xBG&D1Izb=w>-u7$oLH`uj4)a;<<^; z#03Ip5Mf~uzlwo6!S~F84o9!gf{KL$1ZNOqVUVVQM5Lem!XW6-xPksV@p%&+jwRL> zleEmjAS56tAaJ^ddWO12x`1?l88Z1u8c{iaJ#)y{-=BBok2vlh4!I^)8&w;~7VOiQ zHI_ykwxmr_`Pk&}?Ok4b5vkOaGO;kB)$s?hj;zJkj0Fk+w0==WJ4PpIZW;-rR(cw# ziEM@2AyLXjY2g5-bcx6TVKnRYOiAAmzLK%vTvO!W9tDPyzh^}Y{~u}pUW~12GUHVe~qM9 zfmvq^S8;)MZ!VTTHl8#fuU(2k+(@wVt$)XuuVO5{%5<*aH$3e~?bd|=m>whyL|rar zTwf>Vvl(Knj{w?ZoKHM(`#4#X%hc{ZJZoUT<{`ZO7n6eD;n##x&tT4nKk2f!nE6Q^ ztTB2puz`iFeA=-`Vya$6zi~29Z=5)WfDONIVVjs?S-8#LI8d)*ZDYeRNp;K2(kiFw zjU^C?`KHd(adIR^=blB|Ix$}$$(yMck_L9!It913aUJXp;|4J7g*FTx++`Sa!ssvA zAU4SMW6&Q}45V64gbup5UQ#xmWP=|ZvOs)oT^QnxMx z;x{x@vuwdo5?iY>v-;k`w}*lX)Kf{`sSq=ux74~lr*!cWaQE*F3k+pU1`V1;N2r$2 zP->32TPpz!u80qQqqCaSag&*o(!~fS^=HSteC8WIo2K$ z9-y~kI3c)Ffe({YAP7yE#I8EpH!c^{21m3?=J;5aO_IA&k1LWLGVSk(8f~_yU(^@Z zp!s|JVUf3puc9w8b3%`eNe~HA2&AQB3ghkUbVcK(al<6$T&*=bQewz%X0G|-AV)Fd z6Gxz2`QTSbRLaGJ2$&tQVKW*M@-ZB(zv(#?v&u3?{*n_@*VM$)=A^GMPb5$?3(If_ zJ!?)8Xe;$>(M1B$*UmIq`3fi)G$vz(;kl5i1T*rZl6&Wh`u2<*=@}z0H_BT>G&@$F zuC}v87uZ1cWWv8!@;3vZxCq|!j#BdiTxOjV?VYdmR=R_zDR(-ta{2wD(H<*AN@gqH zU6EoQcHlc=_{H6c*JELA5lt5RfYp6MEol`a=3`=XX+W>-#O1le8HI{7W8Fwy^tX|z z%n@$9GIx<@%_C*_vWoEJLXC67gw6QiJD-8@7s&kWR)3=Q6??kIn}{f=UQljwR>;_u zXOq0;$ukL?{~nH*mi-|Nt$nAjO`h^lmPy)W00`qpEA9K^jN+yC_YZKO7ah2BQt&L08-7l7@nON?l&AC0zY>vWfmH;PybQF zbT9sFUCq)j^++k6!k8=|exwg8TqcAe6diGWu5ihHMXfxk6sD+RH3RgrM4o4$U`--Gekvkd-hmXU+MC4Q zK`{)j%Jm_;PA*S9>w&d9Dlthp#&GXz=OhtZxoyVx?&2!*iryY;TzAR9t=eAW>3B>RVemx0 zA|=%dhGo9I}qD_aybY@%aP?rPffr#*|oh z(SS|P7*LH=>GMl!9F|Vaarq8+A^X7m%{3RfN-2fiRN>05RO_mHd*ZM+qN<E>9~XSn_(Tr=G9 zarwq&7_j^s`{!RJ9y-}e%APNBc=2y-)9L;WFp2%AQX&7>bh&?5r2ikhLoEz)@khKf z9UGbVb~{jzx$twLBXJ?`U$_SvQ-vbu|HM8P9Fq9LAm1J7oIy~&KoCKVT_lt{hG@FK zL^%E3T$VV4gRlKkYLQtm9lb4xNzpNJaw1A0J^jf364oAs;^fds&p^-EH-Jby33T6R zlbvt3sc5Xbl*WHmZT8Vlq|3ja6XI{HHh;1*{R{DZRl5GKd%-OXviZlo;Q93Z?|0+B zM}bzEAa43}!AWs`lOzl@^#jpyerf^?ks*FregP4FL4Js2azM&MBR`9G18RP>6p%5{ zY?d-IfRdS91YClAp+#X3l;gKVMGzqnlAnCM4!+)o0CT(vend2}q+kW;evIWy&LCA$ zPH8HtNVPJbAskO_!3k$@k(b{;Re zX@;nPiG)gmpA1~guSl^e$BH7ngNU%GQw+i-PT1_8`!6WtRWh;{}OHIN)7n~*bumDbyn zkNa<%aI=$q!|=T4Py!a+*1xvC2{@>jYYIc%pb?GG=b2gvAmZqmj^4yu(;u|)=K_dT zRhElL#&9(Cb4i_ysXMZrJwQvDp)xMcOvJPQVrx_Tg;|#w&(2{`QpH?u%&9)1#CiEx zIE21LDFi!p)QYW0hMx~y=|8Q$_oee&j?%~OZ@ZR+x6}$ja6k*#40raIAeZRm+mAH1&P z@3XTC9;v*5D7+YlRJ~Cclv~zxrL8&6^g#SV#jtqyoT4!b7+3B?G#Bblk1S_}(=?N6c!ewjU)|r~}xu$`rycX=Kg{vHe zA8uF3THVddb&SyYS9xb>Hgi zg@vDR+U=$roNVNlsrcK`<+2q;M)U@7N?h@+*8y6h+W^hj&{tq!O+#gkMMh?3sPuG9q*lPHVI&}`EU3fyjS4R)g>yg+nbuU?216hkL=RDR&`SkDn*1*1TQ5h%6lShu(?Jejknar#?1hImaIgC zkhx{sXOdv+UAW%)pl6)X`+2NakFPOclE}zWs`yvjnD+%%&5Bi|ZH%)gf6H zHH-c=h8D;{z;izE-TO2Z--*OLVV;wA$(G8VNYhKRdzkvPypZSodp@BL%U6h}Q0Sxr zDq-jqDy!F^npKM0A+B6wR^Gtv+3j+}Tir|>UX}u5(_Bs9ahY~esKeYp@%gz6`z8zo zL=QMMNqE6aX|04w+WRn4)5^EOfa zs^ld7ZD$bY|0Ix$SsPe785;f92oC9jIf(o*q^&mQZh!!cxxrh<9Jmr6DLNOdufR*k zOx9SqkSvh3Gnd5J#H@A|zL~Ut|D7tRX~reD!48)bq9CY2Nu2<5BEMQ-`ZVU(Y1U>E zC5Qb;u2eJ=gU4}K*Xw55?hOe_f2)OYG*!jC|46b}{EGbrRcA;M>HC=XJ{4oSxw%N)$DN|sfj z)Qw1iDkSV}OPKXhI_sv_yb zX*6v;kG6cIb&bcjvtk$?w6tvP8RtI#Az&iL5CMW)Z#8Zl3auICIiC_-c1)Rv9I;%S zLb1BUMrCsi|9$y_6%P^4g*NcklaB@c_EX{`!&Ci{-`;Ijlzq*fUa7ilKZwK83Y8l< zqbH0!G*2LrvUg^F%@)lC0Y>pYAzdz)e`^*Xq_>=hyah6ZJ#IiR7_hRhtfeh(!rhN^ zB8tAb|CzBd)B?MnGQa{zO$Jh?7(|AgHN4%(^Xs0hf%Fi(?}uVR67R5eCbSIh1YGAA zV!j+a77PmA$x75%qg2t7MyFIEUO z20NQt(O>17p4t3CSGM!jb)$NX*1xHiP`=c$=Cd<%A?@Qo)X!K3r26Ui)l+Doc<`6 zVIzep>aNV`y_bWyTpx+0k7vBbr(a-=_SxT95|P0TaVx@+B~l%EUMWQow7i(G2F)5> zR3`&FCL(;kwb?^@5qq&gGl?dJoLoDyXS3+XmQXEG|3K>z1*wT!;|k*sStndC2k=wk9L;pF2M zy^<~i{^xbUCAP+&Y5amMkf_-^?Sba+A5v`E-mlGEMnHNSSo+xFSF9;7?(AvNLrkr7U!S4wwOK8ke^nfC(J8(gzM z3dl3N25c?rA0iK<5vRkY2Hk~*%KNlNh#?B9-5Cl>v8s2Sc8{Ybjif?u+Ig+`doxxj z_McoMqJPuR2AhjLADsvZ+kNn1q3iVHhLr+YnU6DwEM-|5!Y)DlRM}F2aqd;| z+toey$EQ0^s6)!y=2yp5h0f|+330ZreLijUf{35^{Wq9>1+ZK|D4%>KOoE23*@nx4 z#<_;eyf6HBws|ii17;(gQp++&5j#Y^CQvQ>^3GA|JU?OzHK;u6fxd@JsNhkJ&>f{w z&i_Mf&%Yq%6AlvN^(4hQhgT1F?UZK_H-glhRkfMbmk)y1k}Qr@(13cVN|%foY4aT> zx*^vK`bo1_)Y26BshYP9D`MW#QT106w?9_IlQ>hPmf&^`lE$z=eYq>Edq*&o5R;$) zw1U3CCB55PNWbIn`?wHyU%QvA-ch_BZVVw`j(yx*2JQZQRD3B2p)lIZ0aUJn6L}7WCw`m|z5p=UWK&Y?#{Ip$Zjq$#wyXlNg~p?5lj% zb(|>4Y4O>r(^c692X|-_w81U!QVya{5@vMV`ctF80*NzPlQYpoaQ{nLXz7N%fZFgw zSgxIQK~$hLP60DWTWwWr1Q}G+eMAuPXStcRo>(J&WgA!#$l)8@l&|w$o$GqBIkB zIp|xDT)lJ3S#h|tIHwM>+t=2Ss}xkc`Rfeijl&G?m7VEv4a@3%rQAo2ZEt8)V8)a( ze}AU8usS_a0|ay$OmL-4(^*0RZ%qX1eSXNBkwQF6cPo&+VlY6ynnFR|8c71Ym72s7 z2FinkvW&L8;PeyBT?=H3MPCCh?+C`Qt;)w>jJz3=Sr4V&>=RJvbXw2QZjkrZgbzU< z+HNP7bg)n0f2ffMQLJ>GzlskTu>XH}iGSvh|H}OS%Z09};jk`<#+AVuSI%mc5F9Mw z*D$jrZ6HXNBA*hm*Y*Gg1%iR|wkJlPmBJ09l`cy% z7}U+H>wU_F?e*g0efr7=KsAWUcJW2*brqIr`Kn3k%+L6@U**Mbzf-d!WVWv2)0;eA zu!CW?5H1mlS8YRF!5121-RiX5N?rLKN2%?S^Iwxk$+bh4Y+L~{!Q^A`zBzOr zqbm2FS%i7iqGE()!2oFMLW$BBED#QwR6&ZwJ#MyGlfKYbpI9O)2 zV$&S13xB%i#x|1NzPR#e{P13f0kY1l*!9P^eFqW*W?6wLS55Jr)-)s*Vs@Jdb?$kz z$t&11*gzn|$|&;9FQxZdY@Qe~SrRgql9{s&xZw$@+GD7w-J*kmupSn$KDfreocQTa z<63NFI9!it=Rg~u_0W$UK5c+XD^2#=a--(C)wJZY5pCI2lt)do-7vnul2X?){ApZ` zI&DP9V{9Ii8eCf<0w{%Ut1R1ItI6$`?i z_3YUXqjsE@zO#flheLa`ZhJS6yS+s3h=2{9`^YotON)2Sg`XaJQ;L+0KUH{bw#Puu zDZ-i42RT4fcujCKPX6}e#)ABfodM!^+s$&GQFQqZd*d4rs?R>IArSR06$S@_ZRf-l zL{&T`c>Np6@358MGhq#!S;A(Crl}@+sif_kJ?(&=*A^2~qHG~J^o5G1H*4Q=EGwX7 ztB^na)jh*$fN^9vaS$R6;4X{6l`Nsa%PBqm&klKHx83|Fe^-82A2;-2>S4LthVG^A z{bnqW_wm<>y;IRgQTgIm1HVq~pP9rz&HVmvPV8T{(f_QZSjBtE%*!GT<&1;0NA`aE zo^^$&qnn4kofK4HX~bB%Ip<6`z>_SYVp3~XOCj;5I>aL>c@OxU8)<^wTfS1z`JQ!m zzcGKjk<;Dv{;ei#84B~#T;X^=oMFymRSq~ugSqK_{g&>)ou zK_C~1;GANzpK!X+G&uKXlX|+^az#}>Ga5=1&kv5U_nPj(p23@1)W?og!eLqqvv#dT zJ4&zO3sb1H6_4RK6IJ;$r_EW8HV3@pyS(K)M4uDV99CoW@ZhCcC^b5CR{@%xR1>nr zbYqcvtY5{(B~4W0M;l~V?sj{Fjl57GSg2F?O?1 zYV}rVSmlhqMWs$wFEf^o8fArD`0d-`-o?Ztmxm6$=0+Y8IE&G1JF5BN?QL=Djm5u? zSk?7X%U*JGEawfEmNiPFrYKUu%Y3|c|R}0ns7s(ym?Rv-YrNCeO`aJ*q zY5u8x``>(;|L}DsqWhQNE?&z5kq;?&JHfI}O!Hz*Ib*4MDf*q)Ff317bpU|?DB(!o zz-)BUvCfbMhU4P0>4T_R2@d`g_F5#&goVGi9gM+YiUW5#%_UW*+eZ_?R4?ONFlZ}H zjLV9IRNm`4Q4GMw90A=!-Y71t^PQk$nt)23Idn(*FzCJ^l5}gw5Tj&5IPKaMCN>Hp zmr2G*CvCnbSgHhxTue# z7iU;-3za39NS~^{X1SlkSwwVUQJ8_hf)*|02^% zqj~_jc*ogY^?|oBD4ZG~>17^e4KJkLaKx_ImDWC^u5JJY?Vp;R>3v_l1U(<*c?`+w z3W!==5b$4QHt@~}lCEeF%XgiFt(%Dimu86$D5x|_2PtizT5fs@>+5u>qz>QmJ{`{raA9dekqdz1P}H=3H~qhm?G*rMLd}$mu`H zI{l|eP&Tr)Gx=Z9puBE7qkzlXq@X1=0E1#8cK{^^J1h0#>Pv$tG=@xuU?Q@ktWJ$? zSyq2~;Xq?AmbYB@VTSXQzQ5X-ewVGKsEC*I{zYz<-^b?#QlU>7n0nLmf-F`@5c$>m zAnzyuWf3a{yRfwu63vB#(qFi|F{iRmOpHq2H@26Y4QDEMTY)^Vs57X0T08VRzc$Mph z3OJEn3gn}M0-{=Z*o{v4IafmXrNf8AW0IPImBLwZRKm4*oq4GWPY|)=#O&bE%y4s@mDZR0Eq)vN1K61ODAb781>@1rKpeASA2c3WW%PGT zlAIX_rQh6alZ4}}$XSstl_TE-F|t)k(~6osXu#zI4*68p^1N&sD9|kNLr3RK9)+*Jr3MUn%pM_MYf-?Xs(SAn|tD|<%93-mE z<ApVtx?XhCmW@0-uJB$(gN{m8Hi3 z-0!?9v?4idOh*7`Ww{ARlO6{=4aoW!JfR&wjIq9UM;QUUSBs%Oyme6Dn0b)Mr%>|S z$bCRRb*Z;lBeOi8q3Jk-G)>If#kW>O|d zi)M%?7D+KMxoGCS&6S1=J0>pqoIa_Sm5xxZtBseItiY0|vm8Dw;J-4XB1qmy0_YjS zB_CPG>FCVjOI36dp#>d~NFoV2p_T9iSE9P7u8B!^km;bNA`yT0Gf1aas-*J~%YrLr zK479fBDO>57;qHCOFhn$f)-9yD=kTGYQ;l%LdDKJ(LU5Vbc~=ARaZsLFrnRkp3AL> z>I}i#xW?sN{0ajTE1sI4Ul$5%_7{P&@n7*A21O^U?CB)jq$pDxf7_xHX1|m2Uay^3 zhmXa&h}`CM?2xaZEPRru?Nw&<9U&ZK9C$xnpO{k#+g^XaEfg;Hby>1Gy`yVH(YGC5 zMKfdd*VHR|2F&Qsoq{LML6;IJALUl`t|HIC%57dcP|-*$Z-~2Wu0QCI$joVLzWz9CEKS^&`wKhy<2)cgfMhAt$&b#I?ptok*i0v0lTdIRh~|j z3T1sgchkp3tRj{i$Px1l?c3QKp@W^@$AaL&CE6p7GL~YSKb&S=KHS>58=;=h`K&?~ zBuKRS)*zp{47_9de8k9b$d~)zAHGdnqaHs1;BNWE%2zFNK=QN25WXWDe`%0J0vX9k zKk9tr-?pLuN#N+;bI{K2FVyJua?1$1loT3(Q#wc?Ofr;~$a;7v zPs%kym5oISVj3aho={lK!AhMSQNXdrik|vJ3C@pAI`>T_3j5<7PF}W~G8pHANIqb^ zf+4$R)#~Ov*oSp8c=8Xnp&_0<&G<0+OksjL*`V`)8hL!aa9m1m-!&8=nwvE&g*#%iC1l-?)#_1v zz}?c+FXv`|14q_FQSsRXVYB2_L~T_g9wPyx$1~2E zzPGdjs49z>#2Kf4u|Q&Z3e^hY8ZEh@tiWu6J2&f&Eky*&O+K< zQgPt8@_LOBvKvPDNiL9!&moy^wQ}~O> zZmS+?WbOWi^bU2CiJ9rqJuVJ9fc0SkWQt1=2KIhTb?=ssKqI*>;T3Kf&x>#dV|4A*W{c zYWdH&zo)Fx@6xT3Bhwq2S5<-O3VR`0pZ1AScyM4+E)^kt^ zb3am+faeIJ6l6RwG6}`NuSXN~jHCze(`V{`7H_s{y{VNlE5?LxLvTpPLpg%`Gtln` zIS#YXRj3C_@;KA(7p?LVXTpyS92*AenY4=0HxPP%FQ!k1K=2J9;QfSQ{wFw*U8Tre zardcp9G6!pLH-L4jwGq~6Lfh_SSM2VWgR!{jA$0`?WVZnEv3l4zIlD>J{GTV4OV&Z zyq?&sXfQ#JQ1Zes5U-H;v%AaSl1aI9#7b||xKO3w8pf4wPaG;*{4a{Zm)rJdAot`d|>ZQ{GZG4FM4Xgd_K(zEo58W_A z#c^v98D(6>$lW?|NkjZwkB+kC!?;B|f8dkGgRqeP{@yoFomv$|>1W?O@L~(t&M>eg zeGYaA$(OVb$Fulh^$u%8SNs~-30rX5%8`2j*!iQIDC|sT79?n!=VAQ#}P&KhJ?luQb=q3PIWxB!UjXCtz~H`z#yO{ zumLW*8pl4D?J&AuoqghX~kcrQKdV0RrcF%X; za-Z^gHc8+E$p90yEmmUcefCs%rWTf4Z=0wipXyObj;kCW|C`ISb2?g1(><*=7QqF; z09-y2vN4h8K`x|CFKy9Viz8)at-Idb_FF~mo5yfsof`VCA=h)G6XnbM{V=N$S9+Y` zws2$Zm2BjL)9^EcSEX#=^8<_5bf}u%nfubaU##NC$VD#GJlB3 z9VLp9Lu-pviO*X;#pg zCsDWYZ$qO)FfJ*9+vamSHG51&#rMG+z?s8D@*HP~IW}fkubCed7VQjaV##kRndM$< z#2v}QG{P*EY7nxu9Cue#y1Dqs@>ywnonCH6>b{`OCuAp#T8LOPOZ519rK(|1#+VxSmn8~IxTj46s|_nb))Z0 zaIF_F)u&7IRuz|XZDCf}y=^Um^GCjQB|D2|*o@8L@`FIxIQ<;X@m1H{HDRQtCuSeu z8qlOhyIEvSx8mPd!hxOQLc8Yh;AEakI15nEO^qe*Go*#;O&fe~ z4@g^KTZw2^AcN#HXkMbsLt(>JOfsQG;37XiH-7X}-H%!)qX&iJJ4#>W*00+Jlj}<= zF2JIQ-YW{EtLct7Q>ir^L41+jw&uhcH~<9FQo6~Oh)n=uOkhkByA#)HZ|hi9o9F`> zTy*9AOPcYkP&`K~15BRhpt$7daV=j{$TGX%{7fx^>gD}juH!4)6jmt7$5CO7 zM@pLQ<0G8~iuwu90!5g@oiTnMBAOTb9TSQvh4 z8;0A79jcEU=K8=@bll3k<7ipC3N|dw~(|88ng=-Tsb>ft*KsY3W2tHxo;gMNONpojfecaAWCZ7WnZpjposP0BX!RIA3qi7PBZoxg_yK@ZgRb#z zg>Ia)z(TGH-ow|wzEIK@vTHma<7DvP-q~{h6Q0AzKGo$zY~X_or{w&hwD;eMYAU*p zvtp>cIH1HG4uy2YQZUhY1a4q$5(tW>0om$5GxQNTroH-M zu%O}^U@aU*8Wanda9|8|4p@t4 zMOJcJaCV{%bI|?3O(b}Ff$5v(I4uCk?d-D1ZK3vE#uxqm6AQ8s3ko-FTM2Fve^7)d z3dx!_w>rWM6Ew{1S!R)RwLuUIn(@Wt1cENIo5FioV8K+_R?&fRH4(EG(EvI_iQ5&@ zTqb5VcJ)eG+QoAf5UAlgV)RtUTCt}HF!W9y6h4XBDtUGERBCeVPii}abbHV|;}3f9 z%VED3bKhX|#8StKJWVExup?!{n5D=`n|fJb)1rg4=1-2^qYj5{uEL7!a5HQ-;f9~) zH?jza3qbkY(H1QwBWEp+f5zw>T)2hvfude$+xQzCR&aU3`D*xt;eZ*(YFI{Dcjl(# zlGeAu+RSJ)S7l4V4|e=v1ipEmI;Qm24>JiXDKo3BLFqv@xJ-`E2;_h<>Wp8|i^y2) z->n+(sye*#4^4JMX#FQ(6 zVxj3v2%c{6$C5T8Hlu~Hz{QGvILs_@4hH3>uco7&8cP={{D&DU@>X*sM&I_KnYk(99hu)!I&0>ZQ`rHL4e@0X|s*UZsx#0VW#w;^5R2GwB<)8elDR zG&!|FUqOqyL-SqbK5S4UYi=rY;ynsAu0& z&jS)O=ov z?Hh&Xrbw+;J(H`{Np#!FjmuQI6-xA~Sy>8Ur(lx!2I>)>H-L0FRc1$D+=#Z3PJ_Pz zGr-b*(9*|N&fpO`X|RWURpc4vxm*dt^HKROS|K1O?Fxt*s=@I9$4`EH6_{qYu_`8w zR4W8c{7X6$szpdKMKA%b(L-9P@WiD>T3z>11|X08t}--T!K3(HE;;d4X+qwBzs)93 zhaxmKqGNaqON6AFgK5<7eO`?`c* zzgKQcQgey1Fs*tu0WjrVC=?lDf|HRy$nfa;JRu)SPo%4B+F{Ufx!})za}^QocjTsV zpdFJ3a~%wEv!e`g@h6m{OwMvsl4w_xSk=uSixYV&43#+AxT8T-&M=d(J^oS!@FPHs?}L6=w2s;*_RRZOE%y+Ke@1lhQk8L1Az6(91i*DC zC1+X~f}r(VnE8Ssm-JP($>j?DLcA7vy5>K2n3kAsh?amXI2Nu(ltRjF5CfJf&?Dmc^}!4_2qsHt0=e&^N+9V-Q4}5;hX`I zmf*z+{sKxVQmX~qRF=(`ErN9jzk}TC^z+X>aW7KAV7g9fv}u+F^N`MmI`hrY0a z;g${4c%kbWdw%BCp4q`(xFWo%_6>?Sda_(fpCD0+ThfC{G)0zr^wQ<>LOUU=4pY|| z0K)Jv0%e{cwd8e&Hu^h}zgp$_>=42qRgmJ+ZKoi&N^>MeM$cc#?6`g}A&m`}(e}8u zu`Ek1k|4q|m}h1Ir=l;6i|N-4rQrAVP2&Jr=)k`{N+vsRjcisARwr-T^rrT6wtl*pYyX)(Hf`J}I9yrj!r5f$$aYD^`R?<9v_@@R6cvn@JH(l4#AKnlr=o01xtCXL zgzOGC65$g+o@GYhm=iKlA?u5+uaPOA8624ou446!6ZDy`5z(VMkv%Wgg^sXPHew%HZtWtj0g*Z zQ(~oDOB}p#0e5cAgE;GJZBfDE5r8Zn6N6L)q8AS#0q37co{Ff_3wjSpeAwko(w zsj-$VCqB3`bhZj-18*hX`(uQ*`o*vGmHBkj(Mw+O0+Fe~eMlUs0IZhcIa!o03QNV) zHCbA9UK~GAr2?@w=t;}4kGJ;x9yj_agR1CU@~2+D8GdKmh$<3XWfdpu@6sL=bpLV2 zM868gME^5JH3D+fjlZzr_VsVO3?G;c=HDWM{Qpm{M%dQc&dS8~|9Ck{y7C`5F|YCy zk#kIA{ZuY=F4-Au%B2JeS%Hv{(64+T)F#lR*2>y!;mCYX-@s6K$DjWffl0HnmW+ku zY3JHnl_@`UaB~6vj*0`E}#hNs-Gys1=Eg88HevFdT~kgkyq0wC5ET zCvqDQ0lC=F%n}HIDO^d~3AcexwKrr&i?swW#jLGiP+HcdME%0=sk4(7vEnJQ6u%&K zlWCwAkQ0+*cb!FNG_obXcPPIo?qT6cgvsho!X=`}@nY6sA)7DsgO+l+;rgY=G;jRp z2OX45$z#yGubYoK|0glpG6JBK>$l%~7pVF73T2;6gUhi2{v%B+g{uS+Zy0zeK9lQ? zTo}G-jB^oF1+tX3Px66S1DkBF$qq+qx=Kv)VD0rKYUZrZNVP;=gd_$Nmzxji@AEvZ zg5&0RIFjY51LP_RddW$y!1S;HIZh0TE+t$QlnL}T_8_xYId{tdruLk!h91x9u0g-| z%AnY;>Au*mW#QjuKA{F!lThn!rDOIFUDZykzx2PGfVFc4EDrB-=wS7pxbpsjGbR;e zJ+ms`2-!vdSK{uK9~RbpL`UP_G6((l2+K zvIfD!vbc-)CdF(23RGVdUvXpt`U&?&V@KVJ)T^Z#Vei0nQP(b`fx8Je^!j5@hp?;e`Pw@D`ns^WT1O^4Hb{i~tfKPUAlt z8IK=){PD5%uD7?dpP!zuzVvmDiTqe`Py#04%rYe@VS)BbBtZ*f@rm}%Aen;kaK+(k zIa^YH#`=xLLdP+CYxl}(c&6eb-^#b`^UU)w;fx{7+}F63@I)pS<|MA&mDUu?4_%Q? zO*XI;!6R(kLs^2GyA!5F&dLMWMl!^23Yb400qpBNSN1_|0Ge?`zTC9d)gHuf_K4!8 zUlFh*R!TX!m5`rBu-Kv<qya)GFLGq5Flpt&1bn``yjUw?i#0PzUMWwCF z!hxODv$d`#uT|b!J@fELuU+#jr7bBT-s|>3 zM+xC%QvQkKUp1+p=V&d-YnXJ<#wDmEvPDI|G{P1siR9D?404zwC)$G%#$_So6c=Bky5`no{}1$tNmpx&USnIaji3TJK~ zv=x!y=W3-Q)C5V?Rh+i4Amn#7frZX#BOFr3zolrsMyK`{embOZWvoTuL+BnB)FaP1 zBzo@TT`ASLnSA>*yu~r&7u5OOs^t<1pxUEVQRkancPwNpFk|UU&O3Acjb$M?{s|H- zy`K`OFj$RSxl>Q^>(c~-RRwOAI9%)Yc&Guyw}4MOjl-v*TxmLZYhbETl|6AOq>K!+R^3~XP;t&D&E!0`>Q^bQ>SErMz7FW zPKW)@X+0i-m4j`BIX7Q#z*6YK8TjD7sxgSu-|ujRV6N2A58#R7otp?f%Nw@BWfVHGRCO9IJFQ>Xm{&Co~iNYuN)} z8(XLEAm7-I`9QAt0a-m@T^+y*6vf-2_THuTmd*lW@xWDQUPl_In0i!7BDJA13G{+$ zqXZA>bn?FccxZJc5366KD7%n!<)5)m0KArD8S3{l)LNzrtPwf=qLOzElB zoD+^YGEy6(y;EedJhQN70YWTfMLB-aaJaCM*dMyu!yci5Z_R>wf%d3guKjTk*CkQz z!oy&69>@YV0y>Qa5*`$gF=wxPD&AKlZYOl#FKQ8(oosH_`2emtvbCc0Bgl%z zu1-_BDtUPofp-7ACK z(die*o7R$Vl;XxfEJ@n8S4{TA?k&YttADDFw@!$=yN1;xL2vPY4bc$Unm3M+h`R%W+ zD)TFBcj`yO8}Ya2S$zNG+b?J0=wxF2Z{4n>;Qvp)JNxk$`EEp^O}?xm5<6OWzjfjOaQInj9aolh!uEdU|>k0m|&DB`9|Gm$-@Pb9}G0_NUx%%*0IeK(IqALytCzK(E6f!TWrQ_ z>b#KaU%{{zJn==Ds48cE8y`*@4=6dPkAz#{LtLZfvP;YYI35DRiu7R#sxSGl3ZgV7 zIBa8cKN(Pe23j+)|vZp%)6>A+orX@(pvhlGpk&t zYf`Cv1X`DbwH}-#Xr5!O#9DH$y_V=Akudb4Yah+Ii95IV&t~eEGIz`=IV8W-ZiUBEwj;os(BbKX2By z2H7fX=|}}t#sX{k54|3kcEVi_B>=|P9?9M?Kl3Gfm%P2MjpYalVu0eMo44Iu?+*gH9WZkK70qi@2yEnJN7%ygPX_ z>>vXj6Q5u`?|Rlrazwzvv%M0uHFBwdN5pos=_1~!U5=LX-4Dc)w6w3P<1&Tp4uoPkoA*hLWYfOo`NI-%ucnoiHv$R={SFIApN zhV@E(58~ve8Y<`@d6GaIUdsr%=fv21>xXQM>!OVimvSQK_5qP4^wF0G-dCovJuR%G*>aWTi zrLz$G_3yOTT+>*v+|lsjr=3G~0sU3G;oCYABE6szFXml54lWrwMO{zGu+}JYVb!Hon`RHn8fZA45o3Ugk{Q!a6(TIo;YJo>34DJk2|`v|u@S+6-@p6+Itj`pp# z!M~RZORD6Mt#TiE?*~PK`A$c|A^Nm7q5B1buIYT302tA-KpaQPMEs2S+U zP0pdBhw|4lA#(JkrXljwDRc+{6#bV7Av!8oF#-cwg;&)jT^Pd!2j|*xHyx{*{=Nd? zjdv{nHgq=bV0}I@+(J$v$J)TVJ1H~J&)ay5NVsU<{=Y7qfi6h8jvvThA?)9cPXhnE zg#I5}iT_?ieJp1MFo(Jp^(`!&GSVt1IEw}=GNh7ogF_YS0DjiW3pO%;#9Io)Q?VUc zC5t>@I+5Si1VxPLyD>=lECT)hAfVAr-t(dA?uWp?0I&F!MM(Jy~KMbvi{g z-zfbwrnvP5xMe$%|1r*H7ex)rB+`fXx@trl&4J!UDJ!(5{0=Di%)j3{`9-}c3bHo@ zEguX2t*XqArjNJcbucW$+aH0os46Dr4@g2fy#Aw%YK=P!Z(sM9J2Ihul+iGv_x`Jn z?yxMTeCl~G;BN~b*=2mrS3LO#US@zv@fJYXM6F2j^J^0r>;%(ZWD7qsQeTGDUG-a& zHbGgka7nOZvU(1oz5py7Ah2-#=zPgz+!{FU!`SvK41!79P{DZV2JAda-m;`Q;CKF* z3Gh*??YVrRG2F&-(I%xW1B0qk=1&Dv`Af|T>#6%X3s>U0N)4N2`(U+H2yoqee%yb# zgq^GeyRSD~1?}WRM+_KFlbPd)-w9|RYSgeK^Jay@Y8d6*@mK2xM6_+qN zqD#sg3V|wFCUOy7h*fj?6EhwtdiT(#_v+(0(U;%V7XtUZd2TzU(}1O>`>lz&yx4l+Hs z=Z`9C^tV;?|Djj=AA$D2>Ztm&53VZO`-U-l-7=sMp4NnQsf32K%7s=HE=_CM#-Ai# zQbtI+xJJ%}ylvLT6quqJ3+;D-K?p_#N$}uj9uhU@GNUx`VG;GzeXouBj=-PE+_suO zV)ZmdU~0C1-g4l1!MS3EqR3eoGC-3XDp&5r7tAh!ZJj-umT%~ zb@#Y1=5Q8Q9aK0DQv+r_^q&4Uf zYgo?gs*an%PPDY7Eoh6yBGoKU#442sA$9NuRD)rxx&SiBdgO#ha*F}K<(`i^lm}T| zy->%OC=h>Nz8VG9kHLN_Pz0-nvHgBx3DKwmwWVIHG($8_N`YL7qOn;!V^Y$)C|-j_ z3r?pjL}e%YeTI4@VH)UC=?c~3!osebQV72ItfNS=qDI28f&)=GiuhdITcR_u;NV>d zETT0WuS`rBv4wX!rFUNT6#Dt4(J`D|F=IzKt~G7sLbbw`jDQ^Ks@9)_JGjpO0rnFs zRI5ol1oyFG5DtVE9b0_>3F&lwU26{d3v66ghN~rNMmDhZs1`@LcN}c+$2h9O?baZS zjHW=Rm*Ht7abUf`Fcp`Z@3T4M1^!4D^ZeIfTeltFHorhBQ^XqHE9o(I1bPl8%^=&aSRUVWtH|BZO%Z;fqFJq z7&mRRTCGoFU5WMF@QtBhg{M?@l>r?AyO#oQ88z0_TB`~(DgsVNMNcYA!c7y{ihtUx zO4=K@r->FIQT2?Xstkn?3Xfx*Du6YJlN7Z)&j~4N4+fVW6`lT$w(aI{g55zK!c`wM z*wX|R%U70-&UzD^R%rDY4q~b*oq&qb0z=xs+0>jDEKB*WaDAV^c#GU>z}mj(R8|^F zpL!A0w-cX7_70GMnt#kz)@m!m*z6#4s|~VjD9iKyL{KFh>UGZq+?JrEhTk(CC^gGx zhsdY}tBZq3Eq*^=djI+J*;jVYI*P3l9qxRmr=P`~(Z649sKMgniY)X-bg=T=7t9-) zV87KzBs)cY7-rA;Y<7MW>qoW5R51gBu9blw>6woomdb9__HKKbrysk0-rBKW^F1N{ zPOO*G7O-BE#u%;7DZzeyn5r}%v3e{kBdhWLT_Rg!An zIy{XjlO|+32?85nUAt}f2qZNW6E%K8N9A+?|KU60@Abm`VW!UUoYX74T#%s)bK^dFy%M|L8Bc|=3ggfu z>6r(ZwIHe%F4n~AK1r4e=-M-#d1rd?%$An-o!;IQsj@*vda#bPgjW`k?uqtSLCiO-epuc3gps=FcWj8nP)_hUhYTRxwOzx~O#156Vt+aUjNd~=+ z`{t+UG*pCwK;sayEPeoxZGhv-5GQ`%wZ>HGg#Gre!4>cx(ls?f9}wPUho|&FO`5@F zEh_!e5kKk^-ABZ0R_v5dH1M@xoMwH`rfWr(pRi$;MkA|!B+0$hD}-KqtmVsH-D>SDrL}3OVnAsR^|Q) zTY{8IF(3rD6c-*{R;bb6SMeMaH z6rN|ZZ^Oxjk%5>OnDR)grd4=gKLgL& zBtJpEiO*c$m-bGKDRj8N$lYz&Y;kA>C|%j8X#`&>DeLfy?)D2WNW6n=A7IX+o2y?% zmqN;)f*BSB{gA+i%_@)N-`V05-)$gIUWR6qjRMH8DzNLHzu|Xshv5ZW^U#P>%SG82 zUn;4@G-?Fc(~hB_ux<0Thx#`YR6YEZ+k#1_QGYhs2^6_MkcN5TBdxXtG4k;EPw_0K z9(x3o;e`fL&3|R(6`$t|CE%4^&c|TtTI`eOX&)XOv7_;XG&8Htbi6*n(m{gD8eEQh z$PnOG4!$0Bkr%YFeERa+2A!AX?ch}e|N54_aFW?Oqo&V{$;{`#pc8l)bR(KWee%=+Sh-y{g*TO`9B$Jt7@|XsO!SB zWby9Q7!`{Yu+~UBuVBGK6|lq<6tKs_E0L_&vB@%MUEK{YU%I-@2xy3<`McSDhJUBj z6H1|>gMw1Vey4kxX4N@%zCOI5bxZOX9#ZqM>NWcswEgze^t3_M&BB?~*>nQbQP3vKj+6M?Wq_19Xq> zdYDh5kj=%#;Z~~Catacw)2$(Wfv9~oV(HYqwGkti_Uz4P_WA>SDa(ZX7a!NpXAxkN zq;{X6c9)`r0U0Qj8@fev6=~F{PM~S13@zUv7F;qe(-M^`bzv1ME%M005|tqdXk=%2 z|E_O8nNQzPtnv+)Nk>Rg#L>t5y_&bw0_b!y@N?qo_{hR4JPHY-JI+xO-xT`nXJU@r z)+iZoZKw|J6yl%wFqu|hVt4J~i!f91?=3il`vbM>Ow6U(%U3wllPWPNZf-jj4?@xe zd}uMg0E(Ij)zFe8{7AB+4@zO~Nvp<8e-m7{hEv-E43dfJEZEUFf#88jqN(V{LsNAI zYpO<}sY4AMl{;J=_nUHVX_JoPGLC5&BkBXiFOQTzjhY`Pf!Eq1XiYyxlE?w-?8k^c zBGywl`I+SQZ4fBU!u)m<6-)U%>Q>p^7O|5?@b|@0fmFE9`W;e#@|RGKV|tWFg{n^95uxdNWa{xw(tYD@3(hpQMI%>+ zl^vONKuajAV^OuQ3GKuMNIZae`4sY9CtmW)0BsZCU+fS_oN(9XA}l z1HWNtCUL=sKX+uEhZJK*J!Zz(v|oC(i01tl$?TkVqnPod$!GstlG%T9`1?1u`@f7^ z{yTwG9`r99v)rZ54GV&wh&)aQdy-mcSW+_=aoEd+S%$2V+1@4ol~&#l>cg55b^_dA zuRjd_wfy+UlhOU3uUlY60g^5I;@XZTszjq6bQN*!HFB8f1&a%pFMn)WtGEbzAG2P* za1zziH%z~UMu!iAJ}cEfo975iz?IY!q2|5(>~Jr8TyZ^WlygTCHDjxfn7oc~Mc0AJ zbKTBhqXJbZukonpgaM2A0Ab|xCsyr%p#n`Lo3|5{c&qVKDZ}8rOSyV*)GoLy5+^ev z<>8|}wDlxj-znjDxJdlP!%uidmtUkhi9G*$jD`v4tA_)eo)v1hS1L4d4+C_X(-8QDX2ZhdAfn#>$%Q(=eEHZK(gKB8JRC%A#^;h~ zqqtdvJb)C`Mzi*d+8lav3ofHiHVwILgO!4ghh}yD)}Bszd+-j$lEZT%b!pnIDMg0SQr8uOM2iWG)l*y(yX{-Lkn7nFHBx z&7rMl$_JIwD7}@iW|RT(OlyRsP(_Atl;J1PcQlx}n02CQ5mvkX5Kne?Mky7GL`7zo zOn7IH#d)&)@FY@qH}c-V-y>dOu;LrDd5{&-UZYe%<~Mva?K_5Wr{AInZ^F%C9)?=? zC00ouDUsUw+*w@S#H(LOMA?X|H!Co7=mUZ<(Pfbg{87u4IcTMmxKF&pqGHe)vk-r` zs2XZK>er*+!nfx+JFsKzPok^#D<};}c~A~Hx`@z-^dDaG8*0U<$hM<~A?a+WC{;KUr-Ur!g#qJNlkYkiR|N$T`wxWb?MnII<|V0Np%3w0Rw z+`09lhaye=3(k6M$dsj9Hh|tcaKS%69$Mc*(p&Z^@JRNVLQM@Xevu&ZFi)DO`BGRs&66RrWC0j0L&PE*JHljO|p zMSs(CvwOw`u*SgtCmgeE6{h**yl1QH_p6)dtD7H}(HNh&uXz0v z31%l&D@|AOIC*{KK&xLDCsrbDEZjGkt)#j4mqgE9lek_cF){lZyL3@u*_lpXf_jBB z4Q%j-<7zN-0VO^)G(b$@Iek#{=>`5F&hf>uce{~YHUBCn%aUvyuh|`3tLgDVG20d= zkacB(kaMj;S}s#sB3h#HXLBBTn~%-%C*fKAKBo2#Km_e-5K1#V$V8;tul)Bzu>s?r zmOHx394)ri!gaH&+pH0H-b#OSNy}5f!uGUr<(_?$*9W=XU4Nyz z;R|rY!}{WvZY}IOiklulL2tm$gCh23=33bo@CZN70CaXIe1$)^`-+-YQ?Rwzs=>J;%7N>X@$m!x!a~+xl)G z-Z5j`37xvMlZTNG9_56#sYd0{UGGA)qzBYN4uyX zYe3nFKUSYh=o7^~(78@TWm!x9_e%-5lDW2@T0Z4DM!ymac1Nq99kL4(jkDK?U|VmG zzcbqVi3lO+euobW`P{7e8~@f-k7ILIt9t&Nvz3yx&e^5Gm%*k0f0txKb03W2`=^ z;(_IgVlZuIkzU17q7IEcHD99FC}_1Bq3QEJMuS5nAW*sAhe{yU3`!{AyR@#&R|Ac5 zPPy86>h(w?ZkTlF*quFn9IDZR!`HvVRVww1^ z0y%`~uY^)sy%dI*Wg?+MAKqge4TDLYjjTun-Uc*+(Wo{F&l|4Jfn3pqBdXrJg(M*A z+PGD6PL&=<{6^nh+;1n(8y?y!{?Y_i{`6=*GM8b)UWMUicd2Wv5j(5lTzMCUhxVc7>tu8`cbbO^OXZs_`Ql5;0O^jStKM8I2!^IFmc#d&IA%lr{KC7^ zs{b-JJV}&KOhh$jWl4!$L+Gf?Rd%>j&r3uNqlCSr@VD$L>EQ-?(X)0l)$yZ#+1&4U zKh=nvFwq0-4Yb4dp=y&J&RVkm14*@mAo#J#^|=n zB5eb0q@!9mmf^YxOh$^B2AcDSyYRN=uwlF$^!Cp`1qP8BJkNY+3qGOTAMwgL&RNgg z;5=ywe#>KAaYq?BLBzPiqW0fB*Y@s>gfu2T+FS3@ zX31zLcePYXHN6xdTS%q*#tcKAv4-*ztrV&vCN9<*ScwwqgtDIEYAF>$UBgs6%ORlO zWVhEZdrRU0I>hLG9T9YozcR=AHoK%lYG0}*6q0n+&td~z_b4foA17@&Ml}Nnm(dA% z50$NRpO|l`mp13liuv%v-PtgGg2iaL2?upvJqKRF#VwVJm|d!nm5P8|*-&IdYJ|g) zNK5-oFMC<`7I2z{8Y}aVI)Q{~{3vC6XG%c<_zv#5p`+EM`wNznYztVcJFVx7u|7=vYJ9$-v3kQO4qf;$UOq@b6{r*%3wc<5(lD)}l5Ldo=HZ z`5MJip!-?T3JIo0g0Y^s09wPju0^tG{S>$kZ|$}Hth#ye^f0}BFd>o6kz!jZlX{95iXvSE0(7Ar%r-e$^V7N!S$`FdQKf zG6MDAXvl}t#B&>iD>Vmj8qJ?HF6Cy=&{|fMYl!r3W2n~iS#gQDv>R8{uvVAwVExS) z?iS5>%M6Ezz(`+xzV-ua1wWC`cyMIMSssS!ExRJ<2uf zy1_wggv>hZz}HNF3JIcp1*3#}ACI$Zn$CsP3=OprptzE0ppK4qkQHU)P7e+S&tR?2 z>sMr$=CN%q2E&C&Rw9d0BZVB%BlTlWQk!Bqrh%EsGnt@cTR& zDXwt?rCsFbMq?<$4`%8b;o0#S(Fv0yn=-|*aAIzIJIpy2@?C?|aE10WljSTNYnb1N zKqh=g`zw9KLSl@{pA-xH%e=D9n!I{cx$@`bkk1bC-`oQY?1B`r(8_ey_N1&N`x9ZT zY@a3}Wr&Ny>37V-8b9IG<}tr0LhgTmA;uwbc?^y)Z68N~J0NX6e_C;X31Z-m-rZA% zFEd(38ha%C&e*_CFy2Z@Z=V*& z$nR%*b*bGpLEH1B%1>gBWs?bibC?;3+zJ*qgq3$4(FDgSsse)!ZjHHeCL6b zo6n|wc&Q{f!V5Fx*ES zzem~FPV$a0rI2!S_c~p|$Qbf0bPpm}U}q2;!u66IPw!l0-b8uaG+a*8o-ISY7@P@k zD?0KCBr#(9*>eHhR!!1eZd8aY-C`yk z?Z=WpLe?yf)KH5+g7@%@X7jj!J|-Wi!vO{%CYKy8nQ9MitMd%&Y%s(vp!J5|`*28T z8ZxaFe)fjUb4?g6%6F-#Mo^YTukRS8BkL*y9bUP?TBG%|*r%Fpvb;Rskg8h`*S%qJ=ahl{9kLp&N{g7>G9>c<F3yFDK-H*{ZyFTV~bnDuoc3YVZOk2gDQ zI0wdMMhcj}l$=4bT}~!w?Z($x-OWDg02#60O4q9F!i5-3TX0ip+kJqMl{tZB!-VSf z$^`V!V7@S(vNLHm?3;>8kyNs?hzZrxvuZV9+=h$1l-PJS>#@*<&D>QEz;s9kOIX#I zXE#MGDsOuJ>?Y&mQE8w}-XDVgG3NpPMiAUJIR6B2(y@agB&PQv0;^TW5{=>v zn|US4#%h2~KzUPf!j$wvnu8;)>^Awyqp1$xR%asoTg|Z4}<5kt&<*f!j?zyQ20u7y-D8S#TS>o?R~#gj0@Kq-MrvTQ4@uXO7e;ic31rTGP~ zpnb!0V{22uKHE_=k1OA*Rs=`dt4Byh!ne~(DYIkQib#jnQs#iQE!szB_%zGK9ghhJ zAb&Iv01HuHHWjq~R+Nc*mA$XHB)`=ixThMDSz+8my6ZXLRKZ8RbLmf`rE?VH7Q)D{ zIu4V^ris9YNe_!mM8IqxN^FH9JAE!%ZMs@ zBb{ZW_hTvPi$>;;g*oLb8j6zSN_7^>ZZq-ULC^~(o@avJT$=(fZs;#o6b6Y-iC9Vw z?F1tN^P0t(R9utYPs7DVDruYbub&GKVsD#+UNNGN)_poNP98zlE(V*O$Mwn1Br^Rz zxhseKz;8F;>+Fz26jy#i!)*-hXKii`^3#g=g18xwc4V(ixj*Qi6U69r$F|(MWw_@y zAC<$;7KSUuxbNnaoLTOy+ni1u1(T9G_89F0h4t)?*)4YlRt_g;`O>T``(l@K zfjn#PtYx3+1~4W0Li%#7dEhVPOS66#ve`vlNw6^RRS5-XfUD|iR?#ok0DmIrHt00n+3z#hd?=pbp*t;(LO2#vXrb z>HLEhiB{bDqf-au_JODi0q?W$LCD?9hcq#pw(>!t!F(~) z8`33yCE}AD46*jxR7?gZT>dDy@O(?kCPP8$$wjEz?{?b@pNZr&WD5@}8$g%qgf95z zA!C0wz9xg|CftJ^AyiA3(eRsu(U#o~ic4ef&#%W?uk)6I3PUydGgykV#ByO3^>93K_gp7E)TEn>?6(LSjS5C^^)p!Eg!aWq7kGy zQH?nnn)@EWnr8*X?VmY68?pfw^cnn#jh8>rtIa=u{ zyaK~a+sjhaj)_N+Jb?bdmo~!4bFR8%H%T2nrRkQbUz%3%aEtJ;GVrh9>a_tssi~0D z_ZtA||6;Yc>#)00$Iu(emk_BgN20cDDvK#gvhg4Uv4G|0t#6I>4__-KS8M9yXLo)2 zkBB7N|AkYD*c$&=pGr{ptGgaNO%trs9Hb9~D59a@tfeXHL$fW=4^m=bC@u|iWnfNr z((ekMLUT0TKbVyF$-#p!(z;g7EpC)HYD`LI*6k%{`mX))3i}Ip6FKmn&BJoq*m^){ zfj7k_)7--t*`$bfi8Q&R`H*B;7=xxb3+9?*p3-AP;p>h)pg z%42oU5@1OS+)sVuYQ27vkwq>)sex_%bX-77pKXE|mt`{S%8X8RnP^t65s0Wkf zkwErKh0XHr_YTSWg%G+4ApU@8i(s?GPr$ov(E4fnOXLC&-i@knLbl(pCsbWTaCfDe zb?7GTWn%;X7IYz6+rRh5N>nd53qGyC^~a6OKTnST2~iTZ^410(|50846IcE}={Z+X z@UH(qxwWd-fBZes=y@byvDhQWRVV7GE#~oJ_Sf5MwdJ zz&Z*>8ix8WjkNxe-mzYAL*T#vpJYcXu&IyK1bt-Cl3!dF~!vrY4nv*G*Icm^?1*g4!4rd#)352}F>Xqb72;gWtZ zGoQ)Y0>&kg=TS8Pja_Y;)BC{_n;LEdkU7f_F-mh?3g(ZC5I?e7VZul{+4PXR(N zxTzska@A>QI!X{UwWzpA%+Xuksg6yyRjCIQ-KkbXe@jAV-qIzETLkH?i414In8V=4zNqg zs5!SHsDSFHT~xy7fqK}k9(jm&771YD)X5gdint=?d3ij+W%quw|kiHat*ja+~ zjHkfBHYR`Db2xf4R`9YkyE0umN;-8c{ohd6MCv~@=PDv4jq^Tl*s!qfuxLalV}e!r z#rgke9xuP zh-hdNhFg;e69*niz#*~7?}Gy(bKqCz4NGK)qj9FGCJDZ)S=QlTPlD(p{(m>52%lGP&lCzolbl}Z&gXjC&{Q_i-2ox|` zZv9HS5mo7FDlfZ%A$Jsl#P=yTjHV`vG8yqOTA1CrTsfnl$>5CueBwfcjE}3jTf&Vs zO=+piF!5+>B2HVjxX_TInqH%;Z^YuvlpA?5$0CK<#2GUZvJ<41$4hbmN;vvNPaJY% z+2L>8UP0niLQ==_7J}4L6qSaAU31c$S`~nUY{7}ELm3CY{6=oS*?5c_LJ(X3 z&Pxri4;F}o_O0%Vi#o{+qn!mWGuX_;dSpGIZ3z-^aAJo)g}#hcW0@(ncJ8i~+$7y; zc3GFuu!@@~2vjuyhU9(ueHj)wzb!x$PTm=oYx~qZ4LI5Wf~RyCS+iUJP9ua6el4lK zjmI9gmQzega&zn`1KuD&<@c=fuiL=*0_mu_ZgdC)ktjk;*~M?xcIDEnQ0N9q{#B7* zsp%|MSH71@U#2L^uY}|@1d+vi{0@BPgiFcRRW$sLtL1u$5xhRDT*~Ud%;PXImm=inq4i z4Xg%U2ZCFKbLEB=Vk_-Xn?0)IYkqUyZ@Yhna=E{P7r^2K@W-g>UzmvdhHioqc~P9v zp&{W$Q9@xB=Ht;?Oie*y=BOFseW^?gvK&D>SJr>gj6LqXP9)GzIJIg8Rs%T=Ua5(Z zptAFOGr0SUXT6-h!D928E6_rh<;XnOOGAjSFrG4QA$(pgk$c>^FX1M#A_iemsUp~b z{9HcKN>&A6*#{Jfa8gjHaeJ5`VB8Bfn?Iyf7T%Ra$bv`Z7j!+v&r*ck{HVR#!19=2 z7?N6SG=f#&2^nARXxMKnG_5&U!@e?@lk+5I5ef01wb8GaE10odi$bJ|3S;A@>4a*> zSa_t_ZtE$S-*;K2!HNxNb7id9`2xYp2}&9yXJQ$Wj;N^|w0O|pf}{NPWJ_&6Bu6-C zxukK+34d+0FQ|=hrKDKoJ8CMRc9UCaJTXVy#0~%;(n1b-z`Tehb zVx36q8X`PH)q67a>6<;!tYz?2CpxnfrTL(Nv9n%qC689+X_e@$%Te*3)T_|h%ix@wbwt_&Wu2MIt70_}d1)w{oC@iF4aP*Z zttwk)+9|Cs&>pAevmz#PC-I<`EE8_N6#T0g?srzi73CO&XRy||^Zc(|& zSP%$x>fK4loegDEj5~x@)n1r0wioYb=(Hd>@6DueFR!v5QI>*f zNAJFL=|F;lc$JMgUnAdQk2aZi_}cW!(WS>QCeix!LLa@`Y06@Bd$qiDSbM7{vq5I+ z0F{Pjnly*y@z zXfHWyg(ItF=yZY%icH@4Kn9^)f=8}jV!a>x0TGBJQbnq9;=Tj$2~3rC^NZfD&G_oW zF2g`5Cav>0{yzP68vUipkgKVY>Rt(WLr&Nt{b)B7*c~C4l<)UlCt&(|WFson;!r-z zw$s;iBa;PfS+%MnsWnlI0WZ57qZjiW7rXpzV`iKeIrHtk039CqpxfKCRDFp#v z_rwol-XEi=GgB*%Dk)biln>r?kfj~;+-35GFW^f9y55OorGx7TTc%+bGYinO#DdWx zG%!|0QxE3$o7SVyUM{ba*s zA4o;r_w0HcArIGcQ4q4WOIQ4Z*(>Pduun4ADl7+YM0l3JCkKY^4ZJ@dDhoY* zFd_h|iaS75lXc$l4yvm7cRP^4!HJyyE)Odbk+yn>JR3aV5C&j!JJ*5X!YasQF%20R zPRogq&2NR6`C`MlT?pS?7yN!?6Xuz@tJ<(2w6%o1e_x|s6qfy3PliUblQGg|&b^6C z5O*$d3wOz8b7qs>`wj&YW#r>V?5<#_w zGXn75D>_~fooGc%vj-8w^V?iAII!;8Px--d4~4{VL5DgJRw%HS2a=3o%l=n~j3UyBTq)+Cx0b!HUBcJmG7=wIq~#PxdL&qu zk+hSJ52P>YC1D@!vj=b*I&o!A0>WLFtpVh85YeoGT8C&~{%O3ZX%V`#el}e|(f^e7 z{~3JuuiVht!0}UX__GJ|ue};)Um7O|}dVr0BTQP^pj?)qaOm7h^mW z+D9rH2EW`FdLnNXE|oe@)r=1zz6PrSU{CmPeu6PGL?MDer2*O!Nw~(UEAt!z=RK>> zE!lf1#shdshPw?_8>>ZR;CVfGIz z>*AxS}MCt`Yoff(&-a@y0o-`V#pgtC1V~s zR%4m;)(D9p5nUo;XeOpw7Zk`0Y`F~jO(!7I2y&6abh4;B@|kZt>B+cqHq2I9l#lsV z8+*g9R-kP5nQ<+PescG=!uNOqlAL%5icu}c9g`X8L>cZVMpyht(J{lMj`1nnIdv&2 zep&`86r_*A@ZWH&le?T7l|LJl@B?2A(z}4oSeoZuEqGH$NY*f#V&hgPV4LDOgcoV? zcGks&@#)}^vzwW<47rT)zrExqn!;t@GV!uW(%};HtPK5_u>Pucibl$2+z`oPHHSJevr6$>HY}x<^0~!V62tmkALdp=``)VHQ^=q zevvQsR&)rl7UHoo5iU@Z?Z=Jh5#II zNvNtDjaXVevHDhOth7R=6@ecOY(r_2;h~iO0jv|ga8@7Tp57*x=Mh^`d9NEVBz`~u z<=Y7QONfeM5{sk-B>*;lkm0EaXC9S{HAnW=1rO=4#>Om7E$BNYiCtyL`7l;MbPU`= z*bgOCfD3Q{#gBVIcP+gDpu zmHG$i62#s_qaoBIq1Y$3r%lCW2n8HVrUkhY^rAN$-UiVcRZ@CE@?&5uC&7S_OxNaLmH}vM_UR+@ zBa#XUMR5$9ouEd=j9#u(GrvNe&PRg>S_7P^D_Itv!u)e*+~k`}Njj61H~^WTH5zZP z=+-KcG#mk;CR|L}@-$vq;=VYj>SF%*@hYi;Q<8B{pIM*8^#XmV;dds@i3BsAJuEOL zq0xzkT7WhfM}QPjxC%yBr>v9i!q|`!=7YnSwkQ*|NI%R253G06_!U=U9ZxlYMyvqL zV+gDHD|7BX@!(Y4ml@3p2?;r_Mt#-LS+r?pGlYn3~-Ojsuy!6lc=Z6 z=A5~#-|<^O?WrEJ?-IR_ca!IRxv>ne zKXcfQ8CwFk=Q@wm?>Efa&|n*h5Px;=0%%Os|H1}6<=j0w+Bv~Y8jRkS0a}k{lQI`% z3Vm12z?{mv!f}~8-!bm4u$`=gRy5rTY5AV-26^g>2L0-ezJXZvgDVj5V1K<8?M1Ro zZV$IbRTqR)8*LhJav~~!z%B01$J<-NN4`xgTYm(PEKjxHivy+T^hAF5EZz6XiYuM1 zAgU~*M01eALcP8FDEtL~z#`zR)VR{KP?`$G-iH`3{*uBw<7M9r)U_Hf(=mZNJbLVV z5Lvc+*xtnBG?+c#d0x38rxslD>uJTT<_6~Ot-EWIQDEjzzv7(6H zAog)!5zEQ=-^wj6xw}7e&|3?RRnmSb)S2&J4`-8q1>&A?u%3;^7Da+EnJ;iSmG-1c zc7Trmt+hZ;c8bV7wjK+meTJsGy@Go`hB~FZNJOn=AT>p?omFLVD!^_x?&tEA?9&H*z`tk}70W>9L8Q zYI_=1F|Y9cN40Y(F~%EO&#v`rjx7qP9p$fxf;dw~y}5PW1GJ8`eZKAKszFh!(qAri6zYcI9dDU^|F_X)$=^ z>trpy>c!a%UBBB8{97v!A26THf*Z&zpsZ?EapIx9C?fEpLGi{g8Jz=r2{pvEM4o67 z?v~Q95%I>3u$uYhWNrTGL2g%YH`FWdoi<8$Sel5|<|TC4r?4hJAS*I+me>HX>9|R7 z>r%C8PsMk+=bPCn&EZ?$Y3Hzetiuk{cK`hF8jsGhF!T;QTGTKvV2Aj} zT`(Ner|^W@4s@Tc*}FTFTMyRr=Ih;ADdRZy<&AxE5(=d$S~>xdwkN3I{sB z-rZIkL@|qgRU)5IH2W9fTY*kfyjm$?3P1<>W=D25ZN(V&!Bxul)==L~r9m#Sc8{L0 zmxA-5msWm!${nH_2!ZZpucMCiMy5}Jys7^AN=NqNqvQ@bGQA^<+QF9X`~5FE zo-UEseeU-e$R)M_zMZPn@M>L}#kSXjt0i#mke&__2iRALN4~$BsttV;9DJYb=V?fP zN}T@;CzrHyG_d`z*~urJ(0>TFsh+4JtD(HZ36R1e1_Z9EYW-+N0EXH0XZ?vK2$=Cl zAy1jJ3>_taA!XW~0Ig4TtFUU**H}CTd4%)v?-o{jNSDe&B(`{RAU)vn^7Fc|%l%sW z@w6-Vh3yhMsNjrTPDZReBbi3UtH8WuGFfL{71l%`%42?ck;+BOMaE0ir4@9D{@J#a z!`5DFslXNq2?lq*J-@>Z6G`ak4rMA&NR*2>L^-$vY>o9S;k*^5OXz5>roEKXMXi<+ zc%0F>^0(vc=aTEpqh!|@Zb*FoTt}ikwGN_dB}%s0{7I=Pb<|fC-QAFmu}bY5M&4n2 z0jr;RnIVQNB|mH)Jdh4BpF>}XD=QQfRCTo2C^dSj@Gx}_c~sO?ZXi=Z`m@-QXUGcm zAQ_hpb&zNo#fzf&F<3L9u2rK~lqP~;-X=QxH-{mzTLJKx;5!ZMcQnHb8|`V-Y{c#T z_6)WM$1Jk2RT>iB6ZD(R_nPMTV@@(d{&A&rQ(F6L?R|-lfNfc&IgRN@n{B>C2J$qz z;dG1UVVh82=zv7=79;|ECukyLYu3Ka zW+hAX;yv9m|I4vChn?cLZhYHWLs>zEp+Gh0(cNpGcB0xW4DJg$GbM6^E9%v{!Eapa zlcBb1a4TVdu@Fh?mTiFHFW$g?9$vD^0+gkUPeKAkv=SMozGk1+-XBD04& zb4_K&TjR?BV(^M0ugV&=@pyoe`(6)kEGFk28@tdxpEC;>s+OQ>^fpqLK{Siq1FLXu z(Lbw%WIMdA|8PiQ93_I*jqZa)iY?S zxN}A)NemL+uy;KcRtO-VWNgCGr%JRkMf659bddrt!q)hVxPGFRPGUPL-z5 z(WR`CBz$?*w6AZT((`%jQaoN*<~nhAYC)u5i3E0QnNRZR3NO;Pg^2as!C}k@AjWn2 z9I;fg0J^bxxt@pL z@`VtcmxaV2aijAhLN~wNnu2zni)L z=<$qmLYP13iuG{;3y1!V1qNyvD76{FO5aM*Wp{Tko$JROH))N$^=8)%=l* z1^TrVTsW&rX2s=g0r4xJ04^;QROyg15{qRNx;WY{QIq zq_sU!;gBBAR+TGVE!f^u69@a?FAE2ce@K~Lcc-U5ymRY)*$;za^4O~^Z)4V=+zT%* zM?o(^%4p&smz{VrY@Bo5CI5o>9NY>;8$9Kni6*)F1&<)9xa=gm8gk%{ZyT;{3JoyD zxYVYD*m-4)PsESWCzkq)tOkRq5eIm$BwBX&Fx9c+zs7|eeIX-< z9Iil;)c^(6jaC5{x;rO8R(a+R4KPq;%l@@ zd`q_ZL$kd->0SeQ75O8tJ{Dl&Ul)mjx$EBo%7M;8*9xDG$%tgcsax;>_nKw@SgT#f zV=yr!CS_gi;{7*7$Zh((@2~wv@;~l3a{gPp2nk5&saZIiOWPU!)eul}vA4H#{8!H^ zT0!eCnbeOr2(17YMgw*_rGw7oac;N+8z$2zGQx&X65X5$AlY`qqw>%KZ)zDBVVNj7 z-cLd2(j%0tBCzb3&*k0obiFJ`ZV(OiO{T8}zW}VF>uvuFo zx#kWf>j2~uq;p)ai=eA49S9o~6{pO`m2lyf4Kz!QJd*?VBBL#V+;W|z9~)(eD2YvD zYA>#i#)(St+J$F)L3l^}A{+tYNSNJ@?lMED&c;=q!itqLk~@Exnu(S^^4DjK0V@H% zNOj=tc;9it61!e<6e%KNzG#B0%VjeEW>SE^S}>xj?>8MfU(tJyBeJorI4_?5Cuz?x zDj{nV+e3xtKwyKgGnh!#-&dAlFZgl;_{WI8_*^@GF9-gnIjy|=bgbk*LVNxf&h?+I zrq4^NX5egO{uj*SpW7O(tfRE{DQ9Cv4@>~b4&cx4n_(UqD#uE=B_eIq7li&n0tE_f zu?nrhN*J*y&Io0J|APFSu+)7^0)HfJ6lz*BU&`(LoVmK0Y-|WKUv6rBw%K)X&S6%2 z|H;_*g4;{tJ#GJEdC|44bfxoCVH=(~sH3ELKxbpNv!VERt5TyRs@en1dDTgGeV4IE zH|S7a4j_uY`)N7Xqo`xQ>O37u6Qd}!{r7s;_raO2#=?uE45MeP$?q^aBIB&^R!p}5 zDAcV67R3A{Vmh!BElJbioPqUE_z*j=RED%+pdI4!#hg9<#;@RZ=q*GR#W?ch4D5-yELBVfNgJW3g^*epf|iO0OYL zAEdD@AG1Hm&)yctd0rfdordnghRJD-)Il00U-#`aW6*G8OFR}7X+`4Bwr%|Yyan_5 z=THMxw-s27Pk;%g$2y_v&b-Aiu45^OTt6jCOPkiLja(m=GNxO-?63eAWDANlz=ZXr z8t*EN309Y02TBjI8$lX_wrn^&Yvjzzn`oD}+s3k%leo@P$~m&nzS+a4*>I(Au_UVC z5qx)$%%c`}O<063RVH+5cju!3DVb1|%l%u$ip+@Tzz5kJqPVQ)IT;Pzkv-pNq=a9O zHL1|98|JDH-VTa;{|sRn0rBx3Sm_ArDO3{!cLADuy=2U}ns&o?7W7t5*D9G<9cv5{ zXR3`wn%lxiu$}yI2$&bmNyqp+hxO}`Kop&qn4EHyDeofp$k24}T$vv3q z@g#J%2gp>!Z{wxnor0!8gb%ucwfUD>F%{xsDw66d+(qsj+jDsllBls7Be)-buXM%Z zm%-D0CU`&pNR9CCvxmWXjG7|9)gOXf%7-zLegn0xW9BXN>*jcmvAeK+ z2T>nJ?{8_Pp>0Ggx5X8^N)K}({ZT$eNFq&!C{rCJ`&%HXsYplnfgf;e;fxtB9NATK z=6u#YY3zJ%;9qwiV~QsU=)(_}JS8>AtM|m{6bR>SgDJGk{4pv&jX*BL#*b zx>Oh-L$koK;b=0DZZppK<$x3dud!kBUHVP3qXbuf6IOlzIFjuS>g7eQJ%ql!dPg}^ zxXHEH<^)*~fs*9ADHbLXY>n0N6nG+Yo5Q7`3m0f&dARvDE5yit^cd78UJ~E{+q3}Xrc1?$=y)+7aBLvTxP?9 zi&d2i4Cj*>gbeAK3{3lf*B=rlw;zJs=2zq}4?ZP1iybl?LV|FVSLD;pIhaOLde4^h++`@J!UM6G*<0?5+~pBVcgl{mOYj;-Uxje zMX!Og7k(TTgndHnC2h}U0b{Vg`&KdV*I`bmPdUlS*Q92;7=%WJ<32)wzbeB<8RFH|1|Bvt4y3chxaC0QxZ zCC?Cl8C${?J}>Iu8vD(7_ za|4Rf&mmCqD6i3ou~c6WslJx1R%caHqt;?lF;h{yNjXvn_p4Y@IT!84I7d@!T*|OC zH&w}I=vo!7hYh(pWfxi!2!tdK$?>Urc&wPD${0_D@&ljbv$Yl5)F0#>%OB@wP&X@=oh+JwcC5*tjl>iZ_#j z0j9@XN%*nJ)P3EcHAA|oIbQ~RURkAtm>CPpxGml}~jJVZz6rcVwH3GR!9n@KsDK&rMbPJ4vGYpkZts_4Z zOw_+F5_0bMMA#~=(!FmHqEwbaOkc}k{3cArH;q~pml7`=Qo@s;*`8@K((I20m#W!w zshr+06Y)(&l^#?DqoX1ZTP!$80gGeOateOAuVp?;J?cxb=$Pk+Alv~prvd{Oc;Kiq zM+6*}9?y?~lmk%)+UKnl0wYCj*hq~{l^Gxr@==l5ww8c3SCj{1VX)@!G4A|&f}5H< zJG(QLCHtPNI%b;gZy&~cU0Yv*6zOGbU)m4|KFOY?)oQOA&JQEOr_)P*Th_>?XJF;u z6Fj#Cmmmq!@mrOuQ|u>!`4xu)Z}<>CI?M5WiASeLIjjj)br`{BZwr3EIDGrHHB4?< znwjPwo3I;ji=Ooo)2lb}M7l331OWsdnZ7Zq@0$043(g2q=vD-{#Y~;kYQ09=2HbAT z#C3hVB`$CP8*VzI;gllYa_k&Qf3S+q31v3Ye9p&D3uAo_ckva5ty(t^y^>V(X_89t zTqH#eZJXV>RsC>&(5%~X)6OvuGBgGC3ckvI(wc*K7+|m1Nc;3R>P<>rrQ-^hdv4WE zg>)-$v<4i_1vUn(%#mePog`vG2Mtoi48Pxk{H)(pv#oM+hD!{jzx?~^eUi?n;(Vt0 znV+lD|1-|{&xnV=uHL7hoq>zBvyioclhZ#pFE~y{>a!dV*($GId)7b&MO5HMIU~8P zf;9XJy*SqHd6h)F+s-0$Y}-83v)_mRD;B8~uS&mfjVawMVf5wd=^idGSVoY^SGAT_ zZHUANx2Nn=DH)u0UiEjOa?_Ip`j8$*_5o0sJpN(5s_2^V-7`pxk3U%d`>C?lN#}j} z_v2Rx5M@Y+C8z2*o;8YW1WF?tXj0~P1-opC-EbJt?Kc_cg)@Zv{a9g6spUuy_MR;U z?j)|l(J&FsQ`ds=&tlHS`E~r`y}QxM&BCyWj#0zmrPg7U8`*-4+IX0NugGJSjr%Ks z9fBmeP)_`9xpbMKOodCiWZ736$TMiExiUse_5N!Ve1Ry`D&N2P_GOQr1>ru!T-)dG ze?Du$e_ONv>#YA_L;uh2lA?*(XL04|@z3dJE9v~Tnd1wGt=ujfk_RUO7To5NiOSd8 zDq+}+K|A!xGSSMop(*NcKXEVpU2l(ubgY1Qh>G@=;vMpirxK`{RJ@bj=4SuNJ@=vW z?ds%&?TeJU0Xb`Pbjv!MW~T-lc5O8HgSAnpSBcf5%`o|zmT4(TMKhgs<=|Fhn^nh7 z+lI6EwhJnK$Y9LV6tiZ@8gtH~+i8eAf~jc6-Gh5tx)P4oVCIjcThU?BY(&*ces8cY~rW)LGW!k^DvS;wQjv;S?N`~eu0X8r(UBXq~C11^0T)a~8T zbB*yf=5tDD&Eer!oZj~oSG$40n7lB3u&=z{evoVSk~T<}J(f2JcvK|7d`$FE@l3qQ zM)VHl9T~*`>&Zs7+OgOE%+22Z2uS(!O4(m=L&Vy|=Cd^_Z{TeHkK;yvrmcTdDl|OJ z)>Ye>OMV5j2u?6oA}mvps7{fuPkW!Sq*DHA(?Gmt>n7A-P&NIEe4WSCc{vA>*5_Qr z1k-&O^%2DT7#enPx*3unJREx3)%L)3@bZ@eX3xjl9)t>}s{i(<~Ef?B<*C#nO79h8q|X z82qfg3>BAFOeiOwHL`#)qBwZqc<-2G*#~DI961h86s|CsnP_AtsMh zz{9Hosn{hdjFyPhKk6plA~R|f=52DR!ZXC0V{31|4Ir3NL+wg&KFU3V_>9Dri zDZ6{u5v#U2pA6;&JAS6%o;)TvupK#8iCwYiHCZmyNqNI`FxMDKpb4fsTier!j5#ww zAA2Y1=to5`qPf==7{;3cSesPpDEd2MiTA%b&54$2LCNBbTBva!*ss@@6XrD&-54=dTYh z8xuNTDY_G{4?e;lnvmwmRc*kALri~g&$z=$NHEL(ta32N2ig%wZ5;0AUo7QGdSspw zf2H(5DY(kGr!ringIpIPZ>{7J(kGZ7G|uqlyM~rC4OEg8C0%dmly4(B&Mg_N044hvRC}d)xQ|GNx^CHNa1c{P zNvx4A!fEG0$QXu@h?-15Wzr> z4Ho6`oSw0ENv&gceAihBCb`m zo|x%0<<@By~z0VBh?tP~FEVTIqe$nG2W#a+F!0s97;naS-zP5FTYFmV7 zJHmGl0t-XvELgGT%Dha#fSeh3I$RS*vdLBFQ+5$a+5A&X=A85+V{I*dcU6ZhN>%A2 z>NXW4YU0AtPXD2x_X=DCKuZM2gwx%2*4{9qf_E1RV^*<&zTd3b(U%u8)k0{nIO~Ao zgyhx@z}Y{V4hSO-mp%Iii(9+X8pTDxB#VIT;FZ}S>)gVF@}>n-T56v=HwlXyNiLNK zJ%EGyn!sf{C#~ilbXcr)Opnsyjv&Dj{sQPu4f5ZT5nj9^-OR{OAhQ5f0%q>i>E}wz z&7YFRL--YWC$kC=_RoM}!ZgjjkQ!j5*a6sVMYisSe?l_tiLbp7_1r|T2JEXiRn)P~ zic6>zlTa;7a{~b|k%<}2q1=b@hy5p!!oxT2wE#{mP-#xxuY)oNQ@kW*iHO130b;<- z9^~(41CS>m+DYn_jhz;APWkDOjzJMZcyMd);Q6=_uQeahki^X~QVp@3v?q`9=PI~1 znk~%sB?mCvcs39_D+N*bf%^iIG@4#mnlZ-lxkzc=5r>_EErrIIE1hkjJ8}~K&f`E* z4>&70D}feg+w#XBfNl=&jKL$!iSAY+qAWG~%qKbp2aWem)c;4?JGNK4ZR^5Sv29jt z+ZEe(QqhQQYs9u~v*Jp{c2coz8z*z_z1BJJ{xH{huk#1ShxYW*duw;Qv6G73`-tqm zm-kv%+(^Brn<(3WV)Q$Ir-_gD?b{j;jOXQr@|_{@o_l?0sw+?k&Y$k&0c;;xuAj5h zluszhs=^CVi%gJG{alzvz)#D(REngA9Y*Z8!o^O23>9v06xKpbss5a?#okgUfF1xV zx^0j6ESG(T7CJ;I=F_)3)>2bcdC{5(?fgK`=1e~jta$ojwBX9Ta4uc1rnJz`NueCs zLway!jkEJhEYk6sjfsg$RBl8odK#}zN0{bDzl3XV*vE!XZ1@?zH3(&XNVf>gXya5% zN|9nBbeJnUM~XB%@<2QybDmQgZkIh%DIJx@&WlOYAB(X6@$to!`Ry0x ztkvt^gUL#lz1UxoLC*g;nEYQf7=LlF|5BKm{5RXRNJaY-5kPvE(+*1v)%Xfayv|0K z5?Wd+YExv<2o=7)i5kNGosl#Z0{FaXdpVDt<8`HKS_sFzvsob^wUz);CYlE@^N4Rq zvHi6+e*W_!r|ZjM4=PZ@RL`ka=VI}6VGXpO1KdIwCniC(BMDpUH<9MNZ(O-5Bh zVojU;cny42SZVMne2{xu{M^BG*#0nIQ`0-x-yBZ06KK-n4VN{-A38ve6(D6L1dLo} z6yl`a`BGkv+>H!8tUM<_>wi6zsZ%RE%OsYvGE)=(NfsF0dm}`fCkPA*1i8i%PEguT zZj?<3w_a4sm&l`v6k}xx!k{A9qS|8$(!^o|sZ7edcdZIi-c4uGJJwT5k7VK04xHr_ zca;jx6P)&1ChL?NYVnKckuy}FJ_`)u6!wz0OyQ}v-RL?n)11ME&YIiLJg_;21?$c| zUs$?!(<`ITqk%(DiKu!7pA;QVVAoZLY7WuTB&tyor(QwVLBITi)%NlAdyg~lGIHxM zoo)ZFy&wSW=fL+uSJW^@n_SmFJs5AmQ>*n0&~XV)mQSHQky0xkMDf@PERUaH+`R(0 zzVyh*vtkHUx!lhxQ?=NW^tPg@vbh|RBb)%HdU+voAZ!e~;Jw=5zk$1`C0-A< z0W7h2_$`m> z$L0HA#XQQuPTwQJ`Aej>_dpz-9-Xo^E*AW@dD*1VCdFT^{FTVCKm6xEE$|;<^?!~Q z`Ky(euyy>e`Crh+_+Or&BDT&ytp1zyV67x;JNq5U8<$7Y2u^af&DDWtdePL3slzo+Fv4v%1o@VPEX&f)R z0=|EtuTT)Z2{x15@Wi9AnFtqMO>Kez?YD2cUFh&SmK>qm_%Y(sEFW$Ra1bt7zkCVc zc(QfDj7o2xcx>EPT`M`Vy4Ip1VzHz;B{7BX_7da2Yr{1~Xsj%fYv3D$)I5ca=Z@Fj z?@Zm{Z=)?&Ukt3kWsC>^j_`W(6SO#nq(&=+G1gIy6VD668=+2CKv7Ie#OGPhI`3GW zV_0gFDeP>8w{-0I;Gw^Bn_Gd7J`;Hj4nJuj>a(4AN}7oPP`1!XfxkEn@hR0zuG2a@ zOA8d%73Q4gZxdMj*h~*^*Fc|c!>X5?xM+`_+%c3`c4!OeGDx(0ai~$lV4xq;AjvR( zHgYJ1`uKiNp&94k5Vy^12vd!8A6pNRg_32m!&8mDk4-Ih0=KLlN?~oS)XQw4DV)Si zK7h5M@Wd=U3tep#+=XebC1upJR{5HUg z9ICUm(jTp`b1|h9W%Jj+SquC47lt37=tuHDE|$6eBLX66<7DDs=V0<_%=fuj{)By< zOx*q@wE0WSp#CXlSeoFTA#cj+tCn2m>?D?U5j9_KtHVX%@#nllK3*W&($ThbH`1)A zRx4A533j;K>>8DYmCXakE8T1JN2x{|(WF%8^4Xot_1ZX3ARe|HEMCl+JYR8V+2C3q z>zKazaNpPb@@GpQf^+2Rh2xuwfey2_PUZ$6*%(6VWTt~9=g6J$Z{GZ>7;Ao7vad5zh@B1VjXYd_| zX{LCcW;jhqud9>f+zR#lD=f{u`H8HJmBJL|+gu5s*qjZ$ zD`m<#u$+|_I98Y)39j4h&_uUc-Q(yXmz==1g)MoJXNml>n;oi$YvHeCJ79Q7gYn+j z3cFM<$CXV7ihu>?1&oD$d^`;D>B?gKXVIyoSl_xBo*BOfWZJ}}sh0@8?RDKc?bP9N7w;qw4w5ClZT|}C z>WVp|eKf75{~G3a<1u+l8f8He=0I|J5VbCLdJ+$7hBIvT3x$&m5m^Kvy(Eoo9Gft2 z0Wg27DIPB_j>Dn^P=ncXoF&V%p59}w|Cp05PG_aHW}rA~L5&WYyxJaFUPAG}|HCc! zRDQ9ow`5r6&N#KseSPQ#d7jMta9K<_>NY=PN}6Ew6qae(>aIy&6o9sfAM5iKnv34H z2B#eOFl9n-=G>u9aP93zm{3z5%jWf+JF(=5@2jGwQRev|D6$t4B1|JBPfvAs=Lorj zVK0l1$H>nH94Ma`lg9AV&X4p^izn(U{te*Md?h_Wy-=YTI{v9_y)4@5U`@PMgzcn(XQ-V9%$chclI)66|yeUQP+$ah%FeoXTv@yQoz z7CJcvv3Q4r|J`;;s)SZN&r`4k>o}FkRe~PSEMh>X+s-e{`Wgq+Adnr*xfB9p*q)R* zWTHu8TJ12Z--S3O)#sQ;ps*x3_ssuD$dxHt8)c|P_t~hN?WiX`m_-u*A?E)PYef3T zcaJ(K%F985*7wBAru=bzj6z(QKV!E~r`UEY0hA%9s<0_PYVz0BXM|SS&WoKDa!q(v zfAmg7i`7@2*46$!bl4VZ4E^t{3r&7lVY;L)4Bvk5IS=Au)|q|fP^RZEvMaiAy$kPrR=A!(IJpliItjZl=UHek?BC}EL6 z0I}+XYcA)Adi$;Sx^O4*McA1V_mRj;0~$X+bnG=_N6Amm%K;h@7EXC{6a;ZcioT1S zamE|r;jAj==O4_gyH5DJ`{#QgF#*rpwKUm~_y{(#I(FUcY)8s5ii0l7-W07PSz6U?f%Ng;ut zwvc>^et{^R%-T)R5t*P`-SI zNMp=%#XGQ7-d7+SCH%OBejH?)O++TwrLxl8;Vtl>tgR8i3#EAhX-1uW*26%g0WH__ zyNhHjFy9*+a>62|V`PJ6a||t9b{JF>K%{2Mj()VEBUh-`iU16-fdDyb{O8IsWqv|` z)1H+aJ+3-RWWsgSwKK?$)GVbHM&<=k*Bz6RZqYH=xsf8XEaA|oqjNI+iZPrT026Ip z7patZr5x2=AF(Ke@=8BfFN!&`G=bu8?#><_ggM3So>4_v?PN%mJRHju=3Jf3G~Z(Z zZciD4hoaW1FzGfS!Zun-@Uz<_P6_17P|^o!u;(b4UME5fTQ&7J{~u@>gfcPZ`-Re* zX!RB`n`lw{`Jsp{ay}eoXJO@?Dwye(nT#fUK;Nz!I8{t+!gM4&+?z8PXGpU=Jh@n6 zANtM!hn8X`LKI5br#ERERLluDc|W`;$AWku^g0+w{gcfFw12loY6clFMg8YDHsxD% zdIo=w_=tQfN!5n5M5`_j@&Z&{daHhED2*OQbX%>usu0JVCHpoT#QG4m(dOtIU79V*=XRqQQOuK*5-(I&|4qGNFmdJxBAhi zfgQGg)lO2tX+A%-Rci?mHl#hviw~Fc*P@>s6p$w>^9l{J19UA(6-zW_6UgE{mh-U~ zb=#;KJL63}bxFKIE1bX;st=vcCTP0V(fLa@`c;2-kOpGKn0T=vBWKmgD8;pgPPCdL zJ*fnX!juXfq6(W8if?)`9JLV~Fk?%KC(z_hSyQ*hdB;}(dzb5CycMe0fyOtCX78VV zi;Cf%U{X<~WF(Ah87UDD+l&<*S;pqN=}vs*qb)IEjbAPjw?v>*9$b;10=>iK7)w38 zGJ%HZ1x?fI{xWAcfrnh%DC;CfIK?SjM0j~OSQlIk^#~4yh+Ezr@G8!(He&3&%=~^K zX@Z1>(X8=wDEz$Jw6=!dwkS0V2Ys*ym-?A_rABepNQn6PX3~l@2aw`ZvL0<=#AD2f|#%1>H zJfcz9C)M7IoghoXED z&Uerc+QE%024dyD%Gi(Jy}XyFsj1PA{E4N?-Alc)YPltwHGas_+<64F;Uaa?P+Pgm z2DUxMg?SjaWwA}M^_0jc=tzpxwcpJ6c(wXwQ_UBEDEWHSI!+!0?Wfj9vjrSi=Zq(- z-a^F?l;qH~W4cqX2*p#xw+iY=E$2#kLjYOyq{szU3l9B9>`@Q=Z9>%+fosGNnp`MHkz?tJ5`Lwa_IAxBlr z8EVE@bTZeSclyDvY6STO^Q}agGU#$j8<|w)TAuk_d2j<$i0S_93c~fsJI4#qK209Zuq!|CPdE}Y2C zyGi(RTB3?ei6iJsC+!(M_JFFe#(9B%605=nUnG#IGH=kbUDDSA`l}=+TVpOsbys8;6poEekBmKkQx+W@! z-U(BpbtSU({+9G6>s`sexu7?@oJfW)S<@7o2 zeP_F6>WDwUKcn#QgHE%OYNWU6*`3t)GLCv6;@vFwRt~wsT<4@&H=U&=S98M6zh#-Q zb=oI0dvZlXF3M7Gx$X#Rmw)XihX%zIC1}q{ zF0FRKB9z4Tz>{ADV#HyKO^gHiO-UZ?pI^Yfc@sGqM6xk6aXp#Tok#Tr?yQcOsJKQk0RM^Jx%av*qdxaGO_Vlh}`>yxxg; zt;+&^TWb#vmR1^OHq=}(_IA&h1_SLDn&*qGyutOGOw1OWb#^Vdh#s4&6ZyEEm&VTO zx#~Zov>)#s#IGF8k{ZGztGDy0we~J@ezT0h3s5{H^rrUnObGH+>p4iD$0t0RBe$*2 zObg2~xxH6%rZ>rA%-nsmY0h#V#)cFKp?!I!xH=(joX_et&iR%6AcFF%X|}crbNUX+ zrlBb&p<3j@^YvhpQ|#Cmz0|b@pW@2azqchRX96}8Ie-0#oddg{CNuD`ih)To8_h&` z|JmJ|Kpu5ZWJznkZd`Y}GnF@#M*L6dP=)<_H&cMe*W{_eo{Mo$Bwv{Wd+_mT*V3#( zdSX}THJ*lRKt)4?hI)!zfD%iBMEFtQWqLaY>Hyrje{`j;_~-tL(>aoI(;v|pO?>3z z$MuKG@<(U$N8r<|<Gqv55hF$k`a#)8bN&XW?jd4sZ9lbR9(eym&-rJ;*Izj3-#XU+ zp-r-u?UVx%M0(%%;}Jy)T3lQ@60EOVSo{XwC)YV+%*8RdZSt_n=d0HZSx;Pd`SsKb zHK&`igj6YY_|;p03EXUJOM~7nd&cmsTHyj!U9B9>7A#%yJgbkCs-lG@ zF;d>ISVX1W8RH*OrO0i1Ty!@gT$5AtyOG~##Y$S{`j(@3>f))6r`#$010@ndsYf+Ip&RVU?s_GV@shdzmq>5qY zzP`>imLE>8JnRvyjjX;R;)H{rK7BTmUYWk?#B{}sQPQ63%MmNVF5y`Po=+8Y=%S5j5 z+lb&&PPK?4-{U3%XwIbIC7)TxZ7wK+8hoS&oQV{ZQr>RD5?W17D}qY_v7KYAC#2TS z<2u=+#ba5O7XYy!c)0J2Lh3=nXC)&?jYQ5WsChoPbkims$ZkF~ zXMCHq>a3Kfr<<-^ol~XXo?o@WEQ$mxJoaB5wl>#Lv zn0Sjx`rvCjQYR!;HL3h=6C5$BNNMnETtny}stXs4w|x2(RDZ)agk3JdhO7)`I5fIL zM(8t*A)-&?-beP>S)FfrCW!0}Z4>x;tXC!i+vZY$Wx0uluG8eYD2HS{BF>L}4n;B* zj(V9nXmqw}Od1(_P-IlOGXattq}Ra_pLR4A)OHLU0P<}Y)(fYIAd_juml1xEte5g~ z8nPnbOTf&{a&1xb-P@|7i|mnqdq5uDDwzvJmY8)|r|TS0oF?@d)ycZfrtj~sAV4sY zO7{5$#{Tgu(EUf?`mcyo^S0|Yzu>`a6{6_+hhLhqPVU&Q-wYnC@c5ygqDC9{=VToWB(V_Xv^Yg= zH(3Vl`Q$x$TdEM`4}1>_)arn;38H&Ct5joVgoBnr6Xg(Z;hyjrl#NQK!F4d%Hu_Vz z1d|#fw!)mni-e$lT!g&7(PDR|r7fdhqy=_H3rfQK?!Gj+BjlptGo7;DJD~%nNe3>^ zsqMIw1*OWZIbadU&O6Ir7*u6@fy_SPY%U7Ocr=;!?Jltt=av@_`ikOYmWssAC?td3 zPP#CzhdoHH)$gL>vNQh0v-|JLVolsAe0#P3c`WKl@FTp9E zRY3w83mo1P2d5_=T}jJII!OpOcJ7B}pE-ri@S}lmHnzffW28Q+>z zZZv5VRw@_9f-no2$&tE3-c;2>T`o~6oJL|lrXXqjtqg6Jaw2?|^qBDUIpX8SmEX1X z9RVN!OyT+a=;mgT6@O#(8+r)eLBXp~EM<`YM_^@NbNKW3 zlGLJk)czS+{5?8=a-pCkTYNlm(NHW9BnUy1V+0>l8JMYPG`>GICE^R0lwqvOo{lB7 z6;ELuk7LpPIg>2g5PGGa1*6WxIYvZcGX8-TDEGeXJ`n`pXL55Mu2u9(jnULYVK6}I zb4qU*uKn4#&rH8j6|o8+GC4BUP+1TpJnt2ru zRD{C4tBR%D^F=1GpP#|TDbrez4WdH&VA+Ni2jA5Wf} zZP-PI0 zFUw9U%lgUHEy=Y0xd-+wuLj0k0qwQ_1jN|lJ7|73BQDaNJavVzLb)AMAe`Jhnmqi5 z$i7MJ-V4IURS`$kBbb7Q+9V~dC+7th100@VY4Tm+FmF{HA$4zCTCxBnFOZ19Z$|{~ zZh&4$dycEY* z#f$}kLFqIsH^d7^2>x6sR8Ss@hK23!5SC*WbpQlQCjQ^U2+k@!(RftyEJq12{(XV@nd zdNCAh{X(1@1&$9?`^DomJ1k;MD#i`sKqgXdS0CPLtjdx zFG?CNyKuE8TuhEcKC3E?6(01X#R!fpu-r$vaWb`mSNtWFmUG_H`*c))6WV9IJwTy zNDF=U?}nd45h67lDR8e`$FFJ!I?usV{9afwXongTHA0o1dlJUGq{gu!PQ>b;X-SAQ zCoLuaAaS=UEAag&xE(Umo=OuZ_JGZXQm?%M$x}5zu(*s3`{3MCOMR4O({!>K~h5w3h-FqqQ}mr$MK?$xnq=E%-1 zBiI3DX0&51KOZUvB625hKg6iUsuI9{DrvC&YDA*e0ge#CsLcFv@J{IaCJjZ_Q9~&L zR55D6Uf&%Lw_w$%%a81{po~-U)!7}0iwwp`2IiLVfeaHke&rqmjGyp$f~r&fWnr*8 za<^gu0bEC0+WZmif#;TwnLe^n28vT>Ex?Av*WdPKEY{F?ciFg%9s%b}UbqhsoyHdr zy}8ilWe;Gy4;1|1&UYEQnKO*g1~v?0D%9|Pc+hjkf^HVw6_ zEul;7z#OsnvRnPGAZ4|+?Z0`72EoHGIiDP-WrTm4I{w+U!uhkI`~T&zAn=ck%HKct zzm0hQPwn>qZXL7KwAKH%8RBs{`Lzg96+Vb>BQ-t6lQq05`u*$2$y8_wmUyX38KS-XZD`;vQk+V-cihA7aa{ zr^>+>ig$7jPicWlbmPL^MS#y%v-GwqSd=`Pv(x}uMat{(X`k5}IdakQ;j$yCrQMMQ z^+vvMW6NQ`%o~anSNW)pFgY#A*@q`|1kdWMvNUsd@Kg=};8Yj%`nZBPJyUV0)R!a< z5X;}_S&2uJ;+}-jUx+6PA{_g%qa~J3OZ65^$CIw_Fwod&4#0J8w@_*v0j0U+zmKn- zz!Tz&k4$3?0`)qCcZlieN3<434CPIFJd^R*!>@EZ2BB-z+>)s^W?6powPSY_+t@PW zA)YxCtyn(BuK4tQQy4;3%AN>`s9|nypUJ(xBOa!CV~V>sZfL~m*bx;F9$d>UgJjvW z08eSv5llMS>xa+q_?|H@>h+_*i+Y9&(A4{lh*nxG%9Ph_p%}{O7jy=}k@UlK=2|{e zelbGrIxfCkn?{5=}3_I~!u~ov3QhlVwUM*2PiO(qd zgxMyX$m!H(c8sCh^!x_{vuH#|iR@$z28^VLluAvqz1LAINDKbjF3N?3IK>^`z6lE+ zgU{p+M~hAGa8UUssKge5hl>wb@zv*MUu!4C)=>q9i{aNyJ)Rqos}3`QtrqY~t`eCG zV$^l>$bsK2)lol!U<|v(F_aq5s8k`$S-WHLuR@9*Q5f*#2}&k7IAjxHl>1SCc}Y?$vQ^5tqnCa9cG==wqIa2aD);)w_@9w(dLk3xm6y0b`foIx z@$>eeBBPi-M!u@xhQ>HRA7T<_Z$rzPx{5W?+n&o)r16w}3YljjGTz;%`1+m>)j_MK zI^}45r?g43)~qKbFXyTO=Gs8ECqP7)gycuSixFnK*>~ZEgH}&i8zu@ zp{#Ugd}6^!G}|hDozV?-0OU9nJv1iBny75&+gry{6(?AN`%KympK}epMboZ5#)l+{ z6_Sh=k;)WM^>DYGOn%CIGkot!I}gu;wgyzJT*3vHa7bnq7-K9B{71&%-=O9teZ194 z5(dVgJI=L24pk!h+b+mCRh%|X(_A)mXsE6{G6+>Ck3A#pL2|zAcnt{5+vO0%YQVzS z;CGa-JcL~9qk+&rM~41=cYba&9c&%#J_+NWcjx~^f?|07a;X7+XvRmOpg;*qghoe;8!9UJ z13*NP&|}WB`j4e%NmEL^-_oZVgoB&( zXUVl?c8hx(%hp;T*B#Nz;u!EYxT25uw|WT9?CI;*&r#asAIIr`7X1E?O8?u;R#jIW zR~2n7C5>^|m{LD0**_nnX&e$OEEEgLIuCG!HW?Es>9S4gxzlYqKKiR&lw8zpOJu^40eMwKE%PHR&=MYle zXK{^@h^J3rKuVK{gnlU0i-|F$X4|B>!UG-SZuQ<14^p3Wd~Y`w_|vbmgBYhZ#P|>B z9$5=uj_rhi0Up3u?M&ArM?*Ptr^%CRsw06rBui<;312#Qhh0)NA?oR>kl=mD%_3bIVbZ@ke+kltEp#;+{c(hkU#pplJ4zVg7O3WqPC>DHe)28bw}4-X0?W+LlqG z&{*h~38h=YLj`1~h_cD|5LnubR(UZL+k}%_t7JrKU3bXmf(DpprtXz%ge#Bc4O*at zakZ3P5+C@*Hea@nKau;bpd=RYj&f^4v@Ro_t$PkOJ>ei6WZV!!fTf$DjwxXEra$zY zKJo+{x`270g(e6OQ7QpdN8Xj!b$M4^t;&U^)Ec#==Z&xI8DUgA8Nhm zH8HglBb-0Ik5IF4YvR=kJ!3>d-h^Yrsr?ix26=}}x2lS_nK%Ny2Rb{LbK?9gYeWei zKu7CVgO+zsR#yW9nEkjd0&>XgTq+r!VzWf=Zrdea?MDa)9d6mY^|c$Qk{v6^aY3qx zmSJUD9Ec(vwp%M~dBH9?Q&f#=luGvv<+h4fcD!uCqWL|}WOb)&UOmCMoLhr1y(zLa z>g!`|7ot~e_$3U6fySGl8?t2gmGk&R3uKfogdJR;K#%Ah8|VkDJ|Z4z=b+*-9X*Py z+m9iC2>3pTn1}ReeAM!At<0hd;((7(gIC;?cOUT_9CMRKh#$C6@28MKkMql11iS)_Mv|Ud456$>nWnI5at#rqbHPo_ktb9rc>zA)-nJsLxCt!7ioTf$g$sI ziYL?Y3fN+Pez?^RBn;g{S!Zad6`Ro&x6CyULPM}JjBMe@I?zGYUFpo9!c_n*fBfR> zROWA7o?Jv)mE58vNVmwU*Ar3!mZ(0FaQ_||XXo}lc=SD=zrC~6@`rCJNP_BG-(t_`p|{M~PX z%g&1^+o;1@d;a^kl%_LwrbzlIwGjhUN|BQ!V`<>|M;xt4)8w4SwqK<6^9Y1>x`rxi z%oNB{p6mhp+Wp}g@u^6SM#QrtHNwGVjw1atv(uQ74(wkm zhBRg8Gt|$QWa1xR6OR8p^Zc8&{y*!kG-@;Z9gQ!c4O((doIuvxe6#@EssYPcc3xKV z8b#EQ&l%#+@1|Zim}7lK=%Bs;#LWUE*ViwD(0Y&2=k8;zf8Ot22IaqqUt&eS!oD*} zx+j7i^n7%`iAeHGCWbyGA&|Ulktvtm-m#=TQ)eEFG<9RKlW!+%#)X2uAA1pdul1nx zj+miaJP92~7?0K7yb?+dKOon+Me~^)Qc?|&&4%|E86T>GnP~;ve;1L~mxn%4tDTi7 zq!JADxLD-LbGhM+6!z|^JsQJpBLR{P;xB3Rdq85aTdfMUM?rYNRee8B(M@I1{JCX8D^#Kxq4(+R|q6f zZ=^&as73aIDiu2Scc-DIBAqobh6Z;jiPXs@FePnuxOP2Maly{Iinqw8Xx;W|s+bcw zS)`iROSMl@n}GHfoLY53$%e6c2oz7mdcc?CU+}c8C)gftbn_0NACIm#eef(r$pJr>63;2Z~q`AUCYndLcRp6hNYI}sw(z{ z8m&L+F!d_PglI$qXaTb9P6aC0NW~e3t~>RpW)w;9#5t-+$VZ5m;$g1JdBpr0sjUwL z^q;}+Ax~E~D@=aYR?KdOr=1C{DIQBT{$4wqUdl2Y&Dc)cn`B2P zrtwXvKEnhWM5;xm2VI7p2>K^p!Z<0mhRgN@Dba0xRa2FkrM9O5VwJj95nV1VB}}u{ z%yRFidbH`ji@{Uh;+L)I{m?nN-|OsT2qVj{jdq`l$F7GJGd=fHIAm35RRzWw{5HK= zVa2Kn-RM(9(Z&{(<&yqAjnY2~1$p}|3k7{q{%ZY8~K zJ5p7ZH1yPHXl<0>CaUxfFw}F)575*$ixdyTd8K$KFlf;Lw3q9(eStW-uD zIz9Khr%mYZsv7i1b@P>qw-P#MOpTmiwChWD{tHD*->hc7_8%^A1H-hO^c15sWsp=F zg`&y^s0Ecr9AmWVz zS`NwTyR=LBhQlaYBQrH4+cNuqN;5}O8?+Pz*&;RkNtv>WPaIM}5R(s>11-_3?x(EU zAlw0fg>sRm4h>OfjYJ;qg@GL{UYd;r3c=!fI(fe;D_r4S+%7? zkqiDe+re55j5PRjB^pCe z4LHuwNikZ=@U@2ms~mXA6+_T%+ziE^ENgFiwn-I9oa@qU1ZQVefvJc*sLxT25ggCE zfST=$onp#M*9nkJCh{Qx52Z%u!6u(pzVg&(?$VGuT|}e_;ca5?MKLj#TNoU~U)E6- zz#k^%xif}M80y>wlzKcd$YnmjyW<8T^X<^v3Ig{g8_2q+d}%~vc9a;NgT z=yU|uFk=sTPDHOg($lqDd-`ZkFn4Pf?cH}g=|4#^v^&JK$%p)HIrDtq4oB)2eC9)) zI7awP;?9|&C>y{N>-?B86q1c3eouIW@eAhQ35(utLN(a(&(m{*6wYqrTgXJG2jcB| zrStFP$xka9OSY6*Pqr10Z?SbJM{rHrd$_@g@PZhWny)Eq&uZ!aENLw&bGMdWx#x41 zg@?C1Sw7C_K_R2D;M9?NETdey3$idX_0x7cYf;Aq6o~O+Is*@3Y40PD zaN~@cU=SGw+FD$4Rr#h+RV!7D$42O$@lm|Py2jYv(ZA?Mci!}m{s8S83sAVk=rDy!&%cRB;Z7E=jgA%KPE5G<5 zq38@ZCDoxEO=-%%g*G|+(AxC=rJbp0LkW2}ZBmKxTG%6Q*cZ$}B%jJThFWa#nDu`7 zH!MLQGdR|fl?+V1)7 zjdGl|swpH@C9VZD%M&%{2=s<6O6=qdW0bdapWbwz2)v3}j{^LzRMW>65w8XKsh_hl zj~f{UpaXeO+T-}!G2f3_LrhHK2W1(UQjG|%3*A?5)oUNWD5N&V@4qz4RUEV&UGU;& zDEA8}7EOh}G~q~!TjHeu8f(d%efbD{%tt>M;5ZR!y-A{iLD3To2MU^UIK5zLdN8h; z5TupR0A1;d`|P5S!4IV{V7VQw9%_xQ3_ytMVm3ebwKv-up{PH@aMRGSvc@S+Omstr6|R{(4_k)n0rmd2vIM zp2FGnohyw!xPvu`@-$|OASdfiH9wU$i_-+oy``V3DLoS|W#vQj2|I!uT}{oTYZa2C zXqxyKvifE!uo;_U+%2n;CO$Q$4*z7&OA|M2b`tGtnCTTF8aVM`9>l~6@t1tOdGSY0 zqYzSzaO!=XzVWX+mVp{$EVPbVEyhtfbW$oupr+(Jea&6~hu>9>iFqPZm3UA#Y{tTp zB(>eDZt+Ph)1?cD8;+H$KZ3<+4-7rk()SKt@H|v68vHu1NshV$VpM)98IFM(&bj8$M>cDp?7gZ`I zZJT&O|5H!tI?{n_oKs9=8ovLuki4;pQkQzf_FIjSnohV#3gGK9vlRt?YGEyKp{TWt z={eB`Q8i!I>ONGhP83Bw!sK+(I$nch;Tm_OdD^2LVQ6Ng#r$?4Z%nbod2>q=9k!$M z@&}OX1asM(i~Yu<9|2g6tkJBq?DkvedMhCplxDfSVp3cB$wrxrdwDsz2B*rjmZ9{1 z=6LLS;Os*l+a`^4e(=YAVa*{c?rcOLlrO?N(TW$YFagRBj&)c7Z5J7iS#?Yaw3`Q$ zicFzo?qXm~S}s+0!=i6I`3ooopj;p}cLtU91}knjnBRDoS_Lp;bNxb?msSFJhc2(x z52T=Em6(TrpH*pkBc-F(%gn8)V`CE>jZojl7qYyRm`Vq;zQp7g#7)DVgs>wBloU}m zT(;r`XH!~Kb7z6G+g?)V5{WkQSDstwzPE;j3@N29vI;5MJl;N`tztnXy)h##t80V@ks(L9r|KbLnP==M!|&DZ4B6A#$7Qm30Q_{y>3;+&_lRE=rxXksP+zArqF zP-7IjpIy9vCfQmeAMRN|c22rxmn^!ja(2r-$$6e{FQfa4p!WdTIng6pa@c&FFL`0pz)*$urzIt$sUENw{hfTAEW@7q(R zzD5Lu4H1YnS;U>_m5_#WHX{Z*J3+#N_EWplriQ9-oN!yblzv_3Kwh!&OgMZD6r+vt9x25t(Bc#@la{YW;nyjgi- zPbd?}n5Zf_&HaoRNZIw|?dKS5cA!3xF8DPwmg2Yz3=WA7C*?bDb74H#j-boJz#=Z; zgqh}GQ*(&DRMc!4GOitw9QxK7bN&-ubuluf!GDsKSX|dDc0~DhzW4RnIrF5okl#sF zdjsMTct#UkjERuYa0#X7Gq&!;9gRi+o$)coO)seE6+%9Xb~C)8_niGSK3S-E7W;sj zZYV8olF{YrKxDj3@cUZ+$gKIST~S>}lg^ZKNuVJhGY7%<+oAKf(qC<;=m&^Bp1*Jl z!Kn^Dh%}jear7*0WmJEHpO>gVI+(3(~pW@ zGbgp-b6gTP6%nt!#}iB)LJ^D9HM3(j_c_5NQIzDpjhA~WXxYKRkt8Kts=YpdHPgH> zfuha%*G0VX#^L?l8}uhoy^^1l=vFne;Vz}iNy)0IV%I2J zGQOz_#_b>4NEg!{nH^f7CQ}xNW-QENEvXZePjS{p;Df~jf+J+sgDzJk z5sSFUP)})>QJAtF14s7WztkV32#D&JBLt$LN^=Rmr#Lw1WoM2`bz5uW+7UhXHBL#>s z(5h+oYFHkobgIh~s3H-``jSG-b*>$Ur*UEXHY+A03j4+z`;#?{q;)`+!wperzD*CJ z&}j52Dd!J9H}-WJM4)a{I|;>s@+enXZ~OmQw`szC@@RnRO#*-*cFXvEbk0W$YJ~WqoDy&dA6Dwgq2heP}Sg#bNTJQLJ6$1Fb_KMCb4WdC_@}`c{ zi8L%4JK6@#VkfA9pG6{)_Ni4rIjRIXJ~0)Bo~a4`FVfyIy0U%S9ic$B=J9S0C@jr087Q$(ZbeD)lR|C z@}v3m(ZY8%as0q2{whK%)F1!s*yDqfV+Tm;+E;Y1z!G8El+A-KeD4M#$VkjRD z!6ULbn1U*|o;SK0oOZ1CH=?Y5zg;3&b$XJxz3CW31`WlJ9yB;0yKi?pck6s^f8O|L z**|{%o|$5@l!*tIIX50t8jUD3jFwwqJCy6N9#gM4pggCz#*A*mntP8JJt|eEvPf>y z8;1ZA0qAdLr3zA&!bMn~1*OJTA4HqZ3K--z+ID}@G-wuB`ywU!gzX(r6LgzdYMfS4 z-`ux^xg>G-i(O2m{2P2?q+Ce5eJ@E5L@eN&@(lN0R79S(UNAq32Kh{>b%3$vye4Yi zF|^1jYX0|q_?=?wTcv@SVp&F<^e|WM19b-V9C=YXZ}?I4x=BTHbeYtI>*6T)8rZVO z6C6mS&9+QCS0g$Ry-)^_-`L==%Or9`c;*hgxcot@Kjetnw;ILfR_Z`s`og@KNlM5E zadk$%(MZ%oG=-aYsRtvF{4D*YVrnSMPg{cB;znw~Gp_7B9?qjgk_WmvRA?w(KNk2| z&XpM?Plm}$0(I7+#YvV~cKM3foWYK0A+8a$2XdNk4vVG;pQR#@GKDO=wnrt7s3{4k ztqq*<#?q}%i8&2p82-$dEO&* zuFtXf2C2#mdImb+Vnb__jH)!_O6O-bckHIa0fBRXWLeUTg;xGdgD$RciIXs6DAn0J zIvB3wt^;IK;i^@eyFY;*m;$qPdu$lAds?GRiE1CCa{!Sdq;xD9lj)I48^+$`uR3>I z?5ytVx#uwU;o*o}%~>(;&Y@}#fKW94B{=?iKdXT zDXu<1n53KO85aB$cl09FyGb-?xBM;jUh{0EEfg6dgk#PVd!~s#{GgDHG95$D7~|#v zO!DA`aK=6MO-=B-WaqJsmG4NZ_aeS{z z_o#a=DtfG!ixQI>j@TQX3-Or~o(;@{erESF-bUE;8`28L#P+N=$VBfK9wdzj*lsH= zg~|Qot6kH!T4=m>WV~!JQf&Pc$?LYsEX;$Su#18wj9I;l%UPfsb~bIB4nv2>XtX^( z*aGTfB2|Oh-ulq@P(eJ}Q-0CnS;8(cLk|rpYk1#$do4ri_M^0E@Z?%z=_oz)@EH|F z7_FeFzad=8a9Yve{1vp`E7~SyK8R}_2>%qc2>&K%$pSp=T>i@nM5$XEj0rtM^|aB_ zYCddB4p~c~+lt0N0TT%h_7tgL^)T%xsSUf@{UYxJh)+Vwyk4xU7!rWFcdwm;!S0-) z>eIxuDJSgtqb>#S!n9@}67O8FJE3xWH9l7FOWr07a7XDvv-rnmL=pPR*?uW{0*16{ z+`>IwU+Y)Jf4_(5OxOGTq%xf>0|U=?4ssbwS! z^GMZL+zOP~FGDGnQnEvg^{>jSes$|O(vn($LiM0;S_I}cEbWv!7r@=@nuITfEQZBM zCIx|dSZ)G060fz#x>vC5YnO^{n>sE$t9_VQcX(xAH!p2iV@_*Rcjcoh@Z4Bld}{9g z>{jF`Tu>l?z|mCy2uG9ts+8|^X>8XGt#G3_p$0V zU!%@z5wATYB#-xsKZFV09z%U;vo96VyRh87?xpU3bRORQ@Dh3M-;O-J<5_x*Q^hJTDqPIiKGYN5%(Gl`oCOWrv4)KNKrsSV*Mw2{I2t?5 zc1gu{8h=kCmHK>Kvr({L1(-^?t*d&>Es}|<50qt5%A&LdVxU3Esgj2sWCO!e&>X{a z^DuAs-i9@&4yL8=-23$G5ZMcZeJ6FAW_HEtX)>R@ZxuOQpY)F-zxWEChV!`{Ie6ef z8%2_j`E?LviW}4Ag+zqrr}jCb(m0gIWxb()2!^fliitBVJ_WBNYYy0hz`;~11;F=v zTV11vhZzhgQ@_$+3Q#^SeDBP4c|Z!cqa_^Zi14ite`ZKpw2m7Q_ayNdv1 z!gXNnEH9IKnu?m!wyaO1{8yXH>TL8*T@)sp&^xORKZFpbu9J46kH!d}asTL}{=|Z{ zB>vcM1`z*rqN)FG&smt7hOT-?6ai`IkR#q1o52PKHTxW3F;$~ ztE-whZ32vZ3O{Z^sB{FmEF^^4WZ$>WeA)DBPdqKSH`5}h%Ulz$54kKW2h?;I;pN*# z2=cEy#a%?QU!qzmT%skkkr6HJKkOfE^8=-NM1gslxQQs3>+jV!jW7*HxDEDU<0efq zDXsyV@lEZ6ptC6@d498jHL?~aOYEjH7Rrs84(%kv=kI;1pk@yA8sjMPZ;zWj5dQP= zo-*yMV(xb>KTI*Mn?;LBA=WrkzBx;P!ZpWTW5SI4k~eOlo@ly7j79u{t#?F2lCjQ{ z<3?_V&; zEQ=V!u*%t3k!ZL@X^?p4yu`n463opqeEq>S`U_QK+B4*72Dy%mm-lPtBilLsBJ&~- zm(`CCzlfG(m@1~pakU;Z_w-Q_+QXRfNCo%n*WW*U;u|0Htt)PA4=AJ-J>KQ>kW zcFWkA83K%~{+|pv1wI)tA>?mPQfG|hI3(<@{z3YI{n|C5n9|e&m75u(CNAsq?Q%C& z4=m-NnCj|pNWR~{Qv5(eV+?|4>GiVPfWN+beF6RY*`~*oAK9%EeE{QIszLag2brge z{Y^~SYEGt{VBjqcS6q*z&X3t#geURwV+`RkRehOwDg$O02XD!o_?5%wMTwh-pQ1nR z8|JsaS2xZ->$qUHHTG|~E_8wZa#5|3lzdN3G5UiNH`<}ZqT^(^3pZX_XA;A1JOhuB zyW)}zi~BUF?<=8jpN6`C3`XnN86XdF)t@Tf{p$9bz=~46nBl?;%Kc+7nYa7 zs~Z~U7Zx@`FiUMt#jF}2t=L7i#a1n?Y-Du2Ht#J?ziB+bo0=xeG5aNCzxXVtp1a>a zzny#a&NA>`QKIM#iOAv-2l(MO7!y_^+ziKp`TYRWfT%Hn%6*d(NhT3b#^lPuk_!#Y z6USJW8*`QrsjhVCv0+!jJ$y@U%rqT--4BJv0YIDd~ za(JX1$eDDLHh?#=xikfP@$k5Yq;e)GsJfwzG8Vb!``(gM<;jN(>z ziiM7bq^NTR^O^MR_$4LKhiB%{b}$tdBvdW|f-GY3Q0T2E9AO88(di&CK6>(DmMIZB zMj}jO=qb*!Wps(MjfzBZGcG6a){!Kl)rQGS5KQxROQvLuDga@n8)V)+=Dj@-pvgr2 zs85Ep4)Kw+GJ^W=vc|%dw@gg!8ful4;MC ztz1x8$@+u?bQS!r@9G&WIJQ5FzmNG6L+Ev6VwR2aIy33fPc#1%tS*f=Z|ScWBCfh^ zTn6SBi_(97|!8Zp6!xICY3g5xNJn@eotA zLyP%Ze zfh|nh#)N?yGR8UQiRJ(?bnqpL%qZAxiV@YtPj-!+Fc@^6L|awL7K=4_r>wm1NUcF1 zAc=BnM9s`9g8+Q&I35uy`+ek@tHyA*;|}Gb2lkcDo*6-kP$k>mJa8DvO{;nPizw;D z8QXqglOi-7aZ1A)Z|w%@_gT>O8b-;yzPh%_gv6IJ`%mLQ817x1K?d^dZ(&sVebQNfbKUMO+V8(R7 znQ>T{!-QHEtJAipTkJ=;ui!0y%!+NSIV0_0qV(#Oq!{)gh3;}9bo9e`F|<#LoacIN zuhf|z1ChGMew2$RGz%WJgP!t>642)&%`kV0cew6ZFe zS##F@8Dlb`G!#RKXo153Wa0+-oc&zge2jt)SJ7#()?Dm1v?l%D07|E|F-V}bAd82rY%PMlsV5`C!cS2G zQKh~OJ3iQ-4+TxlqP7Mq6O9?rfa-h zWsz9Y`Fc#!8-(vW>GnQlv0_~v9Kw?c%i8z2P|X|_4g19(!URGP+=3+ojrb zgKzHCT$GoPIpC&Kx9D4aG)qpoY;`bFF}o8!*okCetHcKInqyjwRm}F6g%?Mu$2JG9 zK;UwKNtDNO0!tMcTx}%tQ;;;olPV46IeL(@;+WvR$mY}Et)MUsi z!V%7IF4XcwTn7Be^^%d~I$#~r6%j(}GI?m{>Tf4lxiJv+-L7qwSkaB#CKhvM{DzG< z7I-S`guqfcbRnj_CpoB!zCCOG&VY>Cc#Nnl@Kz|t#~@pLOmI9JI+5L4hM)$6E~ z0`%cz=7}$fm#L|<07femrhs)758!jrKQ-^rI}o6{BNSMOCxx`}yzpW1^ z+KV>j=H4Q#&kpWs;$i=!0gL$Rt6B~dSDoS8-EI-GHe|nGeM8b&hQcGT{P5MnQb4$J z_YvVO#A24O{y^Q7@$3YS#N(6lupE{ZwI7+jD@R1eXX z$32Xv0KQub`4Nc+FyT3?fNLi<6}#w}#Q}a6tQiJcU5V#Ij8`F!B4m9V=Y_TC7!7H< z51db3Fj7sz!epU%kWQp}n`K|YbnW8NNOk6b;a%7!t%EcnIficaSm?<1fE;P-#+%Ek z57{s?#0;sx=N9}Mjoc=mG+j@?PkSYPpI=1289qzD?iV9w6$X#^0TU{!?h&OgjEBia z&P~;88JAyoI0p4IIK?Z~eIL(rA{D#EPU~fgzc1w-PLwCP?o%IT1b+hS(PqG59% z^_vKg_~O$*^OM;il;nqI@awq=B$?V z%BICp>oQT+rs$PXuV!Z)4-+8r*L};50YC5A*E>g~bC)>%Y@*GD_p!nj#VO)WvwSn+~5<`tVsu6K0*fZcm@p2_dmUwnN43!gFhfx zx{ndzzpoenj{N>dz4-4sPet~>EA=wftQ7trHjDTLH4uVcAtxk9E91k3{Xm}v6`LaN zLq**wI(4OmGijPY^zR(1ii4J8y(|kA7;!hFs_!@KCSPsMW)tbGu;L|hjMcHJgac-!(p(x=_uMc-XWcRhj1??P zUJKaaDP_XYFPgk%%Cl2a{uqtaqgX`xC5%GOxjGbStMI)Vp>tCrVh!L$qQgXwATSwl zi6-~8jj@|(>l_f#=tX*;G<;C!LVUioV-dPbTaBY1&?oDpZl)fbuqTdTqjSSF2xzBthS;GQc3dX-ed zvUyj040T_Ir6wPg1q>~2H?f%-w%1s1#V)GC5Ubx9x zBO-m-wLoN%FsCr7%brF?nw`Pp3lHIcgC01VL+6al;eGfdL}S3?!0;+cB6MqeQ0*N^ z*5FurfT4c~mi7v&M7&M3;*@e<^|TNB*C@ewF4`N?2jV69kB$lK|A4Lh%fj!k^Y+oF zxBb&x=-;yh5kjy%jOd~i4QbT=eEx8YK3>7UdV-oSz%3#wY=#C&Jvl$)cZr08C~S4X zkMXA5A3lOA0;sE}zpQh{>^CZT5{_@gu*5bV361S~>SPG5=`uX5-?w);?e2@31ik*Y)6qx`jy6KZy!SvAAe(9wS1Xw%R6y5I z`|zg+Gge)Hck;)J&3^p;{<@L<-@p3DNBF~(`QKQeB*50#`oG|&L}fi0&_9MN4vtJs z3cvZ96`9?jaC1=rHA)>WHwrZeC-Ir4t9Vw&p5hJC0St%Yiiz{uaW31C63k-9GGd-TG zo@VV+IJMh?$!;uEvmNQBEJcbtz<$I99#QbP>zA|=9j;dFg*T5*7sQF`r%vi9tX@f6 z3wW6?)LTE|VJdE8=`>nQ(}@y>lXj0JdW5mS0$ny_V04iyDazn^QVm1a9sBKCJ3S9- z_YIsV*TKcJoC=CtDshA7yb{Y!NjBAh#@`Rx&|0VI%cdI&l_9(sxJmtZ509tz-o@QgAoj6pDmgM zTS3Ai4DYYNAnm5zB_ZMnj!FGQ(DU7}3|aPQ=WyUZiN`%rDA~RoEYK&6kh31 zaC|r7Q{f$wCm4S~li@J{4F3;UQuH6e-hYA=|NCwK7d<6W?NoVH9Gwpi3qTa+K$*}d zMKtx**k5>+l~q0s6_o=BtPcW`y`s+yK(nGI?jd?4b_l*TvarRN0)11Djc$ZiHuQ%3 z@K;%)_{tLN@3Yzu*Ss`*-=7Z+J|%54(`tDQO!}BN`?xIDBf^g&HE&-Ixp!r!v2mcCOUmyRJu z`y(h6FdCMKr8Tx}8!+P-i0c>4MPs0uJL5K#_p>dO+23WJ;4{^!WJsbK_EfQ zWW55GjtWUbt`||eT+ewoz3?Kw{61M~Oy9W>@`nm6_S1ryjQjQUdm$pic`})eQ|WId2n`W_ zyd-LTQMx0>2XE;8v3eLrt!db-3g@9*1Qadm?PSEm~)fusx*d@X!O1AaI1Q#yP&j`~Gzm`<}CqWltie!_NWFi$hh z0+sKgCz?w4AiPC1f!I|;pVp#1fmN?&KiG)Dk)w}f&%Ozc%!8=)#ShYiZLSWb4Qu5O zp8jPLa;xz8a^VEJ_dt#tO~Bn4^drAUO(+9vTPTcQhnTRo!}M$i*{nklbXjI=xkxs8 z`WzpUf%<}mJ8uMv_qcr>k9N~FUCH?t{MS@A{G@I z75DBmt6(A|CXryUoLxvNW3kbh5Ly}>^@+Jk*85Q1(NyZN1ESjO9hO$4t&6B-zjKgpblu2~$pp^60i z*(nJh0xoF^od+3w%q=|p&4}^!Pi310JWG!8kE;Usj}Cl)XD$3kW-4oEW?}mw`)K}Q z;bmb2`1c%aP>j+?I6xkJ&p#;9`)E7Pg(Jo4ch5MXh*t4~`%Ue-(jO+B9jt4AD+d*$ z{KL6DkLy~9*&L9%oVt1PwlrDQg!GA`7|p+$BA6ZJ8}9nZg?=ErdJiSV3j54~;hyIR z=ND-+BP7w{&0&d0T1e&l{wmufMJzIEcE=p(c~|MM4%XOa*BbU|s(S+CINs%EnW1cp z{B^GF>K0jg4ec+&jmy6tD05VW5zF}1V;G17*a$Wh)X7i8NA$)Cv@T{BkP*`=?)=|2 zv2@tqf_SZg#Qmt2OT>HhHX6CzkX&zz@OJ7VKijlqX=DScdzbOE>+nXq(S7V$yFKlB zh4x+81(yU}5YMh%`f9GCR^%8>Z6ij|R~cAPH~+Y%$<1MgaXzl;!GG)^{hgxFAK%@{ z#PNeT_`hl-iTp#v|JURGU1$9H^#8Ne_^-^TP~|U=sCb6>Ipoih=2StTAb3S_CC!9| zs$r%0F<~({REfNYs+Hrg6GzrDXe zbV05JQcQDt7uGQ@Xj^FmMwr`Nj+dj_|O3@AZC6YuC2;9vhbv!VCIUku<8Xt z**L)u)eWqX6yLtyj*XCYb3^>?T5fCzNv$GYlzu(sbydjjs35L<>8QQB{tLCu0GEdn zW#PTBB>*&&(~pv~2s<@2@Z;znOkb zz|W`TmI@uxs0-w4jW`~2D6Jg55fdF^9gvVRQ8|9$!> z^#5-&{fq9ZVWER2f%lF82?kITycATmw!rmI^H(p+q5C>FM=ALobJa50I54pq*Nx+Q z!T!Q|V^@X0F0}odkTfe;$LWnc0DFHjD4O+bP4RhUNjq z>>~t%*$8{--^WR4-?jsR*VQBA)!nxsl_9vT2r9{Frfb>*4Wa}bxU&|OK;DJC^3?cdYa(qhqEZ+U_KNHDBnbni8?hu9cx`OYzVb_aD63Q!Un4YevB!#b?{hkz|b zRKUwPN)4d*?x~}nez-U^JuUR~7mBw1nkHmjvrRA4Qjy~qHLQa1jCcG5eTl+Ljf{(} zKJn>Df(1L6QX<%$SOka)N(nQPl4ErnQBnXcA!qEIxx>T@5vM6uT?Wll;}sUVnvubc z-6mIIcHmVe?(C>4j2;ambCReS)=$iG$27MF2_v9A^dug2OViHg7|Eb~^Jyh)DvVQP zzCv?48c`a<)+X*U8N#VFAx8L2-XZ*K*F6t9^C+%*fF4u<^=2+?Awfx59m<{iyNITE zi*=cr#e9J5&$!<|fp%rIT`a0P#$~7~r*QHNk@K^Scq_(>wxr;XB`NaJso2*)x(cNA zzFOW9?JL`J!*)}1Qh$AhPO@|tg`PmZLS{27YS&nVtRw#&Lj6)Tz9CPsxH+tJJjfJ$ zl}_HMmKgcTS<%}%6O4dk0rJG#I%}<)6n+^Z?w8%F-b7I`-Af$^{0`SIU~oy{dRDIa zwz-V_Bq!On2Q5bIH*N4u3s`=RdQTQpWn5LezJ*bE6MetwVa1FE_&T-44@X)OFw)3C z4F~Zfw~1hpXE3btnHhy)r*(Ggm>h<16;@# zyEc}Qz*Z)*HS$3YY)Tn%@QgsWOMR4$?q~SSI&Mo~xKcX@*s2x*WSTldh@cEo2 z_xRe?A&w=^u3Hbf*+U@C#EWv418mj0zfFVJUdjj&i3KT+Q!O(#Z|lea;uREN1=Mps z1$}LnE#n0@*Gs5NGN0;SeKI&23(rW+n@l?{6}s@%e3vor?<>sg@STyzIAuyp4jC{{ zNO)oKzfyEqho%L$f4sbt7$yHi&L+lu3)tJ>(*cHM_7q6kiEXD4R z`j$Jzy<(0th##!fCtfY!92DFzpA~YFy7XmGXa&1h<+CCRoZOb;A{JuuNdA^+sT(>~ z+Dx)kFz8P=ygu!?E(+TM($1LD2;-6b7JE=njd3jI-lVO@84c(JTYW@xE^KwmYJ1QC zJvQMUG$YPbI00entV!y&Q6fDGbbbc(#=dW{Fb)Q3q-QkxJ4pa8{p!Bc0c?q2xhVMV zwBP=OAf4iKo2A%;P|g(S@Z?+PuobwygS(vBA){O~kx$-vA|`s&3vrKo-23YbOy_kXm4Ee82GgDn$-|>VTLbHUH0k#mrfW0a^g>6kbLQQvk9D%kE9Nd zVic-A0}K-mRMVJA=>*zRfc@YZNQE2N&#xMGAOD%Ktx!*efWrrl7k-3xQ}ATn8zP0X zGQG3jjkQePAtza0q+M1h=o!1yUEe?QGP^O=Uy&b#St^u&ihVTybLjakyQdM!TeTC}WW-F$5@)0n5iqb+aAY`Nw^xbkM&$vuro4c13fE z%R4rL+mPd4G*PIZO9BmBc@_glM{4oGkvG^he6KBlF=-6$fVkG9u}+k#rOy!5=Vt zRwNIznjRR0k2U>&>RA88=E6$HPK~ZidHz~K&vp&73^ETLn;*OLH znee>e(D1OpX2v_|pL}V=8WB!JuebIYpYop^Lhc_y0Hp(cV38O*tj~@T8!=8)au$cI z5>h#=!1?Gq^!T+8Bm4_zjNbbdkU?05hhQ+A#8gj$o0*!+rpf9Sr~5g|A%^_q9b%tQ zhVv;I8!A4qp8Z!;4E4EQ>rlSnP?~;$4Afd)O_onzZPkedDTxY2M#B4W^}H;AI|OE| znKCa%0@5jPY-)vEbs#`O&kz}Kub~VjGlpbT7!;0y4y!pp%~71o?H^+$riYy()Z@@N zc5l|*53GNZbY%!UE+S!SU~FRfXNbb&(J$GkG*G)uTmvo z((&kd0Xre2jhHAmjdD}pRn4vue?Yg6P)wKnCPrm_nI?`%|DNP$KydjnW&Lqr`!n^z z%|Dj&{vSEmQvaWq^sh~>;RyJk*8OWnD^pocruW0tV0J-#)_nK=-fdnxXfD8Au?-x_ zpRoAI12-850e8LNjcgL4KRRIJRcXhXrkIfO46r$oo;sKgFxbq>0x8dxy$E1ArxkQYJBQ2$Ol^;`rMn}(3*eD2oud55kfLeNX zx;SAHqdkO*=@V~vta(IO{yrKC5kB=gj+lF`Dqc&kETy^f93LPje0TKY+}jhAypS5O zyEs7biWOR+7<9}ol<;11DKR-Zi1>4QHVEEx*>|~5>}GWc(B&8DKMe06&Vk;IDMW~t zRiW*|2)igwF@P75)A^m3oF8sMwp+FJYuXfwr~~nru|~K((hiE~;fvF0&4d)A2*6Iylkvnh?1 z!LKH_h`n+tv$lGBkgnrRAF4OxMm|paNx$uwUcNhkMW>K@JF;*btv{nywy|pEdS2QC*tapjBwR4%bI#A)?%hL3fAZy{r0EI*FKI)K<>xBkord)^zU>c|MQmnZ;$$4 z7kj2gs1CXbo{xYg)<-m1h=+y{)4{aJWriCQuFXS6lM0vsxCKtTK$@8Xh}@|vvvJhqjyb1srqX~KZ^%m3}Et<4R0Nr7AoS9b2SdS}_#A>?$kFp;@ZjVWV!ASg>c`xL)MlS8)H=)%WW@mmLim}S10kPw;Q zpv>RVFPNB>rWo10lTh$CZ${(l%2W(GI(oDDN>bMf9NJp>7O|fqFWuO2{Z1>mC0~R} zWo!Xfc4XXcYeotwk+*cP$X6vqm)1ntUk;1avT>^Wd>5Bhk~mRi=`%M=V>^qf0K)6U zeg|WhU(Yx0BMrq)T0R6ErqBf;>?q7*ARyBeiX9V-2yX3NNs_S(n2M^MayhKZopNFr zr2&+^$_EGUTbmV5wpKtIu-qK-AKJ8POi)f{x!^S52MSD0%Z-f&IC)=9kjqHdc>~Gx zMEgN$6Y7e?`ZbBo${-a2M;2j zcb;M*>ipS2BgKRYzg7rp@mg^G46{=F(lc+4VovqL{cX+mR#5MApSA8Nw55YZnxGTF z<9Kbulr#7<5ys;76CuDHt=V0h!aj1{Givm-HlaNC_0-3KHgxWg0SN=wAs^i%zRTYm z9hN(#I=F0An;Y<1E`Ba{xhO+t8oP&XX^*4C;t-adB_4{cD4b5NAG1%m8DTvlV;G_I zt`PWTWvw%QgsKjzNrqe8eLo^c**>J}m!YCsR~|KP5}e-=JV_j4zg{y>Adf?I*ACTa z(@*wmN0AXpa%24U&w=D{CA#bqEZw3J8Rw>zhqDhbf_N}g!k;NEN=mxAxKMeoKvChT z02Bd7+8f&~_GSgel7>wMY*J-psJJ#dkRQW{K{vk8Ud9_k`06=wG=z;HE$U3Pqf|ld zpoy_B*vD$4KFbtm6pmE0M&46K-aioh5MsxgVR8o8a zjg@5RZK4Me6&njJH5abf;TraYKawx0vEeBOH8HA)$QATIE4HiekQEB@k&V;(srk7yf@M@bkDoTT{(wR^Z4}@Ubh|3J+8ZFa1vMeVnC;ZT zQu|v>_qriA>)NDSXTAtyH$hUd`Ji_$6 zkvU$_%OT8Ls3E;bgl}Pr2Oh*=?GY6#fkHflG43#4$gpBh4X-v^u&Dz4W)XB`I%*Ls zy@wE=c$116n1#L-$0fhmCgqP$nX{$tau&BM`oL085eUM2@irl8; zJKj~Z+Gg@}`F{EmdgBhQz?1;8tXSvqge#Eb4Y|%9g&H(K`x8}5`V|PiT4x{iRUUCd zAQITE*VQHG=M}s;++#Qxj=|FeipJ@x?}|1(?A&9wpI7poe!$%0PgL*2Q2 z?DX=dB-*qPH_-Q^U_nRzr)>W3+}i&m&MBMN*g2ahn;4l`eBjFeS-wPm7!ZBTdIXjk z#YMiicxue4kllKtc@KtT$Y5I~en3m!3*D@)UBC==0Ub;9A5gxuCgID@V8@a!YvN9o(cfHf+(!$e| zhoq^{*%H#84TT=DEJ??KRt*);+clI0ib_~=4yobfccSbnQ$2H|&*r%mvtkO_tClqQ zxP;ceG$+LyeMx73HP2Dj(GGuoq>H})SR)Ai&k5!K`9c4x6J#x%oJ~F|g@2)+vHx;* zIyJD4Xl&H>Rj(9X6-L&Gn~`%N0uO`)U+;G>$+yWH*7T-b*HrwF3#D|36ECqX?H6Qj zaqDn8!#g;AeZ=UZUw}z+v)F))T}JXetaP*S6dD3f&O~tHIhwnAAWNRr4hkpA&(w>N zE*~m_p*-E8htv$fv{@x(k1ViG-`8Yzd^OOv39shpWkui;&L#6ES`Cb}c^>)lGt@k; z(N!KEJ?D7HDC(;_QES{_K8#sO>G>1iY;5j@*FvDeFGdwwVKydIKM!Yb_w&n0bib-@ z!jtz?*8=XVuP3E|*y`Id5sI2oZfQ;8rS~`%Ia9&GwkY@{m=<~aZtz!{ucDOPd55i6 z^v2fI)X@*a{ySERn`x!grP)eWxf@uy4=KnkOX@DWuW6;Vmh%RR+%~Kd#k{0rmOUt# zBT!+LKxefYriyvoaf@2Xt--u1o{oRePs+mKG|A;QvBt&y<^jD$1R6{++DmnI^&$fFh^Ek0Tw?IKbEImi?Zz^00^OW2j-%->|k+#YO4et+}zD z!!nKYH)T2GIuD=B@N>Z;UkpO`49GoH!(cN!3Clg`!*ZNk3Ig|ee1rK>y`W`>qzY?+I#Gu2&VY%NYH=_BptY~= zD{1t`+`&WSuEn2LG?JHN3us1|g#Dh(6&dhFS<MmSBeWC5m1BoL^amr&@D*pL#Pa7}MmY+7M?g%FyYQb@QhYw2|(PS6}>& z?HHpasvxq}Evf>UmdR_)tsDLMbh)}*;3^C>J+Zw9Z}^jt><5KU%Y-KRDVEmJmU#W( z%Telmi~vaY;pp0U7P5bFiW=Ff#1239RPR4_M*jDE%GuEbVDq0>ZlRja9|Gxb^3a*c zkhvBzxx`}DGLqkGDjJextb|HcN9gJkOXrEW0{sBwvZmh`JgXLD=G``*`ofWF)nQZ@ zYWcN3E71D}ymxc_=4XKkL{6ZOPh2*;+b}ceY_EH}R}cW>jQWrx@1sc6VyQSXb<~Yi zpmCVp3G22Y8?WH9r6TbjsDFfxc8b(DYV4m+#n;;nrt@P84A)aAVl5nGweI+uovlH) zQ2}fTL=BEt*rPoJCJ-UJO@4z3R(wz3E~5TvNs0k0!4mfc-fPCx`-5KR#aB{|?W9GT zAU7z_)%cl5q@gG;b>u64_KmdJmoxidk}Q8CD{e9KzAvN1o6=44ki+ZMQ^dCudc`ib z4`B{6ANs*S?#k<^I^sR~@u`zK_`#l4mX##2YmDGH`)dqrHE4+KLH^)?pv9kG zdi)4WgM#-GD~P`1I2Hqy*K%MRF&&oLA`{sbh<1^)Fzl zi$EsBcp{le!AG`wQLs&*!)BSV_hb60#*o*U9(&$?z=F@L;oqgrp>N0~i*{3AB-k%V zBd}ADH}@;z(r+XkSiy&I^d8T;WU1b!RIIeQ5lyHxn&O~F#rs+7QOr9B0N5|ME_d=M zzQ@Bug<&k&td|hVZ;1sDyhrKv$Ur1P4i>p*{W%8A~d0v@9bRyU-+Xm?I1ibF6{+GRm+p$ciskv>Jhs0`#31Cd1bxa6U0 zS~Rk|>3a3E1B$-SvU7pBfHMJ15^^nBVy30y$Vrj+sB6bBHG|ymn~e_;A|MJ-!WfZXD1r=;6Jv(d%FTsQ$+1Qb>F6{fzYvPj zWd&l2qN;%B!mLXvj7;^LO8J+nTRNn%Vgm=Ils?z%$}`h;w}-J-%!~^;Djmqhh7(9^ znaPVME8YS8)SVh*=awKp2hL5UL#$GM-t4r^*DRe&HOz2Zz8cAl=x)YfNN={93mRqP34%rPv zUM$8*ba}3)H3XDM!~aFuJ4R>1E!)D~F`n4AZQHhO+w6|5j&0kvJGN~bourd5@4NRM z_uPH}XB296~6r-V;4j}RzU>t$ zv76B&5K&{m8{HPoEq-F%a8f1oYDz74{jmm!d zcqhjZW|V=GwR-z8X2nSfOfO9B>9YAA3CR`VA2RJ^ecvlTKHphv=sy*<|H)JHzvSMpHd5oiW~yTi_@h&bl*to4ju`|c99L;qp>#+2;q}A_YLn~v zeO z6{0B6NHwLA-dZ&|BvG+X7+;V>8Z2NGugZZS$nnO!Zrf@Ss>+d72940^rdqZ=!MY+5 zsjz*+o@ke@>(nv}m5|iAYmP85a7-r@AuX^zdmiF7FsUIiiINPYvs_HjJX3ekQ1*C{ zwRGk8ebxBDtVAUtHc}dQIdSgR8cl3#!>k38+WcdZ$!};=Mz!_INc{CTI9BN&?)zcB z-C&PzVbizSSkK0*?EHz-1ku~gPjk~tNPH*T^KLqP7TexypxJ-H)T6xQKxm&Qj`2sB z`hQV5{3DwGUt-Q*8Y2IPoRj(A$T_oM_8F2zyI;sv3Kbu|D+eZs3+y&IG>afxAzC86+us z!cRiEaN~;GMz(dV{Ai4i(k*M%&ZXmj=Vk;=(s%g5+$>MPoi+CbIvE0mL4$yK{achd zob`MSe+?5tQ;IF$-e%w-a#_QUDxoso0DS_tA_-1;!9y$@$y8#5FvbrXlv3xAX{RGo z4!xYzV%XwvpsJOYNGeh*`0%O~je#i4pX!7OOh$A&5>?-w;F>>~IcfRReKePqG111- z>aKJtJB?9mE%o13DiAufgT67Zw1g#M!gUCcUz`X@lsqnwBc8OU+`afB2XZRR90y4c zr*%WTdLUz1`~`8dR8a@$=WeqPaeXIhAN??hyAshp*zn4zq@S&r@0`S_@=7-|_tdL- zLpUVNHw4o*)c4EZxZ%zHh2jS7&LY6k9;um~i^-(CaQ4=7YSvIBEV6!7d~*NY2vTL) zo}=7B!@$4C?yn&F<%r+9{24@~e=I-$7vrn{6h!}QXw+W6AuphOY}Oe3nD`=rzf&oo zz=m~<+8{4cKxz<|7{t#S2BvjV<0S!>lxkwi3ZmIi38#Gh8$_?NGOrRY?@&bZb=vpM z`)%|i|3iq6#|-z36a!acWy=G>lf9R^lLl6%9Y*$hdJ5(2|ppt zM{`0eO-2K8G6N|qam}zuF5~fYg_8y}sM!&Ta-sS{AOd?iEk~`FP}TyH+cbvQV@_vb z)6B(-6Z+JHaT}h|#fwTHnI%GHc!U^**If-fkYk4~7VNJPb>vJh6cSdN zv}O`(s3mkvB15&#M&FgS%~4>4G=Z>$DjB7sY?Cw4ot$#*+EE>vxlK9iv`haO6!7bZq;k6?P|;{Ht78Tras6OKpFyU&MOlHOQRXZXbOPj_Uhol$tqS^-F5YVITPcAqO&}lv|OEsE5*^q2t?xqpPQ3hVVA7Y zO`)CN^Nf86x7~|*pR1?;`$1iyR|wg5Hj{XdE+!EaIe!}Vppfbb&AkPTZ&(0@%_~fp z=rmQMHoxS^3BZjd0y{>5=WfZ;%2B9p{v*jmb1kjRKIJz4(A4>7cJ0bZqsL+bUHUmE zMCKq~YVXNXNx9Qu>K(etm*IOewy?XjD~R}lK2(- z=eG!;N~fPYbDfI4kbWv^0Bg4T>_|iO;wl}v{zpjfizQudSJ`TRO57XAt9+mhHufw< z+~+M(2h8sLaBD78f)cK_RB@NYg-kMK?r71+bEb1|vyopwOPJK09Cv{?0d_q7i39@- zFCdoCMHlDwS~ffE;B;DfL6kX!Zwr zfx8euf!aB4oBq;n3D&W~n@WFi)^bB45A(pfx~AwlTS&yYtx+AHqj>YP`i8Z62VF*$ zzr=1i-FulwM0FR)=aJ#tsC@Hv*aDPR5kDkR2^23*rqznQRgH_ZU+6j9<(=-CJ)Cb3 z>1Ukl^bcV}3Re=7P^?f|N#iJHgw>G9ZKq3`uIoDYQX7lNAo+S5ONC(*!}WZ+2Lc#_ zP)LDJ9x826R0W0{>$4}e0#8vqdgfyD8Lxu5@tNymm{Y{Vt+aQu=v3n_u8k4@_ixO* z3~k6aevK1!)gW$V<`hsP6!XXdr{h*lG#4YBj_HzZ%jD`|l*&Te)%PlX^lCezJ3(}X_e_u^@ z0U_+Oq4}KXU_z*ZMlC3zU)o^|SJSpG^K^d57R-13DkvXms_5UP$hfpK2<*lfHafWf z$g#ntJL#B1>r8d&>fvm+&qf41omkjU1^3$YKyjb+;S6x#_3Q8ktB*BP$A)H;ozOK) z?|OqiUV|ygzwBWR-7FIO>iNYnI)6k8w~QysCU%!9CU$*@aLpWyZIvb+{)!|*dd@H2 zTcSm68<^qS@b+$NXd`q_^ff~e@Q0>x-SfOHG2n3y*u)Z znvT&#R+COab%b3yy}vMKcZM&2j+e)zcn8TnBCcZ=;^ikuR|TUnAaXeo{0#_W>BGkA z=^G*q3H84bD+i?mp%nG0Tm$FzvE2iC3mGMlqqyPzLmm$$Bbn*&6Fjf^BirYH0iOTY zg!=ztyot&eihtP>X(`SIlaGiAAR{YF3o=mp&T5JXhomw_Hr=kpRdR)4~(uS|Xj{P#}A{e0= znD#tHY>m5)s!|?u!b(J`9nhKqj(g{R7Kd_ds$9=tEIP^oN{6 zF$Ps<(>Ye+dy&zAI*o#9IpOHDTR1`n|6b;CCC?%H`Q1A~FB2ONG1Qwr{z3SDaWw); zQE^*Au~FfBxFqrghHwTLjtsM7zJ}6WAfc+sL8^CNWbR)MwW<;B*kgw=%2rnjGmz4j zEum7x)R*gJ!6*nG0+|GM*vU4o(xU!F{z@r}Bb`+HSy&EY*FH}_hZLUUXyvSGqODTm zxR)?ytMG<04BE6Th1_{b5Vlz=mDLrKy?s`$Tdw&|M)KwQsSnW^ckSl-MUxLlh;Cc3 z+oHeqKxEqP6>z7maayk@7&(XdtzfKk(LYFFpunLk)0Nz0Ha08QMbI3EM}s0Wa|_22 zV6n08HdP@Q6_%foa3>v;0e&i~6EQV(D~Tb+R=Pj*AVh_-&IU_7#r3i;IKV5X5~k1L zPuv53t_ghO>ugw@7Tc0Lp%Dv37MWP>*RXoT0_)=UMW0j*{I1X-~R*9l+?&E zP5W#~qW-8R$NxVMJCr{6lK;)h!2eY@EL7I|YeV@ROcHG|&k;dhfxn}nux1-Hv2p=u zP)d@Xf?&sCExJ(N_3YgKW`S?7oLCW2#+&6v3}ea~O*2=0TE^AvF(dWrb&|vB@Tj_a z>#Ot*Ouw}4g!@&C=qQD8<$7?O69}6%ElhHR4Q-?}Y37Y723d2jNuBngYgUBD*a0Sb z|FF9yX{W7?mgs05^pK)!=21baIGdl0sSZU&hIJs0o@^@Qoij*tf${`Ly2L#&m-9pf=MT_~KwjWK>qJifP zqy0-_8fJZ-A(X(sxMowcZ*~6%baGmbhjZh>@E&$A4Jg;o9HjHO{aht_E6>aAD#>Y{ z;FE7eOYj7W&C$*+4q31q3j~-#(qhPafUxdbTm%!Tw`H8|Y+@L&{vL~8i}WHkD7Nyk zLm{_}xW_FqApq4q^hx=MdIuFQ3(a9-+>mLli_+qSQyRymMyQP3B{f}}@JM8lc795k z0hjw7459YKsp3F;5Fuu7M~h4o4;gkY$|&4Brw(}$x!~z&*o9!H)9cU9MyGqBC~fG& zY(5SpxF;i?Yyl_Lu(xSHY1qZ9J$8FU4_SlLlkT{d3EKoX=a^Ug$v6jv5@#% zdbOqeMrU+2q}9!Ivh^ve{_gGe8AKo43g9K0smF$6%VK4+(XuN#hpG*gj5ZmL7E+lM zi(-Ix5-pClIV&Y6*=Zd{jvlZ&ZRc!zQa3a;24m2o5Qu@8U7UT)8!SDosvwLJ-2G$} ziq#x!f+?okNNEjr(V*7aR-@VH>i!PRI@SXm;54{*&dY%ABAxL*FNS6SM1SAzGACj8 z!6Hhh!b@c)Ik#a(&(v$t>++84)`=VvK7%fZUOdC}&g&-uiXc6ht3TbH8fFC1@5?HN zz7`J%7y7-G$$QLm&L^tgljr}n0NoI@p44Tjesoj3OCz@itHb;0Xu3`}@5!F9u;wo5 zlD$tLd?@BSwP*@*Jmb&glemy=F8&wZN20P*uiK=6b@coeL5*f0`YIb|`dl7;&9!rV z)wNT65Act(+c{+m-1vr<3gQPNWR*&p0@j^1@lB)BF@5zym0Wbf-wfM-@7cQMl?B9q z_TpZD952%T;pP0-+yBRP7ji;+W1Bo&$*`_Wm?EwgShU}-Zk`-kO2LUs63DPI+e9}> z#55#0*KtWC*}C>kTCZ(?9U%zc?j;a;#|;ImHH0=^gQu-ly%83Hf2YjL`yL+t@)Y>t zwKaYoH=d;Y`dY|z=X2G0<#Xk`)hyTfYh>?BjbJ#wa^QLIeAnbf_LyIPs zQq*en;$$UEK!7E6#Sj~L+bNiEi@i=w)q&$djv|(dp-u2q*-}ictgUomY!1f0(e9)~5sT%e=_ig1j+( z-caOZu7DtwFnK1#K`>$9F10)%p7qA+%EHF_^hS-3mk?Utk4_qllDL%Iq0|M_vqA#w zXe5r+*SE#sjSZ{-8W^1oEdR`Q|K6s{=*i$o9Gs2H-stFHDSsS@<&32c+%E>6$}>@u z>=(LGZs_50)6GL+tOC}e>};PdVYx764&o|ChZTc$vVb$l+(c9paVhvdYq5ir`tb#f zBAZGSVH!=7;3gFYcOz1MDdFN7iXstWz$#x1yy#p@u1j<|Ag#f&-n?icDB1O4sPXHp zZ19W=I&m0p+MOm>;a89tUVVV=Yzp2@n@U84not;)Xu`g~7yPX=k7NL3rm7N{czTwA z$P%2z4ZWa&GBm}EuRyN!Oo(Cbdkg9uBIgk=yiDwII3aIq)7#W-mRTVq-jL^*pKd~vT z`i{6@%spl!783zvqvwyDN5!CA+%avZU06{|tPsH&adV-(X0<4-?ZEb1>+K8BPD}2p zL99j)FOl9hacaW~G8i@LHHv;r^|K&vcD-Q66jcbs`2)YRMKlxgkkU5~f>L&y9GIIH z#sSsS;D`=;hWt$EdUV?Wz@0vAw@rdUSJ)bHKal!}UAnQlahFX}ZlAZ6z{u9jin31^ z_^PqGDWM%n+LI?g$<0S==MXfpbAEH zD})U)_tQ10?0vnJj6sA2Uy+9YnF%6Xgy=Ws5eE!$w>cEB!S81-8iZ6`G-06|+M5IT zT4HQ5Xp&-dnjLt4Ayo(z2#uY{l1fe3FTg(VhFi2Plv^SpJZxQLt!{cM=?>2HAnU6& zW_Oj83;jqRRBn<2%aqdjL{Ed7hMBa(ITu}BtS``o0`sa-AUP6>tqfSmPW}EnjUGNz z__uE0_x>zKQBH~!++A;L$lpHWeXj^bg&XuXNVd;k`V7gWkiK6SZpc_V$J(5u-kKoV z4#(P-Xt=V>)s^4OON8S2!+GrlTqA(!1u;dI&a8FVGp*AGY|Zb9Q3ONB?|~@wm-YdR zksku;z_auiYU$J1>#TQU0eAuJ9=RW*gnZ(VtNa`10YAjIEgsloCc^NW-$xcibKFAbi0eg{!Pas>0}OZwcCr z38BNSB-`ikVWLEB^siEqo_M}dqw4_r5EH;hRzdmM`0WVf3F-})U{`vq)UV>h?w|qe z{Q#8hEnU%EJpb4`1)5SUFY1ul;+aMfRb2eyzJlpX8$(P-MkKkrIt+<;36ABPeqd%B zAyw^6T@uS;bU;Ni10HnvbdYVJNPMq7kxQSg3ZSgCt#7?yL;kL*7UF>L-jIRKfLK~d zm@$i}0<0LnVkF^SaUv+-T=SnA#sSJ2Hp@r8T4ARS^@*GWFQozJtUgvGsg8GmP$aaWw~m@(1LsBR)C9eSknyYV|#Q7 z63J=Zp=Kjf;>9^*UJCKuS=2qru4T(m0Gfii_1sW8_-JUj);GFNN{lvh{@6zZ#e4v- zLfhv$$JgBSBP1jT^*4i|4iJOkF3fL8GO)2Rzla+4p1+F=tGo+9;kTXgq0bNncW=>y zomtw%R1jS4dyB$!mo4360nY?wq_i7pHn$dmr%Oz<<-%yvvUd45m)$tG30Web$>uG( z8DWJak996b&-1^`EXYk7cH{&doxBYf(teP0=4d8GmvPA11IGuBTO@P;5IU zBbJ<;GkN306uP&)I^FZx$wzz)cSJ4GBErUs#FaM+C=F!U@p@E5+>tgT27}`zU*rNYwWGuYr-$ZB2DTi3f5 z-r*D8jUHb_IGO1flB9oXh!bxOUD3x~r4`F$=5@GmcBUDx#mMbFQ6O)_NvGE}u~u=V zxx4-l*v5E6KypVl@SWV_v^*yYAiR8Aj+k;%PfaTAyk~xJ6ETi=&DbT%mnK==Gu+AE zo$7c-@@7C8AC9kI_6l?P9Z@mg7Uzl2_Wm=1j)_j>T)N>bDvybBY#hK%Jn{ynXTVsk zXiuV+`!m>*uB!g`+ayZax1O?cRQK!V1V}XcK=5x(cL-( zVQp<2^54fZWt{8Tzo5O9qkTlqhg8CYSNhTrdq&iJ$n%L%_cq$!Tkf1BtPys4&-Q>f z;l8zNu%s2IBn5r0b|#qTA4Ww#*Il|9d(TlTZ!vnE14_C8B6V30qu}tcM>`OWD3fNlt<|DMXB^@* zQx3`T0f=@Ul8>zr+2P=h4ExR`%p%#}^*BzjNKA9M^VryRDsD(|$h1+s(CM->8kF+M zvm6j5S(LL8Z9<<&z*=0yRfrKAJ?d8xXG*fqu;cs}F;+c4ay*_{_Tvsc3punE+D8z; zj4gPZ1G#vOdV0J(7?K?iJ9fIVQC~)HR4}jxW{|6FoYxKX64%^U~sz#ZwlT zC}T-|#dz$~^exXT%P=OCVz~x0;VfO`2ELld6s}y|w8{o}5e@{GmYryb=+v{wdRHb) z8ex`KFb$r2G&cl$H|Wi*g<@!MX3w@asJ4CA((3hb{bpgNU#hD)Y>$@qslz6eL~E#V zl}yVTQpwJ^14iy+^wVEbfaWKZV6k2SV=F}Y)GaN;1Ct+==gz@+GLQePafC^HsEB?hKK%|G zNW8^yN}LSROY+C_6L|WRD|oAwZ=i}9+Ph8bVeBqOt$S<63h5DvZ&kq$U_Z2#`>kP7 zuLlxX%XI$quTxymM>0-r*O9y?Otr_-lL@4xY{Q0@9dUFv${Q?r#3SI}F}8O$gEme3 zkW-+@FLK- zILdk9eAg>Reo&O zsP4vs|FPN>MTJCbkroyHHzULeOFqQju!H!`ovI{A+sW z>|n&a9QdFtgkw@xPc2Hh05m*we>Xh2-E6JRfQ8amX;asKj>25F4@r^{n;d)F$Nm zseLdNo z;B?zINDz$+x6AfImLk?Cnbt-uh7IVh!k>PiKX<(#Gs55Bxb!mbHc>yM!WRL7Fn>WH zNAxD18J_wjks&nY`J(l$lkuaeJ(q+&_^wShryGDq?7%>yCJ@622!%VAHIzYAOW5(a z&m3Tp=)kA{OosBBo^Z%az-Jr3jYle;DcM2P`rst4idbA*wY`Pn>Lz)NE35mgO0PNt z?*NgSV2&XNgjZyzZ0n%!%vKNMGKfoB()`RZ3su>uYn{vQzQ38NCHAaG)+dLkrLBMZ zuO~pZasbb|D4YB6+DdpRQ=~HAsrTTz2VC>NxWzu&OzH`H>Bp2~_q#fht-DsRbjpLz zRE_V4;DE(I`s0!hsG>q;d08L_|`-i&{Z>tRQ02+G$n zhTR=CRLRrszQnA1;zV*I>-1v8eDT;iVc~{(vB!LQ<1y|47n8h0b_NwTY$ewV<*OXE zTTEO+b&rzeZ>YC}Y=_9l1faEuYF?+>7!&e1V1DHAD|mhWu#w=#EaCKnoA>b9RN#*8 zu~iR-i+jR;^1vI2Q@}QH;ZYpkEaeN0c@6*ZY!Y8sjUZJg#~ZfA4a8LL0k>tC#(mpK z{BDo_^FjccGi)kq=Z?4l?KIqHa6#g&b-RE)tb0G1!8`TPH*;WVHtikfWLAxw`o_hV zhBNG&Bo{kD=0G=0z`CgPN4_SAOPKQmwQk5#pObr(`|8V@6t6GWX58(`nE1uVfJzdd zaT$*Rn8Ls}4q5O@i*WqpPtO(Nj!H)m#9^BI*UY1U$G7gx!+6ByJ3G$3EsF`M;~rf_ zM~(BFlQ7^Xx7E2{ioGDG^*m{; zIv!rn2aCm(aNZiZ=JeVjE0ihgd+J7<@ut47$=S~pID$KJF^y7yu*{WLJMX4s}YI#6)Boc}yMM^le{VebxBmO|Lrh$&1on54q z?UpF5qoh!AS}(&)Oj25JfTH7V5>NFB-Bc~e(*dTLYMivB(rpffpsf@&C&6^VMlhX$ zX30cuSfebDR}7Hwe6CEUWE$)roC7PJF<5J>oQqPNmMCs(w0T!Z0rsq?X(Tl(Wm!9p z;motEouP9O-7KTxljxVpsu0#v~S;z<5W5rVit%j3+NcG`AvY$fR<39 zOC)#NY~FejLj_7VA`b}qhxl%5Gz`5g%9k%gpOOau8K>v{6H@!Pxyt`l0R8v+mr>CS zP<{OHA|K|`(hb+}{+cwdf|QWqf<1yYTh>V_#w!cNp=R~hUvMSY@yXRW2I=2CxZn3Y z+JRGy_|-#+xYE-o;z_g8Zs+$!?OJ3LE4bkel&_)9 z!p|Zve)Rd{wgrx6%fj)LKclRPcR;3BdQ=%ps>|;26&k!<+$)6C0~@q7ilb2IF4eh0 z;;@^CU<=~;dJ)uc@xMClw7&nnKL)ky_g?q;*(v`>2c`MnpUyvE?94a;DZ#(g-^vfA z>gy_G7bwK#BAT~VlGWnyo#ET6&-730tX?03d>UbWzVj+GTbh##JFghLGu@^0)#GK` zU42PoM`T};yIm=qZShq*iJPB{Z$LI4K0yc?(2(L}#}j~9ZwNURk;u2!<8=tRom&VhcX^t7e+zu8lP;5hmZ6+8k8xiKl}hF(8Nv2zpoF=S zQx`#5)Lk3mqw2(-(&>TiNbMvSR_|DQ5Be9cPes`up5pWTh5kqm{S(#sUo>j}D--v898t*WWV z+2Htb)WqP5KbD`rji|E>OS^#WUmrHy8D^_wK^|1c1}C%`m^3LvS2-kX@H!kfq-@{< zvFOwh^ti7$tQK^jz-n|M6G@w7Wjt~t1V)o)M5+maCjTRhDuV8>4_y=)o|W(!Rui8; z|M_eAC*g*F_o4p>h1xaAPvHh0E4sCzvdTrRPOHI1Xo2j&@Ej2Za&qLCuA+#cqIMPy z5k4tAWbbR>H*yEdPPJSZ;`q@FCsH%hY(3oUFBL{{xyKnRXq+`XKAwabX&2^ttCE=Q z6`5(wB9#fwk&kX7`1J{(tMOh-(bni{<-oaRS@#_1Lbux5kZVY%^SqoKWUykP2K7R} ztlLck4Jy;KwT`v{R66qPyMX+U6hrk>`EVkE$F*NG|5T?PQ$s}OpA|%>=;NfJ^m__A z8>Q@*t(rGz7Cf<<&gOys^)m)0!48P%47-0`TMsjM2X$=WvG$5miM0#)K@cb(J;DfN z?^9;<3p**gd;YIpCE_1czjYmRPpqNlP)Qm3Yi4Sr7Jr7?<`#3r+bgJ%2<^t6`pzH; z-~*2<(g4zkGZ*1I=O8Gwa;Qb(6e6kl^siATBB=3y>&har3p2QejGywDZox~$_N=q{ zWx4tNg7c&1VG@q)C3KJcg6eq^od@@O=9%iRI}hs|*7NxcboM_E&HluK{&#mSY+`NT z@#(5;;A~>%@z0^DG|yi;G(Oq*DDwkC?B>{*VrmWsj@uxGzx=<>4mB}2vVg;F=SFTH z9%Je1Zf>3Zb_ZHEl4U=R=+LC&(o&Ob{)^OaA6vLU6S9uk&#CUFoV7%DsjLT947Akw z1wl2cjbepDY0PN>AmbNW^SY<3FRA{{jilKBbo~G^W2yy@I#}c2QQTpc4Nn@%;BVLm zI4OyR$uJm43?=^k8Smf_6A0dJ*`Kk0^vC%BPkz#W@$moMS%_M=n;8FnApbmw*eTi1 zq!jWEIA~TAglZR$+x_~>L(Pq$p&)lC!^tQx;&2(F}o6Ggo}H*k*0*RrHEmSdDZ!;j69jdl#HC6iK(33 z+0^sLvV)Em0T2(R8Bz#i#?-jMN<-GjkV|XmP8wSUvn32tQh^aPt2WCZPi~Zg581JB zN+z=hhp~eG@g+ek^9Ps2sVSe<#mwkO%A(Y(Upyyu8zgBSe0ag`R zxD@_qx6BrFNg73r84Lz~of*Gfpuag9(2O$GwhY~bmZL6-Og3)A_)cr)B4kued-rkQ|GEO6fYg=%G9UYtmPf@WUfvWs{Y1E;LLY2LDoO*xP2 z7Mf`g2%2@iBIiNbEnDuNw2HTt&OYn?)P68ZeMhsgK~*{ z8J$^eg6^Fir6aOo2j@uPFxFuQXK&`#FJ-X6V%992x=kG*BXi#qTxFq8(&7LxQJHy6 zkSGAGvA{U_(dkx*OdB0U;^2!21PpPRYhk>lMrcGJ!0mckt{Ve?L)|RrRd(o|16Lv| ztfi>n(SBfGjkljraAt(UP6|rB%*3GtV{>$_>n3V{G~>={_=I(VGs@c0l0>Y5&HSkG zknBmI#Q;;$C=3@dY^8j{yIY*|x(FFbSi%>B0-27H$;;z!4;eXDG$CgENC4zPlxP?v(A~|rZJF_y=PE}OG_%<0GVKWf zjFWA<Vca;ZKCE*hnU9jIz}GY^z%u13d&N)4)9XfwTsnW^~TkJgh!I!s6(K=~0YVeo_u z6O-+o@YkvD{x0T7`ruBRt?O-*@oBjA6a}E?0RXDK*3Z#2OTYM9rBTPiK1Kvt8G?!W zsmZ)wZbm_5L2?`sBdmeA0JJJ}&=jLJBrWBH4z9ekC`~k_dVuOz;h;uuKi1f5ZkeCN z&9BdpH2F%us&4BP%FK|lhoKooZ+1JNcaA0Etso)kl;k{Gotn|p99wDhiBmo;DcwPh zh-2%ZfUcDH96%xM9en)>^sgb;uy&nM73>j9G3WP?T_OsdcxCU1*~#A)9Yi4%+7j7M zYCXo!#9eZ6E$J*(K=;_GxC;c7%?f`67kLpJLV`A#BjPbSA^rHln^Wj);L&ofeG#5S zE=J~Z#GnvB(t@v9rlkCG2CzA}4-RCbP_61U&{4Bj80ij@V)kMT)>pl5g8l{TQIxr) z$l;ZNtBptfS zEJ>Dp@|F#p<{KjW>K!OYF%#VhIP(vPiA5Z|v|sMReq3k>9|I(Z40*!C5T%Z_iM%zFmDc_>24cwwkcvQ;1v97^eIGu2qn>pje; zkdY8!!5myKgliLJ0N_aGPvDp?Va|iG z6uZM2$)}O}&19b4Ta*sZ*IVXU!6h#s`XzlHBXFMU7&EgsiMpxml*T$!giQ#weIc6K zbN-O}u{2ZTd@A=oZ%(LH7M(XQS%UJG%<^h`+I(*ZgWD;YHTWtwI@U^T1rTk*Agx98 zgkRo#qlik>jF2trh{$E(^+A1He)!X-Am|0b)AM+R4TdTL0>j-FDoVkx#C3eP5lVXF z!wAYHh>LB|9&HZd_p*Qe`~i3d`HF|q6Cz5HYYS|b0MP-e>(p-Dogmj0qkGO}-rl7Q zBBVT}s+X@`uZlmsz6>&tXoIFrpV!>;c5wd<5)WZ5IQFI$?v=%AIU#3)nl?d4#JZ5x z7;#z~sv^1Y{@}_UZ+}Iv3~c9p{GR_{u=}#PXL;R1xnQB4J+&-1 zHFaO5=%M=Q5wHONTM^h{?3cKo^pYPOjLKKcOcnDosDG$vi2u+jN&nwmbS(izz~n$Z2d6z639|4WNm_<#6cpM|Wcg_(=vUqrBfAy`DwdM9(9;%th zkS%=m(skJbtASU-u9^lj%2Q}WhyW|Mn{F2^3oqoh9+nV!%PVA4p$`*s6h0DI&J$0V z+F00K8_(>gsNKu9FPHb+MRh4XEJ&P13l>SScZJ(j07-b(N==$t32n;`ZY$Qp(7ZAqRNR8= ziNkm}f#XG8KEB&Qzn?0@E`2{mZWkQpgkkT%YL*NQGNiYuYasja+s0ete5~d9{h;ahyIK>%uAg?zRyR{Fa5UrwtTg+bX6k|)QWms zp~l6(35S(~B!8;{VvHLR^CJ=ou&1%3Br5}Th51ZK?_PPW<%fW=X_kSc?Xnp2OP+UV zU9BWU84Kgn1WGz%zjNQaU)!K|R^%NGN{-n#^OxVQtu9yZ2CeGdYI0zEoaTnO@}eS2 zh!JIFVU{EsYeWa9`QFypbaNn;UxGRbtY**IKZb!Mpy4^=S$gaqXY zI^e%26i#7k-I*e~ysJS~0fXL{eURUDF`ubkfYZi4>DpfM9PO{C>vea37QnqW!R?P$ zcbV4{(dHK#u4@fJ!!pU>MOSX)HalI8npZql)%{qXakgxOd#>(^-yuhd-oJ}=7T^MZ z`0>Cvlyjk#^^gRmqr4=ALCMYAbQ zCg#<*k(E%JJ?shp_zbl#mS}u+P7IuNE7?;;+jt~usbcp>v8e%ej- z*=!4pg?84CfbwGPdeRC6_pr@xwU4^r(@xD7;W3v+JK)8f8VSb1#8eCwa70*DQwby{ z!OuK#h+YXRu?<=y9vW^rD!N46GUycvCPf2{ zpY228??Viu*5OOBC#e1BEXa$jW2@IDa? z=|6JG|EExt`eX_J!<+n{@%PVPf+nAKdq&mZ+E2CmS%#l_vbwX1Y$9}T_4mi6|}q~+1@yypi#y{=YWj7*u9NqL?gv+iEmpWa@6 zf9|(xwMeuOrEh{~y5~N+1$iGy;84*i4oUr(_R3wY7AE#a;X|1{ZpjP@krYM^m0v*% z>4O&8_p)<+N@PYQg)l*Q;e?gG!wB{o?b5ZK=$k;WN#p)He>{woEa5Huu9$S0qnB)z*ln*})ShQIav}C?MSvQ>u*Sb0^4A-wmjM80`83q() zB`w1xzXKNrMagtr9qX)0j#3w-Y4TgrvlY%FN?~JV8*uwClI^1D+`JB+|8B;%?*o_j zK3}$(KVk(e|3e!63@4?}WNGr>qR2yPi82EffQ$kh`D=$nHHcKFK0s}e_m^(NP-R3jFr#HUQ!()B ze8o09zV>6-*j7s7GCdeq4jO~xYbsF#wf~VzJF#J`v1IhVLY1g;P0VQ=c#SM{^p(>V zox2jV-<7j@Ql^>ECKB;iWB7^e_#qa@#$hQ0Cx+&(nAgVRQM7`!iE;2Of!9Y!QQ7gnXwoXHuwvL3Ivz*qQ)KJGe1c=?SI$@ z<%%*ky=Vxe1c1?i%Ym9)D=V1@ zbJvgEW(#05X)sJ8{;1|A;@HSp`9V)-Bml5(w;066EL_GUQ!Nl2&wlk&2eF$eDc2|? zkeGdXHf3-78mBkFWf)Vacq6HSqWu*9gsVedbpT57%uh|rpEyID*7N{D_1T|^3Jd2s z-`$t#4@xB_%~0oIf*VpX*E7sH8c`Wq5~(N75az^&7UCvQxc=aZPAjsP3T!4Co5rzk z3QznMX=77521YlLL{rDP**hdNtRkZjm-`{-s9u-9l8A~^<+RMn2)t#eEH z4Z2LM5;;?sR!;*~hnwI9`}@0)KLStC0I3KT#mZ`4B`}g6+{^Ez&9o85I+hKtk`IL4 z7+VtNSgziRY(!D>i>pf@SsvlvxUzJj*_*wsK1s+@?Z=ttG~2(3gSzP#mV~V6Q0SF= ztbBkMc;N6Kkm-H#9)MYFSojRuzPC1=UX1cE(_9)DIDjwZ*`Zz2igd~qeLui4e+6Mn zHn{A?z*_`e-|hDYBA8*pV+AsZ_YFM=K3Zr8cKe2}Jt}J%FL~bg>bx0&K45}*Wa=sT zL%6SMrn=^7TD5^s9t-+4bp99cw_Unhx!Jk=yx^^wZy+jz%c!%r{?+6g8@YMgIJ?tu z)5Nf3xNZ)6yv8?85iw10Bo;-?G|0kwwL~hf7;Mc_Dz6}BlJ*IY5OFYWPjCL|zA9=z zcPvECGuk|J1+yagp(}3{*1t6ty-{{4{m5v-xiiX3#$yjZ5@3@`YMR z|Be-oUWPzM1U>z96AEj0sy&!x_6S`H2M7xKPwdS?Dual%~|yD^MeYqmyCLTd#_ zn_iP1Sw~q;FK189S6>+2f7X;G&%-6MS_?w9GnFNx!l*?d9~& zJ*hImvvZgL1TaKmn~SAsE{^BDn0|aevqc962x+#OuLNsx8i(5H1@7yt(MMnb;=*lk zFhFgY0_%b;S_%yC8?RMGL4*+fW62eoTMut#U4vKV{bP$nYLbo$4|yI%>mMpOazt#-Ru@^h?`%hK?-^y7a#07v3fF1h6Oi3NAQ=Kd$rebmTe;bi=gYJ)ppNYSV@pH&FA_hX zXa1{PG>#nyOuzx6G#_RzAw;5JRC#*?8_J9D1SqAMl$a~hbIqZb>f@rhGk*!vFs{SZ zhGk@Uv2E~hv~2Kw)dg&lHEy0{-R`gv*1)jL=m@J=-_IM(GD}y)L~+-H?aSg(S6C@S zwCEUP+Rv3*mFImLqmVGHL`EwK-6DHpidwZT-}cLuV!*}k`*Ep9rbecqSu{eGOu{`0 zJA~DD@D=fSu$>Bz@xn@|^l`x+w&ZS_nNdBy_*JB2uarP0(MPh#@oIdIV90}E3otnL zZ?(v*T#KOPyW$ms;PDVZAkNG|u#lYtBImWfkITxa7eZ(^MVB~6zXOC@8DN?Ozlq@IM z--LKj5EWmGa^)D2nDFi(ko$m^3|boF1sA7XQ#nJvpih4yvyF+zCes18FLg0k3@ogE zdsMYVY3sgtCmQ1-invff#@VZxd^^eKdvIbcUkc;H)Ofk7dev3G1|t}ZJ6o4YAM!yI zU0wR2Ija>e+9qXvS1v<^Fj(iK%y#i4&0xZ=O zf1sfOL${_!Hc1@OqmZ-l{x%(Ca?)7T%<-Yj^L0-jpRP`z&-z4mr7(|M7J%-K@|CXP znuNBt!jgE_sm0DkWiLuCEf-TzuTJ%=B(|~RV{D~_W2Cm9xvZBI^*pA}O>~w^5jwlv zUiFv{ud(jR3+GRLPV2H!_oAkrmwK|!Z`SklS)}i{X?$SQDRiS{gkM=nm6n<@*EdwZ zbsA`8g4xS`WFgh)G;c->jZbMTR+$`is1^n03Z3e-C#eZRLd0~%HT3NZIP+b)EE$Wj zuiG-0+C=!3Ng%WZFU|oc8T&`8`O~e&|K&9Q^VQ(LPBtmN$7YrvG5FmYBrG6TX0;$l zaRnS&R#BbZ{=>)IZdzaxsY+1tp=C}RT3d_ia$akldu0jS!kwUie>Ky$9`X-7!Os zz=T#GAyzr`)SWmXSZO|&=L4^bqOrihH22hCL*7c_x@#1ylPXH+ic$*A9(rMZZ*@>X z9t3K!d7Uo{M?To8ChCEqfEpS_Sv3S-*7ecjNa;diZhZ0&H>$F0V$_vQSdV?oZvd-s90|3 z{FrnU7S)8Oc1b{Va4R_HjR8x5)k(&QQ17z?NsZKX=@)RB`*3_rJe7!b+PTA#!*Y>+ z-~o?&>MB=H-I^Pyr#z4_(TNHLBUH;Dlj`Ytw+!S9W1$&f0;}mL<7-1R!nWa+y?e50 z!!{ph=!nnI`gKaj1A2q+P8p3H!*%>lQix(;{dIp?j<4;~@g%@%PXE}j{b|Yd|7JPA zM^XQolqdQ zc@xNuqQ7E+thD4)jZw_$Bj5&k7GT5mklcqMw^6$jxd(`}D{*k*$*!NB(x5Rx+veEz zi+J!xUijb|+fhVYlJANofWgxbnDhK0;!p4otJ6Ujhv$q!?|l7b%{}rs5#pfP$gns< zw2$UUY(A5iHoOQs@*R3h4w9v3Pb-cu^ZX@h+iPP)w{&rm zPmGdSnzHw=cI#o~@$~S+)k+461L1KVc*p32zJ*p5xf(-Mnk16$Y#Fk~c~yvbLKO*u zPu0Let1U(7KPGvsj)JrTzqerq&W4Gv{cS7^`a8J{-u*S5>I*7nL;P(83CRa18QAcc z>4EJ?i7|pmr4Wz=S&lrKORfqIqz z_A9kyjO&U=eoi8fF!h1aVRKtFCK>c#4|#?~ol|k!y_FS!XzazP=bMJ#nC8gHe;y_N z%AMqozaS+L<7g2XWtYOy75o77%QvafzLX*Wj$7=H45NR~H=T^#oc>35kfjdghO&tC z_LbH%s2!7D&p^^&95`7nDHzoP5{lhLs-~v_b}pAz`)31Ea>K;g%2LNnk(h_BxkrJR zWHmF7jFb`b3UkLc>!Hl~v-mkz$4o#ylczZKsU+|N?~Tj-_{()ynmg0^qo3G$3r4qS zt+JlsmG}$zcxZ7$ZJ(qAclMkUOSZyzvwp!&n6PeBGQ&L9H#Ld$blx^46-MO1?wS12 zdSp53wAzRDKC$@%%3MvodFL?U$=n}2eIdv~o)Dh!aIj~12Uxh+=w=6F)Fje8Nm#2? zQ^Ol3oFkg#8ppV5rYJ_ja6-stbveP{_oTsIdKhR&X-|pzoasn@H4#D)$J9-&KcX{D zt%a%LLr`MjSU3vH10+p^GZ35WXmomswL)7WDQ>B;jHTzZp!}*N*Pzj$fl{s(mqxuJvJCD!BYp(cY%0`v6@}D*;lNsA!ltee2q|`!Vh#(3kbZ-|_Q57ALgmzD; z=eQd(qPZHm;3_#eTSg>7GXY76;x1^J8@TfrPYm9hg_Zt{0}7Fzlvd1QR>Cga9011g z7j`WeV)o!++=|ntwsX(5nrK6@7`zd$LNTLDTuYgrFJP@a8r`aww7}mQ16_F1t8Bl7 zti1n7rt%}wbym)TIf>-mJun08Xi(XaaQ_*t7X7_5ZrXnVvTQ0Dr74drzwd4R@GSNN zhLl@HWdpTgsw9~NhmXv6+rIZg={X~Acs1b~qzq6_kZ!6H-fR^%rArFcHI5|71RN6X zkN$KM%^ow6trFPQ@P;^r#f%)KCZeF6lA7?{Bz>#)EPXnC3nPXOj&tMgq5x&GQ%*h% zPBwZ~NDuYerr|1W80sZ&sJ0{_@=wMIY>Vu%qeUx@+9^pMM)FoD;5%JyJtdL+O`L{uk~fQrtqgW{LXskH|^-4l6jR+XO2L^W)mn^d?p@H|EMDrJSQ~WKvN( z8p`O_a*r#z#wkfQzKq!c`*r6ws7nsH6v)|f&J}J6yO28Q)O10-AGa@o+v)u?E{FsT znq-%*6$VbNPF6Cq)|J2|dZkLs;))$;6$ZzagFf|9KNK$>;)mYPj&rVmeO@@b z7PKSoMu6w~s=_4Z*zw64xIc9K`O**atRDhu+(lIH$V**MTZ9?P5h-(1n4>4`DmA{g zf!H&C_bjiU@``!DrIN2vgwz|qSpC(;kF-EXeUeQrRKAqBDRTCKJ!B6>S>n?N{$6r0 zx=S=Z-HZoi(EF{~pLWmLi1U@Df+4=iqh{uqQ1@ar-Pt<))v#C*7)YlOpbO25sXE#j z;@`20I0g1&BzW1&T!i4*&oX_79*8>oeV!OkZTnVzS;1Uq9P~0_Zdu=}XH{9+wHj(l z)XU>8#@B$7Q$*4_w=yT}`kz)GWI;E2U0d{~d+eN74v~3v$44K4##FaL?x3$rryuea*D1-zF8kR9#l&)hl#? zhOoxM#(eHtbAj{>LR!+PE=xr!lp@vAh(GQ3t@P)s2u^kW4QE^e*zdpD3Mf4EOcp13qirVkZ?Mi0os_LOu( z;QgU|c+Ys6LkcqMKsKb{rC@WR96rN>V@fSOtbC`r4w0qbXTH(CSbZv`$xa!Fxc@n) zE0}<%(LSS6ys!4CYS7cp8o}lg#JQ3osIew$U_1HA@7<+GY7h8Nl7l_Tr7Nl$g3+@(nJf(FpB3;$|(SzsN>smw1?mE@P3!01hltbzNNNo^N| zzNwCkSLF}s#2fsWDv|RmqKr0!>-eFrgM;PYE+#G@FwSv$+)S<7sce)dUh2O+nIUVML9zQeH3QQfv% z61M&RaS->(oIrFH2Y+Ilph-UoCoIJJoJrcZtxb|MnH^F=P_Mdzkes{jOY3ZN%-kEx zP<7Q!*X38juiV>DsZ}&UW~Q|D8IY$6qFl#$uQ8y&QxmObPU*M#VN@`u6I<>IJVVv+ z>5yURAD9((^PF?$({y)G>kA9$X!$ki&>7-?5{bk@3dVmfNXAv{WX?vdYpV$HpEuUR zd;dK{!f@#M9syWsev1C5nScPG&;1jh12FrLH3lr~F#3-Ph@!D6V1tK)yP~s|vEyG| zNuiRK?JPYe&xQ?DA^)*`SIn6BSht|~mxDl1k&7A!g@C&=QXTOW&H(LIVzG0R0 zX^}*3kc{K*7OMWWujK8N)5wp{kbot28}=?t`qKN|0%p!-@e@d+M!n_i+8}*cg4QJU zn3B{Dm-f*YX0mMO#WzCU+Jq0D4!D}+7xrP@<(Z9=d(=oR^gbVhzBO-;*0$0&GPj7D zagMPGh6x|V9~nkn7)9S#7?F+0^d9-d_cb;_$(392;i8RWZhV}JiiDFqF08;-s*7$XC_cWe*3cThuXYSh(2A9|P-Cw)s z+2`5M_B8Q*zuu?(&_pyjm5DEjSNkK;9O2ILu&=Z}YhEe&tnl-q^zEI?`BdFX&Do(w zQ(q%^WY1^SYuHuAZp>}Qs$)z_e~+ioMHlI@qtosjNH zGu{HcdBq|VxFU~^3VpanWO;%#kk82RT(G9%lXrWta{GITnpRcyPK;^6HtyCOwxPKu zqM0tMtj^Uwh-jiehFb)O zJIQlp>07ry>q_!!n}tuUObx}p5P*V7VOc;pSF`Q2yDU&k7O}1qN{9_O%+Yo;eijNt za!laO*_F0UFW%;??efoMp|dAs7}=reAH^gpDQ2%abDp5QQ%rN!8O5<9#;`-_yGkn^ zr|AmM2pVPixo?3!5DN|@QBs1ehz;eXBFXT8j>IhDt>3(A>WrGCIHN?RUFN)YZap{X z*od~)lXDjl!aM%`(5L)F$)5ZyJQvFqC1UP-G+Na8j)>WSN7X*Q?qqh}f=aDIe}|e| zYR4*F3Em4N6*c6dglkCn9Lv2V9i^nz)4^FE`dL?menSP0W43;g2QDvm<3UlrDcag( z4yMh1%}&&ng9Lms@<#9}gHyiP@L{I+rOFAaJwZ-^H-t}4qm?R-GulZWS4v~nbT&|M zaNhdiAzwjp$3hi&n1TqwU4IP@0#%7o3A9*5tO)5ra>JHy?Qok9AN&O>zJWTcXA_TU zDwa-#m;w7Rxrj5p`cYO6DDCa;K`}GS&~zoNP(nqlqqLtcbhh7wwvyi{kCs&#=C%kA zWPq&rm{Ds5kY_eZUKJN?LOH>n+Mq37FI~no=YZ>8D0@{!x07ViH)uIM2dCR!t6AQh z^~T#!v%lx%`F#A75A((ynX%Dg}lI2M0JeEpJPR`BlNH7I|? zS+rI9;Gc3pB3nu!f@RxTZ6@Cw-%==u^o0qSFpXpv_=2{fh)efb74rK%FtP0hCc52s zu(#Iuc3?Mq6`;p3swI6>r;5A~iq~zb;w0o;TcoN*-LZfMBK47uuCg9UkX7CCmj>*} z_o|#pshfT^QA=|JU>1y?cM9)0@KtQEsHs-2G;wr0+Sgc$O^;xx3MxHk&`y>!t%S7| zRt=`k?8g0)f~b+aXmX<$RMnV=w}0Q_r5VvynSa&95xq z_1ZW$Q%K`e>^QB;vJ{_|W8b1OeOLAp-ju*t9^3PGRjPx%pt)2apTfOo-Q`NU*kzX)YY9B=p_DxB>(9>*Qsvz@Lpt5X zQ_UJS0Ia5YQ7izfX+RTOo6vvCs)1=Kz}MV3+hj1yY~Gk9#DI9^sBFSy;`N08kY`8i zqL4nJ9h8DpPMh6o4~o3x(Mj#;7-T- z21X^!`W?>kr$4{W-VFVN)no&7WX@1kfT@Njod;N0w+LW0J(T)TxAin%9+zHo+!}GkOW^#F#V74MhdLay-L%_ZtR~B^wT!4r z1RwD%dHlI(bgAiFA^v7HeJLc2`w1vCe*AIn`Nyk%0HxL6L-GHt9Qju%nx$;{OJkJ> zq!7kZLFWoFF(sxE72S()Mw3?Fs{k|s8F{<-)P*LfPRkUcNB5_iL;*?q!+bx1ar-w~ z`J4v5gwvCC&;3lt^DM5ecdvISJ#bqrvPzkq{2gpC@)U+j>pq8H3ae30oJlSf)^sQX zL`~m5)1=ZZc4N92jy%pKKaMa%7iBT2GHI>FPrH@jD-!KU>T6!ne72&+iV{1varogM zUvqGRikGp~-BFP;kvP^K*qOCvLZkSNx0+3cEgNlCmPQR&Q z+Vy$R0%PFG(4FhkPCpuKB?KaWTQvG-(}Q9AG~Ng%OxSr5X#SxFR_5G@+<~N`SlA!M zG7@K6?Il0Wn{mPsx0@|h2%u6 z-9cv*f1ctVMi3R{V@zUcj$5%(1`=cT_C(~WBsa)xos{OefB$r$*uaj&PrWiXMO&6H zD0J*f9l$b6fBo$-cmc~RLN-~ssqmU(HL=bASrn=j3>LdmCOpFCkc{P^o{H-S`ptWK zC#SjbC^m0z6iCU}80=~H9)R?zE)ScMN_n#yRAt(NS#zM)O=Q8G6qKtP(G4<HiRRmE0Wx4E_J< zAxUabUZ`qV?{ak`vhjZLe!#3#u=4iba-pWsDdb6@U@A`HQ^y5zQe|DpGyIm*=$T-k zbX3X>IxIRQ+spDwIjPLPP32W;f>qvE-gX{)&$Tr^b#Sms)fMn1=W*ucM ziyI#^TA5y9s>KxoPigKs)+o%uQ21TT(?F}ydW(<;O&{|k{B5b9a-QR&UY>Q%wI_nKR z#$?Hc({Q+=?PtS)FgM2aKEDVxU^(v5+?D*jnu-c-C=98l>QoRs%+G8z#VRrlLlUO& z4cVM+a1jNQ->&-lj?`1ER>MmjOX^`G`qJwJi-l&=n#8VIC6s>Rjvz!~lZ})qInS#a z%kWeg4adLYy2K{O$kE4I6fq?nQ25FEj5P!UQ|mKq)L5N(8W%p778 zN8?BcODht9Z)RlVij)o_6SkBvVhXWanR1q-Qfqkyt`dRitA|bvc|2KhHaeBpnP-IJ zlT;H+-wRLpa%{(gVju9ul3R++K|NLFB+)^cLEldy;12fo<)=-!qxxBP9pTMU zi1SYB1Q8~V6m`{rzC2+vx`d+WQ;lMH$06l$1#^i$w-SHH{x+-RA|rl;r^0c`fXfMD z4Ppf5r7RWhA{Ec9Y+7NePR&S^Jy08x>D(mp1@ostWyR}aFmhv0lE@C>EG0^`a-vK2 zoul4wmeXN2@KPpJ(-VR@srol_c^G39uw04y9M#K#33M{-Bdi4=+)tF3Mon`ZpS9=^ zOz<9E;;e3BY@u|f3+Me)~Byv#7bTZ`*B=dyquoY;xhp& zD6HqBxHOFEk^wA}mNGmJe4X^75mR|;JP*^ zswKOmXm_O!h8t2yIi2p2etY0{7K8s_P3v0JF5_mQn+Bdu-xvo?Y8c!O+KGVtO$86p zW>Q7C%}}{G2Q{D3qkBWDiWEmnb&n<1BVGX-n#pr>rF;N_NIHByOfyQgX)~LAEuJBR zp@?fvR?xPL8x!?>+kuh#n3mHisHN8GCHj$9{+wH@G_efUNN!7{Us!im3OB0s+3JPM zUY~0$La~sQ0*55ld<500dwYVQ;+0t(DNitGIR`k4)Hp*u`9ep^kms=HXk2@R#$|=9 zz+ukf3#0Vh0=Yc`)4O;7dPcbO^}`2&kw!QFA&8MJt`&n3S>z`GCFJ;Yd3*;p%fk>T zCPwkAq!ZFCYVQ5ulM?p?qd*6qHuo8ENqz>ySMn~Vy{a=ef|wYT*$I3ix7aToun#2e z&6TcV?IA-#u+sglP%p54cwrOKJlu3MS)dK13s(=HKUD8rK7P=d+=&44!i)I?adFGt ziQUb1@!;{ncJp%l!}{>fDz2)mCwY~*r0T-TcPn18Y6S@fuM~$g797>nI;X_!$H<>D z$cl)RBT}OH8-|}iZsWx+K(HB>Jncq??GHPnFM6(JxXPU{i2OK!_zZtsy1ZnjqanGr z%!)2S=O8-o@SgvWn80K_s$4c@5ynt9jbedg6W#OZS%%}xU~X@TY*5f>b>dH&shenL z62?=nrOYkGT3&IBNK`}(Q=Ex?+mN_K$nJqk&*Ki@p+H@poP*M66zFKBs>Dhr+N{>` zdz0xlTo1fNpaS1}o`I74a?o+~PFBDIB2jxt?}T0B)F!uZ^<9mUrF_g~U0Gc)Asbh9 zoZ}Fb*wi`jL(xwbNB8-BnNHE)W)z|D`!9=I~| z78yXr&QDTO@8K<)wi8%!!smgl8 zo+M%o(gr=H(nFXf;_zEA3!umpvVfMzJH=y<;I-EUVq>xb3dobT1Cj(HPH2w9W6kVs zCECqJmWeGSzI%NZp31ST6RrNiwvg=L`2;3x9knS8|g=*OfGguCAiG4Ho0mh`lZU}6lMk_t+GtkU-Sly>`;P*Ub3JOomXaS{EH z`$13##l-P&l3#nK;+ZWA9gPT2I$Wolh9q3QW-EwS^34FX>BTg)xNMeIajWEhb?(iS-6dXsCt)s9Ol8V@#N{e z^8H0E2=Bb2lLOF>X^{WaBmYrA=6A6Mn3p;_>DxH{JyzGAlX9GqNA13J^aCzT6!dQ3 z)zU4zMLN)`Y%p);Cn1qWE~%grDMG-K7Z7u$({6P-oGGkw`uqU&A}>4XNAE}kGkorw z;OVzEvfQ83Dg-I0c_nj=7ER4#$SMh~cVJXH`U)?owuYyuksC3;m@~@&&oT)b4 zmvgS9_}z}19oII{5v4yZY|DQ!fECQyvBtBW(#(HtBqc0x)~(mW2WE$T;D9ki9Hdpt zs{}=IN_5A?GtA~6N+X|!+M{%e=LpI+;SJy&^Md!zegyW|>$){f`;tI4>3DL!@9;|d~Wq36X*^BPzTP$}X3eM3@>;=oV@ z&`jX{@mkuyZYJcMo$Q>Q05T(hRn333+s;bbO21b7tRe_X$;0gC%L}72SWk!M<$*PT zC0aaAMMuISNSg_jCW0nZs{4jdPCWF&Fg3C>_T?kIQ4F=c=J8vbep~J^o#eS+JNeqx zCHp~olU9hmqtb`jn#IGp*ot0Lb#i^<&ob{9z<3Y!-xVg}>4H+}wJ>X74$+5_T zb=xQw-SC_({#pu_W()Ll4lQj$t<$Q>fsE<|)HW!O!Tc*l0I|??x4Dz-j^@IQi;{_l z*gmM8wFQ|#aKdf>CDEc`av@p<8suiSxqWcsVP@Qp9A%**PyAwJg=9%)TojpLIjm5W z(Rn0Z-x?dbbjGBw?6D`eDK@ef>?@qOikMP;Mo(#=s_|#hn3S@UN|ZOb^gy3azz0bm z^JhUIz>n#&9ff)k1IWv--Rvb+=S$gWsURCz6$k07-0jhb8CSND%x#9716eO!5^~S^ zz@?gZgNXXwr$5%{gWq>1?Ih|bF6@Mb8~(TjMj4ZlU5jIgUd?N4b26jWt!cvIY+knW z^T-Qa*kL>~RP4sDpQ+7Lapoo>5b0gGB`u5QyEA~63tgP>o~DixA5I;N)GJPIgDQ8# zniR1F4u#6GF~am89r#p{&Q29-%0T`(l|0yKy379}zfF(nCwy3s)<3tWaJxbFNF7?HzxI#zl++=f+T>^NPkuMO;!S-xkTG&KYX z_FUU2mvcVjEV+;)U}8M(1TqpxUEd{GF2R0?K(R%96BL7_&eh8g)noUQyefqr8$Ov{ z^cngzL^2dt@MV3lU0m46SQyvSY7^2@;)qG7z4z5#xgved8 zd(17BdvH#Z#6fUO0ozb4lulJ>(u>Y3pju+n)vY|&?dMPG&mr}pFI6Pbktvtk1}iCv z$@9vb2Qno_d4dZR5&A$(EU_^rKn^e;AsXmeYRI$`H*=PWg<+E~pS%P^eHOaku+`e+ z)dpvJuqp`tTF{F_)Is(Pa4eZWIu_+W>C$E8*%0#u*7R_&Tr?=Ods>m<^<(~e;*i@rEqdhK1{K-{3eh6bh;?JQSlKqs9>}o-8>yQV?;+DnEVp|F7yO_y^s)>}iT#&v zG*JX^Gd3Rs95GMpm9=od_PkjPGp^gnO8Pb<>tW@wN4^bf1tqCh-l4UOt@01|>1%~Y zoI`Ya%ZIHR1;Dib*7Rv3W`S!5yzmX+_s^;5|BQ0~pU>kTql>?puWHYZD2r%sRkX3O zY(u6C@u$%xy^$FLB*NGh+-^<#Cvwu2-BCl-~^FwgQWcnMQzp5Pmq+{|F{ZCZ7}qdfNgj=rC@YGK|XQT6g2WkK4!V(wGE8;uMb z0XZCr+^jGGoa+ENv#;7_{%eW`t=hfAPRc0!B4wZ&ibn(TCmI)eDRpWK| zX2S(R{aHoFE(RWXm;K`^;;bA*4`YsT_SI+t@p8fNuO{yC{@2O-kS7)x%GvjzvSruN zkeO+UBin4;=2TA9HN~gtcr@tW!D6ZudI}J9PQp)9pFsEXf0Q_xyD8@|Q;sN%yN+8R z&c&ebWJ<`$Q7ELvopxN0EZ#VsTY{AE1vyJMI^MVJY z`sgMDeF>{6yEbf^+E@d@YEi;}Au_ZUDacSy^tcS#YOx}|X1QQg(?xbfM^I+-5~)d{ zoL&ZmX-!LsjLPA(ipB&S#okRRX|0ZNV9c~9y=tVS{kW`M7v&&4nsHFIQ(#}mv7AJp zClGJ+e7wiuXF>(RA&^Plu8v8@$i&~#dHq{Q!dR1Oly5*dc-;*)!mI671RFx47 ze8V)vx9%$hb!zi34R;{VBgT2ylrLH5>rNwFD^=C=67DMcw0d^DlQFmIx^vrZ?OzQP z(zU*2mPxc~c(i|k&bVgxd4RPVon4~9C-l{N2tE-O8N3so)7BI%%d&?d2{ey2ZgK$I)%}&^TpnRw$TJ*Y%{ss%lBMYwQ z$erxYXcReziv#Ykac4uMQp@+li+ilM^}%n#J~r+A-!Fk{yE-B<9D{HUX6e&wy5ehu z*fDx;9h8fYCTMpGEyZbeOT21T-fWrQEfRu;h^{*VH=J{C_{ub#>NC3>@k%dWvUeAHey@LDtOUe!z_Z+vu?{tPH6vb5r$9HXeiAklD zWsoZ{7z3{}^i)AvtNgF9vZqtY=Tg$wdkr9}3`-J^+x^&7!8R+CKeVHOugGkSM#$|61l%7ij*;`>$##n(}AUS1?f8RL%f~m z=H!UkLzB#j;1zzyrIh!{3R5C`*Zus8DEh|N>;coYwZRwH#eH_J`qCQBvqSye=q;AI zAJl1Pb>64wfes%UN@JvlZ(A-7q%vsbUP7wuEntjbTazR?EV@Z0uCWZ1*TN-cqWX7Q zw8)HoY6Hyj)8YS=7XO*Lj-9>}fKOxde^S>W`X^P#Kb~c1Yh~;3e|q9S6B_uhPZW?< zlK5|ptjzSU#fO;So37CHLSSIZ_1jP}UqW){gkT4a+VH6CtrJ`*KkCFDGL}Y+(bzz| zVW^SmJb=6?3|5b;?i;x7yYFY%x|sUDKR&|nqp^S^d82L2=8De<=!$FzCz@zxQdv5i zKuV-TRnPypRbr|iUDAh&)ZbFiqK>0rLOgw|jkbbPf*tF5Z_brt!lNvYX~Z%yUgSFo z)*&}icL;A~jTrv|4Na}f&MsuGOrZq_?$T=?rr){_FCKKnI%Ev4gTVbhyCs{Dw?Z~V zBvea`<1WA3EXpz-omk1evfV83OfXDncD}C>wS#W0f^cV)-M-!2C;xWBVoZH=b-^;^ zO?8dXF7b^G7oqh1ZRm$x-4*Q+iso`G*E&FVVv8%<*`xNpHtZB4xU}JR9XET+9c$LD zhn|mPEL(Dd**pI${-HvGuh^jcVI~&N*8?5y$mg)TNQufi2HJiq=sAc~Auy4t^Dl&G z^ip(O_~VmYoq{@c?ZTZ$51j7Hmog3mm(YieJ8eHbqt!+baQTS%TwW5}_uK+Rt(<6_ zHVTaFt@KQGAary-?BpFiw1}w1k(qw^eS4B2Jfz?o;6rU2pu+vv51wOGQ%k}xq6@5Pk* zh-oi}ISXlRZ959e6w7RyL}G$=KE@1kCWK+LT#{I@zOBe!VWtKaH2F|H;i95u3u}O`E$rBEzPup1NP1|2 zR$-BfHd8XJ*zIis4t1g5H%T$!)2wXNnvvMYbZU6zf}jko@cUz@jcTDn0%uqVHpkOB zWq6f5(c1Q@751&fX(;%uxQX5C?&P||YI#-C$zjtNU3m{#9L6R7w3TGLApV$k-Bl0C zp3}r!=y$Fw1*u~$BMyrRps&A1Pl;2}WNZM882*USKU19f?-)4)kO5qD{of&y0s%m@ zeA+a>LKQCdX~qLe5y3#JXTgICQq?2L31?x>TJhWR8yyc6{tM6>g?%eDI+YteeOe6L z_1^gN&@s*zloQ5Gu=|(kes0Dsbx;Iudey5IJ6TN`2_u?w(Xf-W<+c7%g&Y7x>AxVl zpM+2XK!nWsb8)8>_H#MYL&i9w2+eBKt7`GU)GMC~K2~rCT3U*OjWJ1{i*hy+bdQ!_bY82)1ra!+8eWKtghQqST zk+zm<7R(V_ueRnX+;kb04|>OYEGfLjtHWj4|04GbqLchSyFp27C%oS@qFgU6EbMW5%rLa|NW4io~xnmo?dL`y?2g(R}|8b7&0tdT*EsbiL; z6hCd?M^UiIt%)vf9N9C4!`f7#d^Za7|TP5G#cF!cujiLZw zBQZSJN6gVO0z1hpiLt0{n1tNAg!o>ZE8ccuwl>L>R44k?iyY!Z9SiGsRV|XX5y2c< zxxs1*?L9IQ8vxhz3U@H(zB&pb;g}&>FWV@7Ae^s3WVMDx4{^7<3Rwqo?JPj&Q%Ka?dvb>P zi&X*hWF0DNBAGQH1|tF%NoaNXvZh{uxuR4V+*@!X<=(aibcKB?MaAJ!o91+mDemn$ z^wf^Yz4t9czJm3nX8hFuJv3GeY1%*UQ&PP)c=0^`yu4sbI4~765=@(Cmm6(IE@t@H8ouZ5%krhCr2JTTU5?sBz4ZK*8o|H{dZ+BBP^E`Bc0*WBtJXG0@{^NxJ(sJq9dzWJ`OsAfV}FF2EXunJ0_`1oh&+lXWit- z=)ap3Wu*`2O3qOv?`z_aXEJj305KLgT{7yyZ2cVs9mReH!7nrm3S>)p+PNmd?P{xD zk{Mc*LTKx*KXa28nntcbCqRDZsZVrFvD^T#*#78QBL6m6GWweY-cFaUZkD_JP)lDKq%~Ennhg zX&4EC;AKjEORmMS*Fw_3@Uh^#NU&%R~Ab+BAgjFSU%;jvr*@ACScvvl$~ zDssLUU~wdx2|_nX%anVNA;UsM%_n3?{VFS@@+KPn^LL0A0NzCdmpHdJPBYL3*Lty7 zdlkbQ+>w#yVnGy4rI4?lX>N_{I(h*5JRCbSF!qHua8|dlLNq&W60bAoB@?(#T_{K| z!X+sk>q^Iahtk@n2$scdBQC^4bAxCMg&n~Q_?LGzkFP890s!OqBVYpmHeiZ>Um^J? zwS^#nv$u22HC9id*$8FLB;J+{Y2Jto4A;ca$<{uY&BSSY<2p}eHjQu~CbFm&8#|Tf z$8~?a<~Zs7?&b|L)%!7kfcqlomurPV;=2P}%kdws#bVE%s6Y9Ak4!=KE>cHA>I*Pt zpLd%tM{0P|X6+PGSC+K#=F7yU?K%#X$O6qR`caj*(R0b_YS4ggLp zf5hqEkAiAuzw7gVRt5IR{wmas{lJ8gn6YDYVBMAx5ya)awq9CxE@BgYVs{f9I#_R}#>-nSDzB+-`oXy&3kFK?;feD{gpr zA+CnzB5HD`oDzPTkV2>!kz1YfT*q<`{+*pG#BV3O{%vBFJ8w?-pZ2~ga;Jsf!axcVjT}UIREJ> z98d1P(b!jcWZEr;|^iS(s3>Ru+_2)@0Gj>^kEDG&MJJGsqqA z|H@hEM*wZ$e;Eda|81|*Ft)O?b^RAnFw5!Lx}hb5 zrl?3FL*{s6CSkLOU^51}xLhyS9|9!d(c|x;{X@OpR{_NJ>lTS-#!K};1a4;ZM``vD zRi(VhUG4llE#*<}yYEgW$cHtiH^{X5(A}78&QGQRVd~ITfzgliZvMH~0X-XYDazrM z8V655>80w`o;msp!D6jybUw-A131*J>)LD>}*dhJn3R$Bev~ zJw6PVntKt@Top`1;R*qqO9y;OlKoX>)Z!=B)8kIK5aai~2&g(>0 zSEXQVKoo?yt?v{|Cbz@?%ez2xvf_V5LH0j-*T2_Z{i|Z|zqeQaA8GFto$0o9jaJNx zZQHi3if!8!qheHS+o{-2DmE&%Z9D&4Ywi7?@7t%Xwf1S}BJI7)#WUs{v-dvGi9#0@ ztF8V3gHo-3;`aK@uK!o0+?f9b204DR^;)-LrLjEl3HYsdGnhkwWFqhCbaJ{K; z*ez28NP*yDlZB)#@B{WM$60p+hIDQ;&V5zEMwqRpZ4c~6q=`gUrXKZDYlvaiYtHFs zWWT|MyD^4K(jVX=*WOVC#*wx#(Te%;ZXhRu2b$Daq2Nz&ftnI)%u(_OxVXy%fD6lu z$AWKPgU1%MYpRH7SH~3FwTfSSaH-x(j27FnEQ-k-bC6gg_FCo#po$~ps^O!Z>9Qai zV`P1UYN_1C_&gu|XPlN}day=j8^2M5dhEU}4=6zco+_2cjo4_wr6L+taDw~uQrT(2 zN&ZfOe^0O^{;NwR23VA7=4kiT_RoRG|Mgn^wv_o-F$ys7h$M*e4xY3k)u3-v;bt}0 zD(}$IUV;!ObR-={0>)SbKmKW_^=oR+T5gxLo_Su_Z{32YEkzW2Zi7; zN9IMFeQ%U&)d$5SzGj;4K=O8pX<7+?2J4-O15Zjw@BfS<(`O&=H|=H1T+on4iaGzI zQ0?51I$^_9Jy#YiO?qu-Jy1C^)vaiUEAAxhi_di4oSw5Yp^L@9Yn@y0cz)RIxy0>i z_nD{R7pcM)mr@j?@0yZR^xY*@C^NjV$z|2fat1mbXXCisfDdHA^{~b_Y0W?SDJF@ZaSFaYqC9zs}q>a=i>FJnR;~l7uKh z#%L%^7*Sz}6oSQq3Xy~nsU4N53qadAY)Rjt$wdx;tgm?%d+KfA zXMX}eWYi{sf7L+eSvXQAiRPIWyAG;W#S)dR{M^O1O*;PtM#ornK(nHNa1O+%8D2bj zr$rqq3nuY8{YaaPEp)&)T^BJCt3$cY<|LQG*o_-H@0-D+FEu=!F!7kODKYrq#m3jE zZwq3$vcbK|%d!xT5qC078ILQ;ckCr$tf^9zdEAf_lWB(tns$w38fAexSU<)2aIZ(P zq7?E!?Unl_x*u-jSBfVpRAhJN->H6XHa7|xkZO@Oj4X4ie$fnD8!^Z}WOelULqI27 zOWuM5eED_2-~V4R@}HO1d@m6=z&&~`Wlt0~i?j&ACiUj>cQ zFOxJCouvUqN?ces#)6_kTdBKh{#n#GmYN`v=Zna0QmMPj3asR2POFEbP3f$Y>QQKE zNBj=XJeZ=M(^FP>y)*OZm2Kk1%h!_2d^!D#-z-mFuiuiP$f+VSUJeu22p{i6n+M*I zF#Q9`%;etR`}qNgmb zaSwvy00ijo)kwkrDii+~4DUa~B$57`H8AY4!b8vViW$QMl@^ItZnNd&ETL&f0*jekIzu5udu){J{llZCj~|4@yQ0jlv& zBm%&bxp16$NAA@VkYa_Y9Zg2$Xwde-enFa8!0N=STYP>gQg7>Nz-@f^noSiA+q)h< z2E$lKv@I85Ay`>h?`Q+w1puP4;<W^#i1O#)qw44h3JHA&KVOY@ zx@bA*{4H^r>t}EAv>!y1ZPkPg5P5Cp*2GN)InDg0;ZFi`t)^`3VSruQw~Cs;APm86 zsuy|usM0+~03#sgtdS{JfMUW~1yD@trm#!6iDD~ObnDjsh>$?=mcHzMVult#*C+qK zx_)`I6l4rN(RW~3k(mmmUuBi462bAy7x5=ng}Hy~`mEQBrbAxisKHb-KWS<@f0JON#MZ##FNyP;e#C;Sf$TH$pm5?w;F9t@2qf#eiGC(~DX?rvnf?rG@+Sw6ddWds{eRwm5x>+?l zx-_avP&Anr^1mK8hML?ou9&l8EPoV_5cO9#5#1lGjcV=TM1Bhpqn>eX zZq`H))N%t7`g%4w4io1HVYdROC!Xp;>u2eN#9`*^qaAdVtoUFQHu-`^Qf;Cs;tRFL zEF^nw1Bzb2EmDpH+@jz#=5F%e*{(uMVfdeGF9QEnw)BUM;e>7aK@3RoAx}t_Q-($CH8F*c87;_|k*UhL zMCwXOyP*NJtU0S&azjct66c{RF=WhUQ$VsiBTW>tLi1>sTtlp}Ub{{ElOJdlVEm?W zL#Y7q(NPA5=}&$zw_F`c;|Nv|TO20e`t`T?Xf$lExW?1csEWl=?kq8@+mY4FCVXr~ z$1k7z2aEeL^>NCrTqeEY>q{OLQgC%;c{f9&{$Pp~gr8WtoHC)ssqLIo&oXzJg zxW#E9VE`j)sntUY%zN!)azF{>iX6=JdNCwUT6z&{Qo;%Hr9pA;89i|Z4LoU2+wz$9DVLaJ(64MfHNQ^#B3*Hh+rof__pyUS*K}4_g z+9-2LfcSeQf8tD)#)vk8O@@jy^1e0EM!hv^77Kl{{RLv6d=wWEf!$2$-zkc5%iCLO z)3T0d&?!yJRnf+k(S62o;1d#4qV98~9iS3LWc?kvLGC32X+~RzynrjD6Cq&am%eg& zQk~?`*ZEdyRkOY1Tte!y#GPr>AVbwoU57?(p^I)^mMP$2UFTKg9Y)Wnk8I|Ji4TEG zev+XjXCrr>Q4NW~%M^irjQy5KE0=!8SMO+XNvf7~ngP^x|H}Ly;py^`s7{!*U(L9S zLrztYt16|DwG$ve#zXOS36o%6=Rz>DB~EF&ZhlBsqohdegI*&}F|>R$2o68tycISq z_3j;7K_<~Pjf&MA&m@W+wfw3*jJxxEe6Yb^_q9NcS+g>#E#xz~Y@I8T+nKgQNCC)u^0bY1#H_`hjwQ{s=ZH5D1Dmqaj9IU>(vi0#WAde zCvGGYlyU;n6IT@+kcCNJMAaEe&kQ9(@%evx{E`F8|m zTAO4SOCQ#ydpE z6@ph0-iSOaMs1^$x(HBF7|%WitnVk2#YXZyE~DHeDIrYx%GU!DWq*T(tjCvqnh34} zJ1MdB=9U|WoM{S{KD!e_eo0_LRvghf7ed+0z)*D z;5`e7qiBQPJ}%vuO?{HZn#@^gdGjE@-D8?ui{1MjxYRgV$jbm1YvM`lPYlO zLQH@^0vtul=VRNfbM*Y=G+CGQc34x&kz3Un*ASxb#;jx)>p5M@B5W3#iXdyztGUO%;jeyo7;Y8ZOV)Y|Zg9wx z?vu6t9OjxA>c$CPzCJSY{>P?=#oiKuLqM7o_}c|Q^#APvQgODh{!=ZfP#Og+twrH& za_4YZL#HhW0;VKksaezf5o3=6l{h6kL!{8^iWA>j;8Gm|oE=9$ghrx_2QzCM4*Jm( z_a$d6kVT{<90yAJ9(R)WV3pa)tn=;p6|7t52Xgp**40n=$fS)QTK7)9_aKAjS`nOn zX4a4ExyYAWO8bo@2nH@2T=fx2d#sUX&z(lhP>e#gyB>7Z$c91NmHwb{OxrP#%!GBo zY%x$!mbqA^c^a#vKca*2>ffeJCcY6H#4*@hv{Ve}M^$6hN2lq3NhBcSg9vDpe{g_ znpG|=)~up!IqaTAg%TSJi907a1Vq2;H#eoDqn`wfGh$`8L1HzoIaNSZ{pgOhPbc{J zDm)a$MlfND=SmjaOGVhZ#f~HN9JX>xbI-K7BUS3y^?U)vK8pBIU9ZGA%KLKmk;@F1 zB9C9Z>xRpzhpzgV7%I%;5YxQ(shoV>PV}Yt#pK=sfyH4e z&X=OMwynDDenTkeZaxBZK+@v-+Xni-+JXCTA|m2$YhYtx^dDVCiOMUA0Fxx0kVa6c z7;asJ7GbTaP*)4lT=@!Bc|ijc$3roL^;e0+}3^Mhq+p2h!rzymO|j+R+rv~s&J-ueK%4qJ!d$%o+W@7aR3S-4fuw^3 zSW?O$WNs9i(Z~dZ3p+h@bn5Du@i`y)KqPQlJ{n6KVLH&Xvuy~WcGL(mElJm~L~T6C zu|t_iW!0Q&zI`yPQKAr)CoEKqj$_EaC`X-gjzI^oHI~F<74s*q3L?UmXvqaCw}Yk# zZ2sp^!-y=&xLo46C_H?7L^T43Rh8C)5fluEf2LE8%vt&QHpt;6=_C;$%xJ*c=x%v(+o=T4}TaO28VKz z^Gv$BJaRTP<)E>Yt>nObCcERIB~Hv&x=ReBbKs}CD4}9m6lX@ytNP{vde{|Dmf>Ud z$l-6$vz{#&Gs%6HeiX6J@vKu&?89YN?=sMt$9s>PS!M3zgRWE4P1njF;EO?ryQwAl zeaFg3@JoBK)avMkXg0Q8ZsMSD4gKN!Ztx4hMV6^!peXv>a447ib34f@gP1nvuq?9x zlW^BmU$VEh>0>Cu%GMV@?}&v>^2&=vBEi*eS@y7|;9T4oxn!(59uGEpW7HXOWK;+{h9kC zl`oXAO%Qz6cZGhkqDTm1kxW_TlD2%JoXZoEH@C53d6lPvZWuv~+P!SfZ;{?hf5$$K z*o%Mr36UAQITX>LcO1d|F1_9PKr9F=#~i=X;r+1W`mnV2a&w{Q3&IdZ8*Ei5bslT6 z=Umrbnb0|uI98UnqF}96fz{Gx`csiEaAf0L%}PwNMkTnh-PHVEYd3v@M%)2T0TGzXUr&ioA#iFw z>Qk$~9xgt#OtCcc?jV0Pr?nYBAgIi`;mbZPY)=qOva4_yIr?9O& z_(Z92gOtYlN`O!!Zl9W4tda#sA3#I`8>VbI*cIxU`4gkak=00eZEp|yNT>)w6udT+ zr55%~)n?6+2NNly_(K=DpJJfdGpaSOTx_Y5LnoJGr@04Sw{Z7Muk9R*w{S(UgHj*p zmotCq3|X@{&-_~ge|CzZ+PZu!7O;F;PX{r5DJvu;9+#}#hg@Tov9wM?hjogS+d@;d zf~}e@Nb^9V#+KbVj4w?;?7{1JW@!;YFt)9;Mf-4dFLZ*>kt2&$liUk0W@Ndg<`jn= z#Rfy`9xgjWfy4VcOi|xH6YyC;h)6eJlM$YcS!!uC96YwxYh?XQKg7R`bcAbmT>reN zohL`X9@e0UKZml$m6+95pu`g-AzDM#H2(RTcLC?l88n-zKy%u$7C+koiQfz|LIRNj zr~3Kh8xq7NyZ{+6U)FiQp%EjEc2N(S`2kp5{apdrV=H%D(pqdDF?Y|SnSU0l2R0cu z@e(=yc00}qk3bX7cU%HG7zl|=@oVx+e26=b90y=9NnKuSk_QK)aBJB|YCN8cT}W+T z%;wce8{Tn|<>?R<(aqTRJP-HC$vyrl2T%)AmpufvY+S->$51QL7ONjou@-ETWI@WC zP^P>3Wl<+Llm@buI}N`@1Tp@cRpWmJjj{) zI!pb^0G~07dB0J=JUk{F)05$#otroH^+*4_4zG{Um)YEBkGK;P*ZWoXZvNi@!AM&N ziU$BlH2|AT|62C{r_S_0vy!ugt=WHIgh*v8B_st5pQvw;6@_HWI%6z!+b#_-ri2DI zTZIIzUJg}X-McmF z98d{J7yWARR5P@4b#!YB*j`XnTl(mnVNg$NN52ZoyWE~Mhjdh!>RBg^d8QEVXF>N3 zj>0JnLVCE*kf_uIKW;*{wS(F>%xYgMjIf@XHMM9*vYxBhS*fWQQ#;pQPLTcnd8>yn zcs;M$tZ7S3Xv-xQ_0(@$7~&pTxe$|TnQhQM%HUA%j0s)*5mv&yrPH7X>}R4C z0z(x&Q6Gqewo2ZdS~ap^WP3OaeMA_i87{wq6&D<{^bW7tGn-_ge{Ywc+@TRxE6mmB zSZ-}i`xSkYa=U{=H-%rbHu+szq#wa_T2}?ZwM2UW>Jh=TZ-G9R z8gAtRhF9XTVcULa;Pgr|v3PIAjP%GA>Il~RYIrR}{_vZHy1PQNA`@})3a;|qatJ0o;iT67u?`DVGuZ1U|V zcx6Biax)L}94j;%@EQ?C$Lp#&@{YA_3^GzL!x3p{p4Xc9iYO6Kb(nSYrE` zX8fDc1D22*8_oq-vyx5i8L78@J~@M^_FcjBSoXd@`(+*5nU*jQVcpgV$kvePr|}~> z%Y;5tLYRZ7OY%2s%G8PIVD^#w?-K0ge+e1@g zqz?sY+)CUwimXpYJ(DK7wy~(3)vQ^ODTnyFA1UY z4U=_gG*--PO4H$YhzT_)7g#V-@ZRB-Nu> zHZ@`yfpF|hyJkf>S?pPS@P%T(-8XLM6Rw<+8iaDl4&Sa-Hu=>lUT5CN3{N12e)@)` zNAhqE8ZIyUs+^I0{)X1&A2a$5vW>M5fX~+rVBmk9=>CZb$pD(S91X1hGt0@3O7+Sk z@W%7a^r_o;d;7(SY;Dg6($K7dX)CvOMG_VTV@Ec<(SeEDZvmRNwpoA>HT(KAIeR%X zn4S2$*7-kW7-icht%iqOE1;OL#Sdpnj8LIID4x_S5>2!W8!DHXXfm=029DZ$Ax`co zh6|O+Xpiq(t>qm82lZdEOYRXQftD6x;JR1*L6Ym@U- z5*ocLg7c`hajxFWf%)a{XX7H5M({JN%_p{rvVxb&PSKxrn3?o0&(Lf4S{A$SwF{ga zxG!3`1uMd{x*5)mYjYnF=&%^qlFFW1GXMG4d=0{@Tp7=7nh|+*J zMPm*O1y;_K7+B%?ZRZ7N4H&jkVklBFD?rcWdh5RYV;~C|n319v!{WNHP!vYP-Ilh? zZJ^MIgK!oD)&QxjZGv-4Qjb>2k53Q*MiNPRuq%!p5`?7Vj2ii*sa13`wUy;9jahxT z!3BL7XqcA%xl~oQOn5ey33k1>lBt%75?@ns6BUHRz>dJ65@snK`b*48?$E5+MkQ3( z32#)tw$-4R(4iQ$VAIjii6W{tZw(-IYW5R|oZ?KwwLd*D;8U_o5!!o4W0T%n;`X-) z6acebF3OS(k#p}3@FGapAf{8iKhXrDwo2BpKm$E6aX^^lYlTO~l_r9Ikh!!dgjLYh zc1Gq}zgrdOQeFuHslb-EZ=F6gxXixNSqriXm!d?vlp2V#V|YE?Fya&0=79^M2bpsB z-UC~S&RN8}M4TI`V^13o$Na*dna9inyE60}US2U_Ux5L$Lq9*@cKc=^>k@+{o~WK+ zwnd2UV#L{7^rrmTQJF<~dVsb_gAT4F&8>b0O3sEdHfBdT$xqv_>quqhv%yk;$N7-~ zy34gSo%|P5?k*2vHM=~o`>@{Y-R3gUOmi}5%re?^*<2DbcDPLfHC~Zgkswo9C02G# z4*qZiQ*}-E=G^?cmK`@IadFQ<1@h(41#dYVQ+1)+)hbKkI0p*89LHyXB}F?;%b5WA zh84Q-cqXabr@41W-o51lX1BDmn6j)HC9!v2-gk#N z1X2f?aLQ?8z#=-6Je{Gcsn_9YdB8NL9^(rm6u`=31_DXwmgx;hToP#q^2! zITK!9>(r0Rv-*!=sz1y_V?IIEIw;ZRMvdheqMdj%t7G2l8Lhoz0=BDdz>zeB zA6`%0!RxSgQZLS&uy1uhUn8dUMo~7d`=WAddC!sIS;J_H!wjFEX9}0JPxR?}tmqr+ zJ^5&+yY-2bn-G!CWD#DM(8jTR_XWA#Vnh~ydTS0FLPfcoag2$n%nCqqbi=8~VRV?; zVaN>$2gx!-HsaHIqsdK!Onl@aCCh?>!rQ_UiSEwMV!dkb@aXCL&KIpe>}uA#4P1=A z4b2Jlnp!_QnyOf}tca4xF4Mkq!!b-1bp3WY8+ilj^j425!yQeg<80X!FGwANx;w6Y z$~EG}=gUN{bjuI`9sWShla7kcWIZ-b|9PSyk~zV3A}F53GtKeWNPx08)CP)Q)-v#d zJURt`fA3dBex3f(qZs1MqHHMlZ1DE@QpV*y(aG@3D88al=Jn9;l1p^nB97 zZ4zD11(QG(TdGqYGgBUpLT&cg=Dw(qXNs*!Xm5X*A0FPmFj@mZo(aO=y^d`E-Rt;& zYo>B`#{X)ajQm$I0GZsuP)7O}x}9cDg;8;H(6uG>cQIgVJ zLX8F;Tdt%FrzY8^6Nd$wrI)BPR_{)mg=W}+YP0|qi*s(;_s}kHo3;i#CBq?A>~Yn{ z;TZbC7{pxB;9Ie}wcFB7i;8x$j@q%Lxyp3Z4V%W3{#T`7Oq&z>&EW~Ws%OxWm{^sV zz@ItuEqc%K>r>n4IYdFuXiyQc5$ps?Q-F)^;1-XudnoE>5RHr;iy`AUUEx_>+pCO_&eh}?aR+m1 z9%JCfk_JKSQA4E(4XyF3m}XMXTc;h|I>YL{?!t5EL$#Q>yqOC6!Ps~D<*aMWq^EtL z`x^5{N%ObwKOK0zn$<-^2?M39@}AOXU-hkQJn6J8XS!rz&Jjj8_U*h-T}3NF=fR?p z$ofb1vv?$*Ul_USm2as5tDD@1>@qEMLE$cP%hHi3D@wKE@3GyrcT0X=1!t3^&y|Zz-DM?;EeOzANVox zxFm)767fk^1qE~y4+d$@plW$Zcz8zV?&xYG9Vp)i7|{+r8H>Rv4h`s-o1|R6VFTIn zo(M2Hx(1pY0)^)y>gO*o|LIsk^#xJ(x0~DG-xjR?%F*pVP}lz>5&Vy{8apZ%AP;cp z1Tm*qY`CMFKNh28A+&99Fq$a{OV&ZJERe9U0t34>@B(6|V^NUQ##l4o7REe4VX=&$ z++`rYnf%CP?p=B5CH}@r!~8?TW@i>ABI|%f_GGA-XvA6D zY=OI8NguWxWO3UtmT=`59V56Lw+Y#nNy4&YH6~Vw3kC`^*rK6x zjdfBs->fyNX5n;MwHYxv;u0y9@LGl?*O0ktcD=S56QvOz>n{1O|{opImK~&OGkuSm5&IzON z;o}QfKl|f2f69K;l_6V<-UMp$UMFB#$7>=dH#vX&JKe=80{!H1_jq(T7U`JHGQ!=o zKuzsEg_zgMqXBCT22pY_9+qt8ME0RA%VkcZS{l7XdOHCjTrce#GDZ|?Sj49p(9@+t zI~%LiJb`@e{+GN!yrEOpF>C}f<`Yc^Ub!VCB6G6>wHz|N#UahRj|L7SgjzAQ^vSA7 zTRUUbTYu~~UD%vdxZFC|=3fDA1(Kr&ccdFAn$tGWVO>rv2l-%=ivu zP3i`M5p7z{a`)QAWDkUb8q@I!5 zomB@?SXCSNFGxt(@Fde>X*SNt!|_2oD+C5qhQrX>&#)5EQ@JY=LUOs#sF`hfAB z>tnq%`##w^ewkj7uEGZj_Y%$bSfs?VrxtVw9H3{wZ$(oTh|%vX|2l%GnXpNynK(qa zJSO0GV%`M&c3XTFsPq&*?+tSJBPNqVU&LO>Sz0dz;et)J%E36}7pt5bO zwPFxMo#SU_cLx$4)!uUrU`08o7!@~@b6Tqz$K_Hy<(aKN7WjfFgQ0l+8` z2?eG-hmkRvfv*cfvan9}N?k=Ng$7L7mfrLDu4(J0TCOO6w@DwQbN!VK@l5Ufbd%mEt~;luL%+p zh^UsQ?>W4=p1Sw2=A9&ZAeB{v_p$JY#KtqS_L`Y#GwCdnI{8b+(#z@1*~Mwcq@LZz zD|pW54dzuD8c;PQ4|~qUj6`JV9uca1&|kF%6qu35Vroo1vGut{^=_7u)3at$VxNpk zG!qu~Hfw*71`yYMm->kyKVp9Xx-P?SBqkQChV|ebg;|>mY0tDuF%k61Z);Y8AGVkn z{zClc)#2q@YKgtT{#kZ^|Rzt!J_= z84YBKl8+(iU65~t+-g##USTIu%;FMdiu>l< zNEBZOXJy_(ZIz-&g&pTIy!jh6I&IZ=j_*!h`^Z~@kuZBPkBUeNqp~B@Ka**RCUVjy zH8Dp%b9YgAdl`K9x*1C;!zQC%hzck!p4(IxnkT}B>Zc(Dx?rB&-B{~he&wkulVi7a zaGbz-J=BDy=q^R%ZYXkS>2<))Ojcdk%ZwzUO@vi8)E4- zZG^#!TeLbAQ#63|eSkPWcTt!6jJnq4rj;i)!|z-O6IM5oYjW#rumB?%oqhn90^$Qw zlqUPl58y9Xoc$;y*j|%D7BsQqpFP0j?$C@BX!2-iBx%9^+`S zL-c)lJSeBMkZW9`5teCjQ1qj%m50qT?uR*pqoN{h3WAdxPVWhR$a?PP-r@7b@D=5U z*~|Fjk$kv zniSG@G`0&Fg^I<~g50~xt>x3a$7Jvzz`xy_T}eUDaynvoEp0pOUrrb75}2UzFPXtD zsROg&o#)q0Ovee+gg{g=YWNQ)&EVjro*Ksv{n~S%H0?Q zw(=H^Su16{wcgt#+OD;_7gO(+kr%Wx%;r&Nr#H2Kkbbxm_%5+vg_|vk{;|2p&x)^y z*3fpCQl{!!{rb`~*7~c;oP&ax>#|{Zfc;kb0&(0e>XEX+Es8~+%tFab>I3Rjf6hg2 zQP;o*J6j{_$JxdVeSV)wjxCD1%^(MHrjqh{(LXk;Z+20GnqlJq`nR)5i%J zNXw%HqRRK1k3Z(IRocz&5CL5>!Z3dadj6?9>t7Nhz@iNxUjA93Z&3U0skDdd)1@nc zUfXa+s4I13-8K%Ag^baQ(V2QFuGUPorUAX!`{o<`o^8-JO3mPj6Tde-BcpR z!&>5;wUSJn$`CVVzXKdl#F-dy4l#{Oc;)C4>G+t4%y z57!_|hiNAZJzqAX5^~rN2hyr@1?L8}oVxWoHWsM*kboL>hFUuktkoudKBnDhaH6X> zKXnGODK6>wl-Mt3ipE_|s|=33olGy|C=IDd$V&xfc6jV$^^wRHItNSUT&%WJEUZQm z!*KcKY4E3@G?V_^|Mw2mG%-Z4iY3PrDItA>G46(KH0gVOfl$t2!pQ{aVfJ ze9|1>SQ2ejneLV!+Thpvxz%&13#6qxZXqSqutVjCM(n9P9yrrVSZ$p|(jrXOsLdw3 zcnwTMQC&ixDT&<%YJ2+QD2{4yfYi#efC{-oCj^vDXM(jRFb*n1qJ)z;b9}K{DyOFI zBnFxKiU}fZ`doxswLS-^9E?pbRUf+&wK`p_=tA{qcB0afI#V4Y8N{k)JGLp~9m+NF} z&q$em54C7-@}ZX?Fbw5J=oj=WR}8dQOj2MjCoOKZX8wYl(d!m8>y@%6>ky>wkPle% zmhSr1`nY;05mhv{ZA!0lGouL0TAV|-akI*-zvFasJ;2`^qiGzGtuHuL8JON9c=7mF!!x0=Gap<$G ztT(HU0~^jHJRP>M*?_dW0A<}`=!m`E{b&e1c1WsJr;A*mv>wXNX%D|Xme+gu8Fma) zp#Ys~vn%mTLyn1%?4~1W#x8pYesqql{nu#-TGrf^qR>*<%cU*Ede93efwCB?pSRj+ z>}b!kZu=L@N1rH>8%^~wdDyS2AI~`gS`CZ5@fNg{Fs~svZt^bkdl1a3MCqTSEVgTR zhyz82_hw}jbJ~iIlMST7_=BURC$dZOXbwjG6X2ysl&(*FQdQG&+&)D^b111YveYex zebEX!Vg_D07GOxq8nQSBy4$_7=Cc4>Fe?vE;B0y2guv_Fp~-d%!Nu;>|5_-Bti8V< zK5^_W!SqN}L=wOZ%s#thSLd-TPurj6xcS4P`qXEqPt=xMA%^vhrijxVR7MSvZK1uT zZMS1uvNv%A>vr3Hpgc|n{Q8OJyRO2|rEm05k49z3iY&Y*9!JDab&i4V%9f(i>CO|v za$cyz{cgZ|MwmstBm+HZq<7fOB$K>@*ZT`B(l%@Tgn|d3l2|@-R36eb7?$B~9?O5oEKQ@C^RNGiRN;V=@c zhdi@NLb#?uY>h5g3w_+xe}T5c{@BqS6(kdyriPQJI~vTd$V&HBcsOCjRGKDpgaZ5k zc0iDyI7CB{QgAG;=HtP51s(o!KKRbrgPDG^{Z=2*jeH=x#ZmxfAp)xM!>}?_8{jMO zqPVW@=IZylqZ76<`lu0B{;Cwa|<`X%M-h)E(^9d>$cr!|szdR1t}< z`U6RY`+;N*si`S`JU7F{sMoBku>!Qj z<7dpftRi?NQ>%l#N5`HrSWU%uQNZT~N&|T8VKIznK$$>LvOC`u;U72T5o-zWVtr=&0L^TOr4NpQwF z$O_zxs*SRvK5`qyQj*RtG}_^RY7d_Dy=sXv+b{qO=hJNRf_dqeg+c^>cZ*@X-I|X^ zyF~DPHU^58*-=8@AMR=*;uknV%1<9YcPBl0D_ zsiX88c_H}v(}2Tu2}e#WrU(RzgUcdwq*L6H4I=#$5AB|$8=XOzFDYXr zje@8Zi%wX5_FnJL{0o_b3t)H#8P{vPW8*97=f-K7gY4M$i1{Y2LhGJVJYMx`*Nf`? zMuo#W*0hGYv{HRGppr=RY(c5D6A5rvSxQ{Hv_WCtW4l}$i?hiUBYH!mvKlGQ9$kXo z=;GlPHTz%+9?z8?-{Y@8232?K-|N5WWe(zFIi##qNNas4YiPBP+*Mz7{id*MkYuPA zfQF*4D1V2gxc)l|t7KtgZ*3xN;_hnaX#79aBxNn7U-Ag=a+=Ha$`rKdsPvm)GxZpP z?TvZfnN6NI zy_}sd#c%j_`T!apd3ucvRF)X5r21*9N`lm+dg@sU%a$8WG3zy1#}(1;?kq*qf30`2 zRcyCw%=+uY?vP)OrOk6$IOm_XK4JVcotu{>u3E4THusTTQ%-EHP(!JdWY)G&Fj@5$ zWgQvGvr#CyMd<;?T$?(h4CX6^s;;grLOpdh49nFU!8HvP5aEF3=b}ukHKpfRn#C|w z%wtW37l3i?`h2Dz*vdOPhwG=P7W%B3n;B>+lUidf{gmvC#VGk|0wD}tB z(Z3mw)B-tS81s@r9Ba=6W#F;{KDQpY0CZmn}LlsZfG`Fzwyg3+4hj zbr!p(_!*G({Sa6oONl-f;S#A&p1Ph!;+H8QsF#7l6fWip^w?!OO(m>84~OE*rdOd_ z49i@hA=^mOeI!#TKoNXcmYQagNC*Y!ENFx?yAt8O;+g~$FY#@mr{DN}e9Y25@j)=8 zaD8IP5JG=)5P(0!L3={Z!^f?YzKfXU4RvSebjnjjq$NdE2Pwf?QneppYB!iyvxpOn(8?Cd`6T1I9?W6aKZk%&+d&x)KYX6frGj5Za z&&AiRHN0TG(;0e6mpoaL2L_>+Y4tom#+gWV2F$j-k%#6C!WO?$a6DQ<?JMBB=8g zF)i(QM-UBh^Ucx~q1Qi}Q#L;BP7DK-_WHkV)Bmfb?*E~<{-O5#yE|Cx3$_}?_z_Jh9!D9IqSoZrkmvv1?lugdmca1S%@IkTxk+QO~4`O<6YWO`u6|5Mf zQcFF>(yoHCwD-W7)U~e-KTD3KxScvvIX6<7omjfw-cHFs#h1VYQfq}lM0SW&)U=qY zx*#Qr{gOIOt4Nyr5pR30F)mVCV>AbX0Q|PHFU+jKe3A}jWV2FM4;%vu>|PNw<46jW zD=or9#~?p-F_Ad(lnT6bP@ku3EH08mU4DRO%|J*njzy}wjsjVP2A#U+C?>ssdKfV#1wvfna_gNsrA)a{lU3G*Jdquvl>qW1q1pd(;!w9tcnmP zFxrzK2p0$DXLPf_+Vq-mRywq;eukQzd?|Z{>M&ns-dCX1%e?pjeGW%eBFAzCYu56+ z@n48hi9~(P5w4~DM`AafOCxOa<=86alsn#-Wf7xH!N#zoF-NySt6mf8Bf}}Vj#))g zfM)6wRpxKX2z8-KpHD|ZObRS)&d)XPzWRmPo55vTv}h|q@8>YD4JMe0h>7*swD*D^ z2cUGZkrDfb*XgW$?9woZDs;1p6~HJL(mL5u<|&}^ZxZz7K@c~slY--FU+^>^jz zgJnA&n$`QZD%N4s8Hx0uYVY|}II`; zn+l*u!n@v-4h-RaL={TrX^=3g#x&6f)k z6AA_?BD{?;jo*zA5xDjZp~ao%PBfYk@iVU|5teWGu*+t8^By={3|c{39zT)8Ve7`v z6|-h?{5D$;kIEM?++KGcWX$ys-j}Cfpsc!Ea`zuIT|LCH&QWFrN1Rz61!`_XvATO# zVyy+8$(#bpnMCfwnPl#wZ{K#SJwgh~d?XYV_=%P($exCV^%$>l>P82rX4}M5qNl4& zC2@M(R=1kP{n>G+1;5+IcorA>QX@HCI49b%tnp(lZ`0CGot$d(ebdv-gln)8jow&u zo2+O-i}Vhm`!F~~f5gj`=8AZO)k|91zV#hN3vq~1Sv7roMSO-sh*)ufzU01T>df)N zc`kUn_FI|U(oz+lV`6=Wk`a50HB!#%-oE>GtGHILqq4$k+vbunv4j8nZSHV_7lsEE z^mP7q4B@}5KmUBq6;m1vp`w}BuiF*km_ahPA@V!E0 zcgooRL)tq=SE4R!qn(b`ac9Q1?WEJOZO+&>JGRY^ZKGq`HafPQo3++H-?#4>cddQS zxIgBPnIG>M^G(%TRZmqtPtqIRMD(&8#+8i4!e#mahCqwD`&bpTWydjA&|T4?jdK>5 z4<1yq;UJFM836)@wz4_bDU;)asvz`!*r2|)AksdJD9{I3P@Wp9ZG8`4Yefk+F>zvt z^!szOA^?mJz@GU#vQ$^dE? zXG67Bs=A^-8&Q!AlOOpskZi9w&c~uD%?s2i5*p!a4NBl9+~G#(>q=DSCHC%G+H=ay z%<_-Z-HMer4iXY*N1h6b53#hci%sa}M^DG(h1Td76a|=CWO`4Oi(k}P0HN0I(&&73 zsgMl=Rq-SDN2EK*Pbi4=_&Glbl+7Ek%?@>Gz4yQlxLTdY$WG~nV*%admcho88%%&^ zCUNz=ty$Q|%=?FfvSYiMt6$whBk6qd@iy2fV!bvAEp?MNm~VtV7vLcEFNxvDO-LqW z7*qjh+0-{ zxkjYn!fVwpphlfyzcn!t^5!yszj;vtr#ti+(KatKEX@D2l0d)fd&7+=KGd$5Bb34>e@$>j1P z(&Zu=7%Ua_Ek^-!E?D-$N*4O-?ERZ^WTpTTU$QP<^3YF6^0qg0f4rHYb$fSOAJ+W( zkAo2ZiQwR0*zmtu^ItD!hO)Uk$^e?z0J=e#Bcjs#`K&xOSPVO?JdzYY$@ z_;>lws^!(!RcVK;IsTBH)|i%X6I;ncpC-*VMfp7~VWUsg>zP`p^OUXg1o{N|bd&9! zeVUSyU@-!5vOK}fl*(a0?!IoH^19;9`^xlV?E$4{+=IfY+M@5q?lL{L192otibeTj zuZsmfRZ4(S=u>@Kb!D-3pB%0-w@meIc2XlnKnC|uh2kyn@~ zhMNr(XJH!Y{?C^`&^0D|5Ow(9m)Vh?UbO3UOVKSg4>Og1)D9}I zE5n9edaj3kawC4YXqJ}0rw6A`7$sr!D-N-+qECuO6m%xzoTLJR>eO$-BD3a%Rd!3% zC^c>K`!~(59mJiBL3=J93ZXIt2BG)HwN!jX^PHrXmMIR*Xi8VfV0W)dBQTIWcFVGW zm@N+VB-!LduEItE$+dt))uPjphsAM;x33-w^E!#y>~s5aVhbJn? z-)}2&>YPoRxM}LNad#EMsS=ZF3vGt4Al$uGwp&+Orj#m85C{-$fbFTp)zRU}o83G! zH=EutFm%-&ZcEfAfjJVQ*Dema@h0RH!u%=3{V+l4 zlB4(|Obi2)M0GecX$qk{^0X##sj$M`$fg~rHKhni}Ccd(&NmN*eaEpgk@)a zwc8IE5FPB}CVjCyCCTy3By-c$DpubIc_e5gC{X)RJ=JO0!)=0Mo$a!gxHhW!i@Pb&Y?8V&t@Mv zPlz@_+4E3V0U8WqWxni_3PUo5pfqm@vZiDV=0}l9(+`$frT9BzPBc4md)ad+zg!81T?{3Xo zUbt|?O|g!K$(JXmV83z^4+KNr~xN?G=3zy)t2pDW-DOAb-3K726;FMP#r}!kJnvPq2c#jsn;y zRM#4jIOqz3t7ajV>U9Y z*RH4_r3E|lVAZ=+s?RMxQpbr$ogaI4p{kRok1qc8=OU@V}G$kROGn`B49 zOqOo#AW)Wjyl^-gxk+X$?T>D5fQ|o};@Gdb0r&wUm3i{=1NLY+7^7%*Sh!Vt8qyHG zZ(g@U^QXk$ziC!%5xC-l#IEv&;atJtrU;2zWdvY9QvHhIIB~<#x<0@=f764H@+1{8 zs#e)ssa+%!F}BUBc)^DlWTY_GGTCpZXN@A5#*!H$;=i6kdek3ezH5sxXFmPSw{K(d z4YyEerPja>g3N@8IjGRd3%@RMN|$-r6wLG_uR5t8F(UpK4RZOG0UA;@r&ga+wOdOl zjoxiOrR`Q(Jf(W+yC<+YB7_u+Y^^%1zv@@^?awJucr&zDK~q}~f#cHyY}#4fRbQzn zb2J2DBb(+oza~!Z^;Zvg6}~W!-J;4V6C%){5L`EUa4~Ykcka!?+=!7kgu{CROm0RX z=89>$V@CUMm#vKP#b=>l_vP2Qc8*^Mfn_i{KfS+f@cw@L3ViezhP9f?LjQSVH-a!V zs&$$Bfw3b%oy zWQUpVQ-q(X`A&30$@n~uZn|aX1LRa6^fTAvb(f>4lzg`EE$PY{;Z z#rczu?k-wKrAoBZv-Bs&4!YGm#m-UIhL`r*4{hh~47Xf;ynAbJKU zI)jZDK~BuvS_}f6cy5hcC+Ohei@p&ei7S9jQo<=qc+gwvi>dc)lL0#+nwQ*3c>Y-> z)GX$;xMwFk#G4- zFu97nHr=ell_!Lp%7DC7Z{2}go7U*$CYEYwc^JiNZTYpShB@W)&mY!`3xQzsZlR-? z3r3hh4q+NF@Dovt=6>7jP_w%n)5aRM`u+Z`fikl>YuSBC=V|; zv&+WN$KqM+#8yR@Qjuot_nb||e1szV^qshowm_iS&@$^#TNOPB(PkNUhZt6*?99!` z{3>Q-Y?C@kXl#kBtkK93n9t;FF%lo-eAIo8)U>$jXUT6VRQE)1%#<`kg+iW*ORr0&m~)6OzUzCFW)VR#KLl5RtFEad7sL>FIgYofE>{*;)9P zJK+_srzdwv$|+)5o$rCZ!JVHe9nA!FrLx%3BKqp{YFOEnfjkvxMfgzEH5GT$apL_% zo(yBbxFLsPTvnJc6)M%Ayf9v|z`jn*73jkDBuqvixiiPDenF#Y8j3QaUy{g$jJ=zJ zm@%X8M-G8N&p)QL4f~eQ%8Xi1{Xqw%txZ3AYAtCfZH@9w`~P`8e`w;B=&`e5)=E!Z4Fm%dMN7T zFZc^&7If!p3oXj0Y7O;oIg47+vWL9e+X<}sAs-k2cR2`*>u++co zjRtcYM$l-O{LRH|WKq<`ip2;uJg?SMB95)+_)%9_*}Sl5WvQVC7q*GmD4Mx+9@_IP zAvF@qjtU+HT~zfx6Mg>Bgxrd%?zWt1R{7TqM~^~&_~!?!E%gSuVpfDAWEU)Q7`hxDR8vc;A?L}e(+)1}!AB&^G(7oOU|_~s*O6O8 zHZQ@SC>f;BT+EX0&4ZYtJsTpWGlM$Oo2WoRWoRg+xf~sY`|?(mHmOCtbUb?T*=dZ% z7y2(doi|ta$AA4a)u6>~97mB?Ki#Mxqv0u7;vAu1oB+~~v{QGMLl${b9om7v2St0Q zYap@@XkqxlKfY{M%1BqQK7N0@a!r2L9(CtMZcZ}x(7w7y_bM0UaQ0l71|Pyut1lU?;Y-cfW}+ zUsr&H^Hccw2Y0$)5Hle)+8|3rg)C;HGq?cI>n`7R0E~ER9fLX%_8p=iiz9J3iV0ww z_zEYs4Q4eMoc7sg11&RaS=&iKxu;&zhyjq=xqitV<*gqXNH5AqqE#-@_^kwCiZbZto;#3l@B&8L5nM+? z7;m9|y3>rCHH57tkBsqUP6{Zz)mFgFd&GOW!52P!`J(zR2FvktRaM14A-O2}(qRyc zS2)dGYqK+A=j^o_`&oEh{Eo#c%j7-D)PtzUfs)Q(gNtBf_?;lA*yHv#AoybF$a#+1 zZfMxtYjpSln$NwdYCGPY$HyTC_Es(V+K7?N-S4>DZ0L=)BKg)p+%39GyWi!z0cYtN zL(Pl#AK}lsb1XCSW2*EN;r~xt?*A43gsk*GHc#ySEed|H^`U&Q`}U|vXbHi9qs9nP z)(NS~z2u;QTWo`ZAftZn4+3%}_HnkJNk_bp;W2-Vc;}qIk?*WUnORcxOF0>H-KX16 zth*O(czZm;=;Bhr!S4B7&fkTHYOU|@nfKIb0ogSvw#4!?_=TFVFX{B z4MkZOm*i=;L|KHG3rlij)b282q$MF51|}7%^70b_oJ>oW@X+ZJSy-uo>~8K;KCo~h zHAVIq5KK$+sF-eu*HdEO-Qf=u3((Tni~tS4BJMH=A(}A>VmdyxFuJ#Q8-#TiP;nEW zsU*@IZ#tApb0vEK-(hd$oi$gGDmbTUWayv=&`4Esmu!8 zO^j(Hsb-n9DNk)w%$hUqabmTk9tBRUENbNCdD97%#Lu ztV8jw;o=l8_jt<`%f;#W7EqFX`{|7&vePuhH4b+LR3N`sf-N~bC*X<%1_lVr3?lbf zw6-@`2vL}D+a+JtuIe@|dT8n;>j%#Smn%2zGr+wt=ys7pul9O;hOlC|VFA}y&C)~m z&gekGJj>zp;c5~|9sXiz;<9Ni4V?OEUE+udo|>z~$;(_J<5eGf)M1!FqN0@a`LOl~ zFLU99m9)rq?M7sppDhE#&FPUWXr4XUJN2Mhup|F@y5FlvXcj=#D4p3*Q!(TX%B#8q&Fem0!$cZ zqWvOiLZmiUo*-PU$mUcWCcP9!#K+^J1gy z`D5(^5{kMDl&It*7smd_J?{TRVk~cH^C3<6Co{<3Xr3sV|M_AF6l)~jD)9@+EjYId zsd)JKDix8Npn>ab5@9szt7$qNJHZ^tT;_IsLN3n zAP0B88sKz^C8TBmW{_ki5X5w0>Aq2#E5j=fa(xWc13Rnbc+HY2n38vs-gNE$efDfTQM45 zq(pjf1Ltd=g$0EoFb?|Lolg3^0=3Mu1F0%hWS3Jpzm(Jjy#;x1x>t^YeTggkrHJh1 zvn9y%1TW%AndEh!XB)|)S>Wn? zfZLR*sxnCG+}Vj3=%~p*-brdgITsAlmUz?RQ(n)3r*9HRa6dxlYZIB>5#ohqinm5d z(?aXZIbHz2+HIL&l0LrQEp2ry70?+lQ~02nT^)h$$WxhS+W;PvfS!%)d^i@PMnH06#V8D>6#(lz^GQ zYf;x!iHJFzq^HKgJ42ggVZszJn!?@^d9 z^qNPJ9RkZwzJ3aLw&bpPp^DCEDZ9|i1|{qX+)`mXTUp;y@Aq{Abd1`*z z+=5o9rOfjM%5B@`_UEFp#T441M&;H~;%cEf?bB@YNYpjYEA;WGiQ8&@+PQzn-~+L?$%CD9j{L};GIfkOtZh*Urnm4gZ$Pjj(O_Z_)k^@*u-AgYx*W{ zUo0C}ZuP;#v+MSGZBHj7-0s%acs3+ZMd84!+nOCU=;O~fILr{mum#(`Cb0REi!Q^- zw^irzgQyVX4rckk`S~wmoIIgk%RS7gk?S5XaT|a>T;C7A4&b$m771$;mTB zfkU+a%<#|V)F_P`SLvrf<48ABO`j^%jmcZxnv4pzwoI*@OQy&MLhmc43k3v*`f2lN z{RrfS5klsX8G@%9z3Y>VL<>w8d;9EXk!tD?;x;ggcKKsr#LXdby)?>@`Z@Pq`cuyEI7Y~K=%k>0BWfUZcS$?6Rg{Ptq@ zLiYMV8^ixgavCAUBlDRb(bIkvr28=iKm`kn5}7PXU4~C8N-bJOKV3Oumzmk<()!R* zBuf5=K+YlDHD~qkUu1_5i4#`I@AW5rSKBGfR++H_P^UGV6`8p_xaz< zGVq#WS{>EL#{7ceC%sGbcRW%|tqWG>FtgVuLPvE_%rXp+iN3c5Ai^_@l8SDQuhqJ# zq?Z!@c5jx?YvUUp(_>{av}PA4_21++&B4)!EI(SLCBR-T?!x$-JqMO`lyKq+4Duxg zII5V?vVoKgcie>t5_LJQBA-^T|_a%e1q9*Pe7~SXY>U$e!s9Eo8K+itgL2Mk}+eMn{V4z6>YXaA7r-` z!NE(%w{iEz2U30}EfgAm5?Le&zEGB|ktbGTj^4_Es{J0KX;vPpDCw9UJi|ynF(SKn zl&XLtXcGCm4K+lP$d&_8Dw|e>{L8!C_na33c*riT@AGKlRDPbe{H0m6RVbpJoz_J868`t!EM{=2<$-C8g3LO?(WKsX6QWbDGdcE9Mo zroY_e_3m1{?!M$GzWVmY#?Iz&zfQ-FVtdLgZ148^&dTDaW%$Iz@Z(ceQ_Jy@G00cwz`~(swmi(TrnCG9$FY)ECQoprl#d&{&Y5q4etfL9Z~;#4&9SHve?ZU-u49I zxkIUF5nkGAO0)erkNw2hQsoApCj`B38eHyO=xuMMdWDYm-ktu)9Vk$#DW346EY(5N zTrS?67Qv{LwKBNX0R>!NlzUsI`L|uA1r0SHazi*_x9%GX%{!MgR?oWFfc-A20C7e$ zx(F%*4(2iiK4u7<^3(jChO@z@%kK~^Hl})cF));7kG=KC^==bX95}fFs?dE{5(t`% ziQS#WDE~-lY+d$QOxjStS;$I7e-(oRiG4Df zM1_R-ar#-`F)P*2Cw)jb?vn%bO*mt%73B8Loa7720c6HMS8@n(Ho^$|Y+Rh}BQ+G6 zBM<3kCArdW1Enl63iSX6?AJQ*EZLZXGURn}aIfW%H5o4ABn2NT1Dco(=kv-uM1f@` zqwj6giV4O5&cF!p2~Qv@Oo5yWz^{*Pm^G~PYcMT^HH&L>9AVlkM3lv&tZCn{8M30!Zad(-|$1WLem3FWtbCAiuYb=@}IrSsJN@qSD0VMe=8%H?Ncj`~I(2iV;353y9)|2|A zmGb%9i9`p_m4p_a$7y1sc$k3GrZ?E%B-!Kzj1u{AX$R^@E1mEGbN3JkH54Tz@eJh} z5~%a^wL9G!ewmX4b&du@u<;Aozr3#Uu9g!P#I#M}rvyDDna~6<`{p%{jCfBV`2O_1 z#054Nz(=5U`Nxv-e-s<#4ecH5O!XZM4gR|W2FQ&_cYpAY_4MeK!xTMyBR*3nXtv#g z+4;Vm69OF~yx2r>3LctQ{#)+_ov*VVOH%Uz#4Fww5rrjZy)S(lV&-+tYRE#3%*=POYndw`n$lp1r7EmEfNbaAed36zycmQc#CQQERBQEGV6F=f zj#H{iHfacv<`Ig~@SaX5z1O&;#dAaK6tl@y#r>}28-vhe8&r!;#87aLo6VRha4S3`NDD_9o^VH0}%mec0nSXxS{xcoo;L&sVL#yY@N8$hX?<3CNWiNKt zHimW%uK%l4=x=HK{_8N|4}LNs7gKu&`ws-+&+`QhjZCfnD`j_-Tam`(2fRT<3u)5G zmzNLFD1%A1OutJ)n*^)+k>ps`_gwh812zZ zuF-ez>zn5-q)t*wxRtTUXCa}A!e#jNmlIYc@>P6AAE?^|cXA%NS5hLJjJwJ&z4p;=OVHT{fjB0uG z|TfR(#(}#D2r_BBWj_nhhECPXz>T~pp z*%7Y0HM9Mn{ctoS&_t|(LwWp*jLPJsNZvx&C~fy&!9mMni?ZX%nmVxLI0`zS2CL>} znJdd?j894v@%_O1;OH??iN`3G6`q)r4wI$f^_!wBCW!~eg2{3kqh&l#Voh22otgWgCE4+b^-K*RD!~+ThybxH zEXPfQSVM8wZR#4lnHNmQ4|A$Zx!cYdP(Bz2F$=|*o2u4z*YmOVl*@BIbUqM^E@PKv z9vEJ69Ko86tu+LG6-p#xankQ8z$&sj?4k;jO#kHrHq(cEb~ycP3;Mui>R0bxoQi-5 zYyr9a$GZqU^2YUR8SY@0RRnUx{#VPums6m#6ya zHs;lJa*t!q@yJam-&jQ>hIl+P)5_k|kD}vR7|djP7;Q4r_)97zlHBDHIH#htfe;Ms znD@>;WXdmA+h2Q@SBSQhYM)BA=k?BAvLY6ca39yGH@^t@+`CET=h@jJkOU1kPgL3E zmnQDE#r%YX8%a{HV_HR@+Oq1c&!h*G)JjT!ucq&6ZTsqI1D@#@q-toxB`@qdKzHM! zj`pr=G=c}T+_lZ=e2dZWXD-vm;zMA7Wc!268*!gG(IbbIw{W#w`!mkSi34(R1FKh8Lwo0N#?Iv~ z$Y0w4W{hoiy&o2X^p6GF-xd1*?Zx=N(7dDU$cN@3V!9>D^w(=BOV@bVbkSzj^swk< zd1(%O80@CzuJ~_gNyOWi6doWd2Oz{>JU-zCEFu#VlP8{3I~y50zrI~QLFmGk`bTVP zYNrT(k?bh+mB2_=9eG`Zb4*`9J*uUjwv`}R20{8Iwrv0yZU~Y0Ok=fHEMszf!#l2i zN@@d5qp!yi2DS(cy5H)9Kn5UFqeABxkA5pHN^zJ;mc5ledJAY#w#&+C-&FOR%0k*F%(kj_4) zfn#o-({7bPrduaXe;4VY>~h4ASlImH6zs@^>q>1$^7!;ft!Di7Be z`JF!z;0NXVHT;jOule}=eK5fI8)vmM1RDIW0>R&n8vJ>XfUCZRss49IBO^mQej6J@ ztN#PpM8vLGA$Sl z!Ye?x+&e9Zg4Y?uSiuA7YlR2yfF@sBZ_rV~CgD&mK`boKrGA`P*&i6%Zft?APYv>mnU;VQV7^pd8-tjB{ zhBZBL{SoT`byFznxUE69QA{UzVEles#Y9#{y#jZT|W5jdUQZZ~NX z)YZ#Ya4zbbZNN!#mnh(CUEEBC6_dfUw#G7&lkOvp2sjnxp?3aaon_>)Y9fv`;tHCV z1YC<3o$hbb4E)^>NuOwGXkUX?qgw-k$Q9MNRh(2`DsHg?YLR5xLWGc!QBQ~jRPBBy zrM6=Hl{06^f{y*^)*6mFQwehi_$z$VBhgA#f^&)|dX$^V;LZ#7U?Y=!E+}Qv^MH9W zR5XeKll>=#@#AK&NP1_eM}500BqbkYS@2h~y^Vtn2IufTBGlpoJIN%{8@;^ZBWiub)pTDTwxOJddkY-)h$0)qp&9( zh;H*mdGK;HbMhI&L7nJH-owq#q&3kAA5&!S`8_IvP(Yi5MTbCorSQN57&D?$3vQ=p z5qp$}I{v78=}Ag7xj(`Y{XfpL{$0vrXQ*%OWN7!lOL_jTY4U##lmFML0@fdEex_DH zhyQAtd^}r!s@udl%ikw(`hO2uxe~|mFaDtwu&f>upGArcjaF5xxd2UDA+l&C^iG6D z+>2fZt4@dr`yt!<`E1dOAZ&blor~!{-F^J^_IW_&Q>n}F#h^!N+kX4rMOOu|eMa(3 zE!8;XW$-Gp9^E$E{_J$A0?CFBwx7P%8XF^3zX`Oww$(a?|EpNw)n4G+uNjk*gABLa zsoAt!Cu`%r8Un9*}SHFPCgmrJ$ z!TzmCC%B%E`Z~K+%gBjWNEvR`9~*pDV-DX}rm*^Mem>Ak9A)X_tYInfkDY^U$kG`s(tS-b&IBDAGb_b2!XxX#H$_^m=r3e6(_7!~0V*eRA5qskq(?t6sewtQ$G&w-u| zdT?2~n5$R%GvlG!B;1&`0hCzALHQy?PqIRt)iOq{-mVI7 z=`REGf~_vJD}p}Omjj`n2v%S(2f{LRng_;!_R(@k0-uXV#Qq<6xGvy&!34{~d6WU4 z>8?G<%#wk-%)^m_sSM#y^uFeBv@v&+eTiP-TP+vPe%Y0Zd&-7U`!k#>a1af@2f(ag zPKo_02TyMz^#Gd2$(o^lpyl7_7XJa z5h?}%la+%|xp)fcG4fcg-7;#WsT*!OcluKSWDv^CqUQ&9y0a-YiiD;ZmY=4nz`e0vNe4zO^*xNY_QpXo|jdp5sD zQWD`Be=nuy&Lskn&FuJ!$>t2)sbiBOXJgSR+&n~1f)dAygA&C`enV$31(k-@$FW{3 z=68iLPCUhQN#H40iI-CtzQ3VX3bs_5eoYH+kDH`1qd*^nI5w4sq;c^oV>{u}X&R%cxkNNfUd-qml&!eL-I!|&f z(WNA7?`N*(-E;4^7uZhzmtGsX;arVtl6GCcMlDXl_^GhnVQOuF^dM9!5oL_!dr#vlXf>xkxBe*F8f9 z_i#$;pA#jcw1-T)wGNC-vp$4MUMX<4t(S>(PHltr+ z)$|pufhM&?e)7lWr5ZMpv{xinb!%$-*bszzEkdjH#3Ge0LDh z_$e#Cn(Wj^_S>i%68~=4RF3R&#RjFU1MSMK=aQJiQszu%dyi>%ID)RpJDYZ(3R?~4 z6c=VcKwY#yR+t8BNX>&HR#L={7X`^m_~?=_M2rTpo4Uv6Aol@}MyvoJdx0z+LQMfq zx9N{><(s{})t=%zv%Lctr*}|-*1RNXvymHN2W^if>j8jdEJ3iO-BKAY;+4CV5tFqi z?DP7m`RsfoF5!NKFUVmIshpIeYHG9aPb5f4gTXx^IVu2%pG7}H=@i1g>d2wPNh#l| z1NIqYiied*?AHfVHl+QdQCznxypRJ*Iy5YDZ?f5AqQpXLB3R zJ(p4ex~pt{35rNyf0qBu0WCMpN>OdD%oZMe8p@zAVpl=rk#wLoX3h#eQMx_3H4t*)|(1e7yjS_ee=N52*Q7uU+e*tcUb;;3g z0EH4Oc({F}3EA^nN@byvEK>5bJhr~+6YC@_kRbzO&c@Ui0)<;bqKTXPbdwfYDEe#> zu_61bqwYiI`sW*5MCaK1ReY7{=*H;`0rL;W8tZ)b(0S6U{O52l@2p0sB?fg3y~at* zQZ<3Jhb3Itifm7`i|t7k#RjA4CsNLHJtCUZ1tggDZ&iD26R9C#0_st+N6IgJT5BfUjUY32f?wFbnE4H5Q3JEbNPj?2#<67G47 z6Ih93oDw@KWnts*UmNbL;5nQ%2fzv$2*x_a+~VHueQ6nFmS|QnG&dQQBS)&!VyzjX z<2gynyoWzm0l!@Mw%tT(JF2iOWae_@qerVuL5h+~*N=&WKkERhRSYRkUz%8TL;{U` z=#JPUcjHcvPud8^D0KsqW?*qf+5kxhrF{rgc&#i#=SjQX@Zul!F7;Pa{b^51%a*bY z2ZG3nl`lKba}z9Sxi47KaD4Cpsv>@=eZSKt))nfa12x$aA%oHH9x}V0x$;2yL;j)i zG6Jqctwx9H#5-waW1FjajoMKS{aDS91nu(A9l0Or7R$dsLdo(!@~83sZRPy0n&JcI z`YQ!faJ9FvHvadZ@?S~Vsq`NMh6-jH^Wf%>NkN^11F>XO!x5=E@$ue$4A&sI99;kspqxogOM2O zJ@xZsUBG};)XKKMyV5o2eMW4LRP8dfaoeykxUHHC^8PEh7?J_UUB(`pCrZYjOF)37MXP2i-kN|) zdP}IwPU+alG?Eo68-_4vv?UPlO1Ca5n=E5#YAQ?vvpe{>$w!p#yXZkMVS%zAoN(hc zD^%;Ov1+v`W-I^*1^siBt&OW2ju72(wXaQEUW(x+f#*ym(gj%FOOy2FU2MRUTlPsG z?p26(q4{G?w1=%nmvg4vZfL~4IaGnthAvbDlN8A~n5C5Ojw6svQM*)g&&mhbBH>y| zS+_Xo0ue}CnmbZagjr2)s55Oq1Q18&N*q{_Saz6qJ!{BBn&~x~4AZ}&7r?}t>o&pHXZ&;+J za8m~&>{nR}%mDQAEN~d;qG!_i8Ol@GIh#3Wo7tYa=T{=_Zp; zi=^um<1FV$@^3&n&nrjO6;4_mnG{D`2VsytKiP zzPJ6J&yy;Ziu+V9Yj62unOx78rN2b1qz%_Os;cEA_V;Gpd+x>)`c-yD2)m`x73fti zqbEXZcrGIZ6VQmmX8oFX;(Gn=m)G?M)dvd*(y%bg^QfhPWn&FN_-Wae8{=_vgC$48 zN!co@lt#Ha3kMPAbb75tGr5^Xs?(^_M2TYFfOn$i3gcU_FO+b0yv8Cj7oj;UgiBpD z34Fp&b@s@7HW$yFD)nKR-_Z8wkhG!n*&VtZiK&D)BnmRf2O`XoP!LctfykNS_-E(o zgu9Ws<>IZhZJu|g6GiG=c53shIEO-)AOvNszc{yytd~^p*gTpa!2;>A1)zxhkIC+% zwwZw@GZVp@$l_uXu4(c3dCh*>)W506`)nZgp$R4qkVv8xP#YX1w-|=OHD^IQ1sA2; z!y=u5w-O!{k^COt0jQ9nf=yGfdtJkJ`1*ha9}nSR%!=II^H7^&D)}k4+KK(99M1}5 zQW;4Mp;$y~QKgfr2uB&+AZd||e)PiV?j-7(wZ&=TNw?1!2KCXEP(;f5-s0k1)4t{^m_<7EmItzuu-`dzSZVo{b4Mo>b z;d3i4&D9{NuG2zo<67U6MQO1E2MZ%Dz>6fcy3--ry$5UKe(3XzEZb+&XK8MTvd3{B zbsM8!$o|yY{R}-r&6P&GWx2bs6+Z5^MI4s<#G|Kgx&})5s4cBo1dK>at9WGg&B1(@R7lE@n%)azv zu&%1N74Pa5mLo?$vEX!*Ze_-}CRQ_X&PpPh?Fq6ieJUAMbC62J)~Ke8l$DY>>c+u_ zXpfLT1{lvn-H^de-$Qy^Uv?mAhb)M?Ayj)WLyGE<`aIHdnO=jXp&TXwG$lGZ4`4k8 zM+V#<9MF>>OVU0zwyfs2Rr zJfq>`4Hui=^8(J*U1qz*mkZr;8oieLtPd~0N>c5M9Q=54b|^ABFe+w*30nb0Tc&VrZaZYGq*UEdSS^{_^(!V&lk& zmH5yXM-7-DCY6?NY~lv>{B#;WF#LI{#$<#PhTJR;Kl&RX6%+23PZvu6)@@izK?0>e zrPn7um|IT%?|O2@qIYffC&%a5T90>UPY|7iMi{&y?Ch+jSz~Y7Lkxy zshmkuk>Z5*4NKm2z&d1fk125d3xw_&`bh$*hPy9$2Q7n4)O-O4dOxIg@7IqVXu_Qwvy zNH;1~%cbFsU=OWEMjF7-)F(>tZ)pr{34)e1(yla-I&Q^Xzk%GCK3;nY3_5Jj%>FdD z&IoB9GD%9(7r&k-E@uDnTAM@%sP$%j!$Mt1&sum8228c8{_F6X*`KPiG6=gAg0sXC|D-^p@z)* z%9h4biJ;ry@9KFeNXg5dE-oBI;{S|L6f`HTMbee0k97SNTA)WQyX<7f0ZGN4Fq<>7 zDm+1ao$x`WsDU@3GwgGdhxC6qau;-s}{wFkva2N?&vqe*f)f`L3FeeJ17)D7l zAumYVa(`Xvj9?551_J)jOGTy^Q_rp`2k4Af6&OY31ApWFXnN7hFUa@@0;Wt!jsBKt z$`RW6Tf{`#lt|?8uNwq zF4wza6d4=1D1p*RMkeFs$VT-Ir}0z%h6JgBGR`23J*_6n4zy$U{wd_iuI33hBhMiy7&mB*`_Qf<&Tvd4{!5k+p&tr$u0<=Vdt6IO3I{#V-vNYD;9xJ zW+Tlp8tk@-a|ou!b=v}}rZKw6BH0yX9rGO|qlGoTgZ9NDUR)6r33tYBEa~$ zO#(w(vP#Z#{EM@v6cb44&$~;T{MKlI{6b@t?!GSYeG5{`&O-gifI6urk?z!$gm8*q zH+y%LW`Q}BK}uR9~Ugm(878 z`y{gShb=m)1n`Hx3Y7hbfSq->#mzr-IinX)l*KJvHWM1d?k#0nOgi3Kt3a#P)2-5n z$Qy+06ZH!axuttCj>U z$JGG~lj44wv~4WLT@tz$9&C8jX>7>LsTb0wN2mcu==;5x9D&6_f^3cfDbmZxCL^;` zyR0oWs=*nWVsYv_19D+B$F{6{`H(eg&|36F7_#Rf7SRP8;}HE&R0yFzAW*j$k+MrB z3J@D#z>g-NUBr295|?z&Tdw|+rC?%%T2G|q@!8H+J@T%Vh-^_`vG^9hx7IH@K6i+h zNF4oQmn-yfM6Y9GT5DVK{t#iek;c~%4SC`8Gx9F7sxQ$4sq*|9mY^@*Q^DREF;mvUOsR_6d}F8EyWo?B(&>(+PKu znQWW4f*^nB{hLkn(~uLy*{@?%{knNuJL3`}u^{g32!=W1qnSUmzhp1;epBR-UorOj z6FXtt0ns}OV=mTU@_(y%_IW98-&5rUykhiC<6ztc$BpaqGOTGN@TOEg>`HxfWc!N0 zu5&h(mUM55Ul|9fjm#?=%45RyUh{^ZOr#lL-RT(L3%zH>&T}@D4lW4>!XP`hfbY%d*t%6MX-xHCZ z`buGE6H6<1GZiztzh>L9@8fiS6GwWyHQMAy)Mn?i48BKn;Lensm%3e&phwkOqDig z=h7z}u~TBT%JnLljZ5Sr(HI`1Cnk*?#Cct!Bcd|SV+x7jg#`^Y1)La-{v~#tX%|e> zq)V7yks@t`+L6}9$%*(70JW`Y_;G?!!#3ERgU9l>v??1dYx|HzR8bN>KD(Lz5 z?X2K`_D2i5c-fm+Iy=}qxVii#t#tlxqRLj4O$7{L6n^#@z$G*F4%QlcRM914R$NlX z1R9zs8w<%|hsc9dTX{3IJR9_HFv<9L z?lY#B1BzYvLD-)qU`PaoP}k2{LRQqHtrw#xQ;K)fo?*Ge~YyJJH^8P@#Wi5&MyHi^%*kVS=ksVqeIZeYcAdevhjKiW*!*g^St`&MG?~PMO0qbplSw z+i(Bm{bTYxgrRIvs5{5UZ^B=%E?aik3BzU|lQS{rwjKA%5$fe^Na4YG%Gh8sG?+)f z_!trVL2xN!=NSCG7&ale*Zg6AzH3s^I0-^^_fgxO}R-TvWs zpRQEnwY5xgC@@=0BqkgXUFa)YrB`iYh>FamW2AJU&s8M8d|p9)$`&3K2!4_`2x2^ zOqggfGy6*UQ=hxP&}mxQC>>wlhzzAhsa%cOL1qqY^=)zr*GSZIYM7Qw*H4r*m&nW> zNPKqGe+IeSbAMf22USnU{~Z_PU-#&LZO8wudQ{x(?Tw6W|K&Leiv3go$9Z2WVa->BtaD?X6z$nJ6%wA=XNT&c(7qpDt2KFqbP0uL>Dy=yM64JhMZA$mn;xf zO{2;sZD0kQ4`a7w1<0vC%`?{5XROgL$Qa`wuEe8|sF9LpFC4Uh$a&H@oY-h#OFDHeX%+-*Bse!i+$baa#R~o& zl@p^BjCus|Kzvn(yo!?og^zh2`%Q1-@pyj#(I;EuRFnzoC$lA??BqkGcZ8Bg+6IXW zE^b)T((WlJb(hsvTKQPaY{rPa{4i{z0#SP_!hG8AE{RmW1kzKZIQ!9D9Wg!t>kvH> zvO!xG)94t6Fk2SG=zz<0a>Qlj5Z!JC>T4PMC?5mZKfhu{hhFbJzQ?o zd%1&bY^fAPwgW=C!q+n9bFgrTfsgz>gszNef5B$=4SZal?0Xf`vRdgoApYXEpQJxYK3| zpO}$_z$fem7wh?!b6GZHkbqB3%Q5vHukALHbzR%hRcY@j(8D}yI>EsAA8O}Z>q77} z(8ACE?ZW?C0`33)HU2M7VXl^qCx!*4e?NKlcLe-EhIUMCCj~)mRs$`c=PvKg7=; zG6htf%*@y~O$ROT&0o&s-1y#b?{b44PVSF<)$-3ZgMtuQ#*q`ktb{Bxg`e5ob;!-N zwMPJmqKZf$zplik8mVmVoTe7njTUm4z-MRGC7Rraq&5y~2SR0rT6K9FG+IbfO|t^~ zScv?A%M7Z;S<`adHHf-he@w2O8hNm0Z4VFEmYc0z^eY=|ltme#K%rme{FR%WFt!x| zbRE@?FlwvyJLp269FmnozkimxT`K@{fqeBkf#g_q5G>fKlR!uv@V1R+=G2P}LA0&B zz+Jr3DpHjPj-t68ndF|B5WZ-g{Lwmj)>_lRYmD++{Pe>_7_q8R$?ytTuPP!X1gP!E zQ$w^E4e7vgPRZy-+-gja}%dKPGATnRV_$Uc1Aj@KfLJw`?8neKk*rXpV1chONZSPqwTX>sfmN-_{C4HJx4$4A z`FBRaFCaBi7|3*5Sr5cCr!FNqRXsV|^h+ImUB?)R^+d-1PRrbG5SfiPnALVrQ}sQbG&>%((Ri@|JxI!RzX`jrx_(dsm z+2gtU0UBQs{mr00Zui~iz+>BOjargf#-mW@gOaL*JOKdkCQMBkQC9WP1Y<*o`oM3I za2Y`Xsqtqm16EgN%3rDnFK#Hsb8%rYcd zsUOl;@{D+LlUx&}&6XPjF;4M>R=AY5fi{GxF}3)pGCC!Sif$H{xQ6ZMb8@ny#l?WJ zbv4V46**QjY*j8vaH(z+A4vGS{T^iBc!LzKq zF|t5Rd;|0&8fPW}Sl_c>?N*FnRJ;?8fI$oG4%(8D zqH#hjCXF%TXPOddGk?$k0g+Rc`BlkXSiStD4S%BWMi4+XV-{BdPV@ohsW!$%RIDmP z!^?ze7=_!Iy(#j^;6$PoYZpapuQcoACr)QmfP+rFkO4RJ?i6m3Zt*K6Wd`vs>C16% z>TO31RYqg#tZ4Y_6Vk8trMW^|!UDu(a6T;zCst|c*E*fsoBEdb&2hY4&Nq#b4PN(^$9U$Y9U4VrPwD`UxoG9lZt?HR&XnaU@axZBl`BA%Ur|f z^YHY!M6pW>0ws8Iw02|WFQOZKo06?sVFszLMFU@*Y15Q0L-I6KC=;jRi6^@mH5D#c z!Do1cF8c230hA40qQE~TL%eOQk?j;Jng`3zQ(sb1C=Rh#d?QMApqI*oYqkoVBbYjD z-zb16r7JY;pZt%1JgljGj=M26TzC5cxb0`yxY#01zU2j@EVc`qqUy1U`t2?$<@Ev% zBH2EA=DyP5rrcWKIyf=_m%=}@N0#(TvIAC%t2T1Lt-nlVHx*ZxHpb-C71bxf&FnX` z@iT}Zn)1|q02AkmIJ1JapWpDMu@Y*6uARBUx%a~?Q2CJF$s}3km(NJW#%%rYqKBwZ zW)8Z3jGy`S7DF$reG+kHD6eMOTF4mw2}@rRUPhoHSKtm;?Hye0V##-Cta(cU9IacI z9zWL(`tyjf`kUjZp{|rxEp;@^X(hb8q0s{_+uLQGpob)S6{;(Ub5RlNhQh;PuIR;c zIU0s1YVh$yJa#aT-g~@pA$xOT*?Y?>*S0Ki_DMtl;L6au4?+J%@w@ zark<4ST3x|3C}+hWVEQlpj|?f0pXK?ZFZbsRhc&g13R|Rg)KNZ4oFwv2 zA2*|Zo6}!PsYX~edC<4>%XzdoL)3&l_5PS%fc) zBTy2$-vQNH6a%!ad2s!6qyiJ9jIKrnUrR2W=#V@hL?-UX-RS(!E4Ny)-r}JLH zSdJUGuD1-(>!Ud>U*+!<@0hv_Q0kku{&d3|+;{Nq9(u@UXt=~2@PAe6+*Iw1gPFlV z;$ZGnJlGUVqT-TORPc7yJNLZ;=xL(pStQ=2|8%{w?t*LLfXeU6$W%-PEHiv7RvN-? zbOy|~Sd`)Zp`Xlx3#p-{FijPe$~Sz+L|@_z-9iw_v#oTep$_%UAulS}E&Os<>ny_U35rmt(%uMEA>i;{}}fg?`A7U~-Lr z{DVatb`(r10Sl6n{4JjL@AS?8OMfl~vh@FlJ-VoaJqZ1B{VxD4RozY%Ume4r5rX3@ z7B!8ZaHYJ#NWwRpT6G;1MCpb=2x|KE0?hPTG%Sv8Bah&c^O%6*-M7DYtJsSZ!E7|xxNWI>d0!})ug?wY&6$;Dl=WFMvBf8 zGbyO1(zKadR12&qxY=2OizT6AV{Nvjx+^Z_ZK??9^@pLrOS@Y zNZQhkqk)imG|m)A&YUrgLt$ioIHtasZdIDlp0;D1AVgRHiJ%%+y@A96I&PYCMSyXq zFyiCX6$+UVcFYe7_-XsID7v1$dPA7Hn2W)vu<4H6-xzx)7Y@Cv4p|V6+#Kc{bsZ{C zaXDCUkmB3N>Gm0Pu_poKBoUv+JES8?H?zKOIKtAcGuHx+0f3&^_Rf8rP97hsFEe{C zvE|;W7BV6bivlqwL31H9jx;%V4i0>eRy`#h;TU%`Kw%8 zN76T(KqYOAVkO!2o)9iHQuD-;Cm6e0sAiZ+&(X zg+8?f1}3kHGhi3I6szu6`b=}F+TGBI$+X1jvozvpQUD)f{sHR_c)V0QaNc&3*@Z8^ zniL~uAv&r$&CI9JyHCWwM%B~0u|kKtN~JudJ@UNZ=nqR1fk*M^&#i`RhW>*zMVwa> zAKs(IoLiH7xoMyhL`8{cYGiiR1wfbY{#%tu&~gHLBP8v%;dJRY-`b{VYvFXm+witv zy`hIoJQ`R^Y+CA-9h)LAW2rEFIxKln)%KZH35O8refYfIqLW{uc#J0;-sp8I%lc%E zpEN_pr%xTRh>&o=!n(I`xK^U@eJwYzVlk$5G-uK7Zbz>O7y{MF94hrE7oCE63ZO?I zdT|1YKW_+@_Lnn0EPl1-L0<4`IO7vD$l?L=_k!}Bl4CRk&lX&ZcW+KzGmm04Se#=x zN&CoR-of6DI^3)7Ap~5PpQ+I*_r_4|#r;QXHDSbpL|>H#dCyJ_aH9JL$RY30C5rp7 zJC;M!JF;PsU=WEP`Sltrf6{Gv4CzsydxFs%2k+wZPWTMsP8;R)14Zcm{s-{nX^ zQoi1^YzchuYt`NUCuTGX2xim+p^Y(rOUC)PGyoLbDK5du$qk%1l&{QG!CG0861F>@fJ4Qh$ysM{(HZLkmsW z>;$fT1ob=|aujZsreXC$M7GhDp>8A{xD0t2!Ih~a=u)r6f#5?*)W-C;=19ul!fB1RGzMbWd73fj$&4-G0*qu z27yv*(m5(ICQf;y5?uFDjZb~|{*@YGq-2dE-vxX&#@G`ToP$l<7n-W5d{ioHn0eib z^(=?fem#8Rln9+{pcFkSo8^#q1e=IMQ^lLl3WwmFsn~NZGVRaOm<>ia{8b&;kGGB} ziZJ>MQB*+9s2Q74?d6tQW?CtvR=`#$lmOCqJwk@tJExGgP|=i9zNzaJk>+yciF!Cs zecztzd>DQGn&Qn(fG!`K-c*}17hCMa!;*8h^AdO7@O*n zBk2%|igFzH_W*1D^~r|0xX7AAu;A{#>gvMjaJ}`b(PhiT&&a$HoS4QD3RT)Flt2L{ zZDn~HmJF3XDDXI#kIkG zL3oQ2BVq;m5S$L_Pw@w@#b|%xAQ3Sb2D)QX=AbPpL_`>Zc+H_X-;AVZf zLrhu#GJ0g?!-00*=-PzwP#$3A*urFfQZ;34+LSEQ2i!r%#X~YK5}amwe4tTf1`DGOS|v5V z(_nh0S4!`fC(Vxv2yO3B+ z{c-bd*Le~|-<`()48N}>i`Kq0Yt+QCv7HgDK{Pi=-38ZvVSdU{b|4=xu=~Kf!ksc> zg4p?C?fZT$*a9+Ite-bhMW5ck@~flO%qwxZtUt&`YCLh=Y3xY6E{@pAGpu+*+G);Y zO2R!QIHfH4IYkPjSljCo9}vhBl|8la<(9nMxqqkonb+1=*&zm={W;6uLu==>)p{*b z9Eh-X7hJq?v(5-_&!IO7N#Jq)_K&VP+>53T0%YUJiST#BQSSe2IQkdu8}xv>Wp$7z z-+v+7sUT!~6J+a%P9PVfBLYKw2Awj`BXlg$TL49}SdmKF`XDqNx@@cwX>_;rOC|DS zMV3kUyzo4eSe?b)S<2F40Kwi$|1jow+rpr)TUk8SSmYw^H zWsOVr5B+4NzIxYvl&S#LZX7DM_ijmS^pH$7{OtXgv4{)KHRuBoG}^&COUYkk#6*;^ zhuuzSoBTss2}a1b3!d&#GrQULR@ZqrcekEH&p9NKr@3SI z)%D?X*0^}72giAC_|mYP$3_VM8g)=*?t0gO5bu+}MZEv-iUROYCPAvo{9j(X@A}`H zT=hy;im)&+l-j<1U5suFfxwr_q9&@+OJ zP=2T9`;Fi3OY6(aJdphxVh?#wY}Y<#ZkUV*lDI3H#Ky#eW$8f)x_c>4GUZlms%i6* zZ)>Br|6vf!jQ~+JJSy#A&wThepea_sc`m1+QgJ>6RU>;=0PliN-lSTXdRMK>5e67g zsTYIJalKU>4Lekmh`m(OR2w@xv^f?rjhyatpav?8K}(Zge#AuAsAHUmdU=)zkGcVBA@8@GJQ7!*ZT=fnH1D0p5ZL5(;S zuo#lL=N{%gJx-A4nK7z5By-z;!y03nWu?Z4aT~M8_6zk<(|SBtZ2jJLsWO*bh3EJ+ zzvSwiEUzY&e2FbpN;UI?r`x`r)a`&iYJNzFC?!mhd1;rpDiTeN)0-_w_bDSL;IyZ(nEY*tz}p8db+t!w}ikw8|`mNduE-JZ}>E)!wB@$A(x`VMalp4BO`$ z|5G^x7PXJdFYotLfFK2FEgB@(9#n{oqO zEWiXH=2r*3c(BNy8=0_u2Ep539HNDGi^h+7!G#+|RrMMa& z?w&u7#a}8St)QCmceTX&akv_pqdV!%ndcMiE7}Y*K>p#Cq*FKWSCt&Wt@se6wo*jm zq(hY7<%3@Xzq?=N3j_uj+-Xi+`?c2WOB*3kca1pISJbJcY`(A6>C zkvipg5R|}ZQZ!(&S)^4>bSjs?;0jYMbrOUcQ)riu*l;suLNcZ8dIO^#y9EZ5e;&Xi z-zK?#r|3D;euw>t?3y4`W>vnns*SgVg<|WV zCN@G6BJk1+%rj(LtnrYMkza3D%qfeRR9%_60T}_8@$9;(ZuCozj zZmS)QkZmFl%Qs)Zb}bc=h@G`b>gn6 zI5RAy9Jh^~*Q2KB%*$TdQvzghc-eS{0#yOG;+%=^6}Iz{!WSPV!v9Tp@Ig1ZwEVW1 z0U2(ZMCMSgMXfRSls>*{(U<=m1&Jkufc1jH$EL=tE`ASE_`XP~IP}6^nm9R8Bx_`a zeG_%y$(61OH74q{Z=}H`&b5Jctb!(oP%~FI@yplnbcK5`g958Xa^vXi?B@{Y8SGPU zok2Qw!f{iGP))lby1+)<1LS)=wI8iSsWL-j#bIFZ|*q7^eJ`QXe7JvKUTfpe9p zZ9wau986kFQbnlHAb`#c5|c$ZDx=(K(GlHB6-9wzLJQ+G!JI3(N`L=43+p%`!baCFGjzS-7h^-efd#v}B<}g`LN}RK%c7O>1j=*PEj8@S zC-PyarLr(WH+B1Zk8|r<{}{y(%Y54P_;RsXUxl}X6CMw#MJAiK+ti?oCn*Ad(b_DI zd$CeegkT-3sL>xB?#r3P2V|;?O9q(y{l)FGEdXusNDAAY3$Tp_*sGm8_oporibgOm zYuN1c#@e`z9W+c*H4AWS=q|n$B9YqSR2lm%QT; zc5tYO&8d=l)n^d@@V=?*_C+4S$sikZ(5w(Wht)3>YrZyI4DvqmzM0_G(KGyW&RWfDXo8=FWLtviK4!gHthvq2 zo8OD~+(+NrJocxy0|L|kqD!oF#^Nm zuJeZq!k1kSR!vu5w2 zQ(SY>+D+-Ot2G%Y+WImDdP=_V337aj?n#A4x)L0bSUB<-7k*AF!V|~?_Gv;Dv-KQn z34I%EXRoYQ+ebp~vF5yayU}mT%styFM~=ykSzc+AvJz!D8^eh-n0g&75lA)W z>s>Q4i-OADA!wCfMo=8(w`cJs6O>t- z>^e$|7)=aM;SH!HFx!oK8+vjJmsbhXt54DI+V&MNg=@5>cdv~j=&NB;BRG{^I`ghQ z;hob-Hgcp*Mj^{*VW6EjNfENs&hH{?^l|d0oi|zO@xn8rK54);Imw`TG(9F1lF@G1Cx5YQp>{j{36_y`_MjzxCy=2U%5RnyyLGgIc&j}A>Y|Yb$}LxK zDrOp6A`(6RbbNP$={v~+phWHr@2d1$#N?at&3JK$z9qoo- z>OF{Io+jc_qwF6Fe#TH~=^16KDcQNZYZ}6do@R9QXGLeYZIjTsX9oyOo-L7_;m90$ zsq)^2UdPfpkTyS4W?k5y)X;#A&~}?_O+|$lakaGMz)M)ZPPlTXvZkdFzire`HhxUS zLtN$1X4fCmCR5=9cy@U5k417ns#D8Rf?nIP}L^s&IDEeVgD zBt~tF$B+-*g7WLQ3mtyeI5lPCH|C(4#GQzJ0BjM~E`>;}^PFncq011wPtE0vb_=;- zh^P1))i>S4+J>2^@gfy=eZ4+1Klzs)=nb;Rdu>R9e^u3w?83(7mwQCtn1S0tJ^*i& z%S0WJbd6i9LFgLpfD=e$74=ZY?8meh9KAVp_nHmUyoJt^>6QYne=o_Zy`U4PeUA{V z6@d+)3ayuOeJn>(t_bO(D?s*_|(4B}#d$)UK|eDP1oM^Y>IoB@c- zcj`)88WWpyv^K&By`kUW*bRqZ*NQd|!{BC@l$xM}80&*7Y|8VL)t27Kgw`9jxa4VA zsVb&1D!g%l%P)lmlkTwb9s>Mfd0Y5C@N9=Pa1C{n!@FvT)|L8U8Q^^4OGr6KPzjV* z+%HtMR1f&UMH|qUo=1Ax5W$4m9n`mOc672x_=5I_jfLZ6u`-v8QlZNA7oEnhy`f|x z;|C13>k4lzSt9cj)Gx@*>cjP=`(JZLa@hFf2a0GRGXq;36Cw=;2cOJx^2YO?(z$x8 z$=a%$+wY?Z={7v5`DNy#6dOC+nR4}N}GM9j8p{(kN->}9+;5OdC!Y;fX*gT)gR)?EC6}(RiAtEqpVs^Yy>r?Km z)kEzMR7y3gT$O_~#3!%t^NpsxDu0__SoemuAJ2zV04Kexf>WCE=S^C%ERvjHvk&|U zK^fglbV2M+{VlPPox1p|-SDQ)XjjUSX=s*KS8!piaN2S@V$qhEEn25*n1ejEOHz33 zDwGmZ{ix0&&P%1$AF&Kypl)}D=(kTENq?e@(zyFr;5URH6zAS;U9gHc9 z1r-D)zlB9AV&x}IZ+R99K|M%LVP`K+qDMj(UAm60BW4-IhIC8!2Bq)m^o>62(O*(9 zhziT%NLTJ4Xl+UNcTTfK{`AxCqr>}WN5}vc-8zmODpGeaWrJT;7YgcPTajWYPe$8T zw}!!zb0x%%noEOzXV5%2qBmp?%PwH?wm&q8@2XZ3jk&l5`y3yQ%)GbUh`Zn)aca)M zc{L@(xFrgPrV5#+Y({kQ9!-b8%{f{-TYC>(x!%02t4u~9W+0qh_@7Q^BUJhtu|(4= zWGpx)b@WEeht@r2+}N1o%(R<5kw%(c9_sCX7Clpy?vQL=KUyp~fu4=HXmC$$J7j53Y?lrEPu+dEUn<@4{#{i`t znzl?em9q%oIxNiNN|#BUNT!9Tk>xv8-oDaiA8d=z-ZxaVq%oz~Q{qgPDyQ1wE0%!A zUC|hLE(u!U!%yA`P{Sfktd{v_>%`^pm4Z-sH|Wk;<`OQ7PVnXWB5#0GiYG1S*En7I ztPi@jTi|X-N34tNCXVh#kR4*{EyEyWwOBM(4ufyM>bboJkEuCs{q1y&Th7?m>Rmkf z-ccZyeVjGfDnsn5Y^9Orm5;M_;#>4&_d@BGU5cFMy#jvmyg&7PraT(YQ4OXa9b(7qs%4K$3362=#P5bquP zZzF>K!#Sq3y{j3>LF9i&$cRU%(;^ukP;m4`lMR_$0YC+kKWl6BTS7@+P$$PQ;onYK zjZD570x(szn63d#Q!SW;@sZARQz;h1&TjdU)E{#u!bh@3h7pFAwNss<*%{3Y!$k(P zEQtdVb5Av{#a+ti!yQFQ58^H2Ua3HMkUKQunp;&|sD7?1^q6{#Mq+8zylmG@HYKHN zvbT#G3@-PqJ~!-^3PY*zfLNpf#cPIj%vGxf^Q`Lhy-Rg+d%P#o$Fl&=_A?@V1yJdgy{q1vGr^iw3_d=Q zT-$?q2vO`WSu)zR~Ark0x=Bv z@{^^`Up^rGjcD?LbG>?*l|2UNcqlbYl|fBlvZMfHPOcklJ;4hPXXjHc$IG+wW}R^{ z)oETBB0gvK2mh<4BgrEhEI}Zd?cb__{zHb5JV-*O=H+N+`oA!Y^rje)hJ;YU_8kgZ zpaS=i3MeCJF$P7LskhuSAHt#^1{3{==)M63G9@!PLsc%GK+yAN{YZ zXR@8*vLQy;jfKNi7hp;VWkgen6J?tBfRedwjsZz#HSp_eLyWSK7AHY)NI)qWYVqRJ z_m2bQ+vvLoD;C42gN+i8x^j;j7w^2^<2UoWpXBzrhh5zi{nohDYR9hKOP?ibIkL(& zY_&9M`>L-qR|CJRan6|6HmX*yYEz9SgR6crnK*i+8^;7zCCFD3_sSoA2vYZ9Sil&} zq3)T$SceAn)tzNS4ck%;A|w{|DX+2~x9SSyv$mx4<(Z#4V}BgCZateTo4|DD06F0i zj5#vrQWNIKsp2%LZXj6O4VJKL*S8{MpG~Fd+ArS) zv;ZtUpc10$p!8C85j$zSH;%2>f%ZCQR#ni{qQ7_0U#QEm{R|f(o~5rut&2a%?0v@v zeCCAl?q~ankUgYP=hvyW{vgF4-mM>&R$rZkrYi{H;1dfBpF-PDI4*-*?+fVVHW;jY z^Lu>-Q>6L1;1hOAGsYG3!X@YEd3nM-X+%3<6gFHlV3ao;G+~rDtU7u}!Nspia0n>J z9CfOr9jqVO;TVfas*i;&K5{TwqK4eaV385Qzn74kSPx@A z0D+uw^qG~)FJ#ZE-p@Ok(n>-b$dkES9sxTiepCT(_bT@`FNZk8aB zNd{2le^K%>{id4Ny^t@3QdwgxWn4H8z1T=eV`hg-a<`2F&NcK6Q{&93A_R`DHw2*! zp+YnULbPRn8ZI15b*FPM9!8k8Nlh(U&N^_#<>?iD4_u7BuUbVD#b)tw%9D-IGxIUZdh{JDN&dtv9H^M?ZXJtORgk=eNg*CXWwq%qF?i z%HtVc9ZOZ1&>q#d>WwEUF>6j|?{27hz#D->+FOKK-Txx)d>oc~TI?)hnbJ%46+s?t z5Lc9I$c}a&7^FcH!FsuDSI7NYL;~SO;Cy$=V!N0x>zoT;_}wgw!QXbb9siLzZlWWe z#nw4edX+H_t+ROgQ?TQR5wK!$ZBD+82&fpzRS18G zjtf~+3}~r2*J!-FqY;1ddDJ_$ztI>(!N?q^upTa$w1P|!7RCu_kr6B}VUm8R1{B9w zCwf#DXmhj2Od~{oWPRl^8_m78oS4KbBuL}gw6hioaZEKLQ%~ZcjG|Oj@rMH>tK@>D z3fu@;<7KTNQ?Z@4vR35)CFDJE>9BO1-#ge;naSzrbO@*-!vWz^OXG|+=0E6A0QCp# zXCH3oqK8>kJDW$dFy?nyqDszMgS<&q&7SF9xyO`$Fr@PSAI6F{I-pa)~o9>S+v8Ilo)n(F|YvaBTI4L1DuQJgW5@MljUE%}X(K zowJRw`*}D=CL5rh!GeZH!Y_mS!CA?gx3Q+42%Jayv5I4}9rmMs)+7AZBk4N_Ml;KJ z7Yp(qe)#je3XKfPkW30fW3YqOxo%6M!t&F?#U_ItGvZ79x;%=Rak=_ z`h$F@zZOwFcYiTBe0U>!+Yq5DZmzTXoVfX|`uP(EfQ*G#ddzerj;&p-!41iJnY1mI z-q6QY5;C4`nW`(ik9OT)uy8XvB9@J*fcv|)urX4=^e)3gH^X`hnbzPT`ytgtn5%-= z=BaR$f*5a=y+Z3$^tFi_qT79kGV57wR!(K+!x|}PCkOUPLd6-f+PzO!pZ1Zcx3r!H zt8aJNOALlVKpQI=RrrS;<-; zG_3-OQ17R#n}IAzy*(^5vZUEs4`vtob(9=QYESgR0fr!k=OFsa;{gWeCe-f6akti^ zw8^XMZvKnzE3J`BDOE@Z`n@aDYWiQj)+QT4OWWc1>tCy{Oa#69L+O^vIJ<8?*tQ{0 z`DDBTB$Sr#jwki*xjZ?s41BJCkP{F-h6hguunRzP{=q;H>wgD6TIVI55Q782tI+*{?|Niyk>DLvE5ab1dO<8Tv|HIll2FbQ{S;MDJ+14rBwr$(C zZQHhO+tw-D#wpvbukP*cx8Lq~`#$~S%ZQA~jLg_S*4lHgImaAxj7Nc?2NxHpyCnTr z0F|HHPFOZ7b!{96e)Z@EleTRp=zf~;y=aA8`@OQ70k`*AT-MP*h3LvM)g-#%yI~t1 z`;n3zR!~Os$zuH3qQBz;Ipbmtz}va?S-e$=3GsSL_BKX!sfg! z$(UVn8XUS__XQL1TvEPu!XiX!w}UNEe5m0#+E8xN?k##`eHVA3(I{}oiM^mn0OdwX zHH*e@Z^BT9CdKrc&lK}>RVhD5bRPBklj1PC8YJSan$7n9Bb$};8qt@dgF+*DQ6O{*eKMAG0p%hjMw8CtY!U;DB z^NyD5MO2TC_t%9U$j!>kN?YB%?AO6{n0K&MfQ904qCaPu#Vua&WTRicNm8W#WYi?G zkv^j{?2(nZiwn1r3OH9N{WHB!1ioHv91wDx_g+Q*4VPGn3&M##6;o=|7 zd1`_LDW|nrd0g6Og2)a5?!lbSzxC$(SI>2?ZIhw&TvZ9l|#!Snvu$z=G7F zz6mn&9-LgmX@#8jLb|5niBh~Bn3)L|<=RBF*hs>{gWib3X+8fW>180~-YJ~W>mDgM zSh~sXbKGv*jqCo5`|NfIIGLpj4w>H2xQ^M0;7ss9Q@12Xaie4^M+z^Wi1AQlfrux{ zO+j2i7Q{I|Wlo*Car0NuG(Y4j@q`+A31`$AHd}`gIB&?*NgKh>?#0z%Bh-i0-+&#! z$L7tHkV)3ksN?S?y};8+k5g#$y z45KPruVzL~Zl*?UE>3L&Un%-f{Y!ZX9jc?X+MZ%Q9xB3ynPMCj+@Nhek*>l$g{6%^ zrgq%%PTCBW$xAsxxs$oDjemJFjqXjU%ydi*#Ku$CHzi@yf-Ol|iH)R;OW3*?*FyO# zDN?iXcoOlNDSWxK%R+dLF^jzmSER&H+=op(rU*v|cF*kIL+|VKYZu~+Qzxd{hsz?S z^N9yoBQ$K{qEU!x02$yM1DCfyw(|-CKOm_CyCXDzL*D}N+(=NAW~dJO89CDI&dfkO zN&_WduY?_7p+&fMt|Q)ToZc?Ey!3b1K2c>xx%PK|Z1zLE630uhu3f}Dn>m34!uyzj zle7b3!RvvOv}M7hqv2_6_J#5w9E=5v?!ffN1#_5&1K~pxd7glH!tWkBa5I19u#D>c zDUj5i`|}d+k%)?7myFXKSk`ql<2pR-mk;JBf0pkYxMpWABcD;2oL5XNu!@lAhA9(F zz1AORSgH%DH5zLTnKe2?q!CIaP)v0$8fi23< zWwop$vJa7+4aU_FXkydSGzQwGRC(gk?Ef6FfStc2RW-6$RF+lf+`if|bG{jDgLHnW z(b<90Uas8~GR@Jj3;|hXHU50L7=+x(3IF=5H>R?2l|QaS_Hv+`pe%P%XDAe(lj7uj7@rb-`cmi z9hpy*aMXAd;JL0*-M7DapR_!0n`-|tgjH60fai{#zbmH3=JxAvBv8LxD6|~(#}Ao* zY_^H~?>OQLX6{CRiGu%!RQUgMI7v}T;oIKGOW>yjbA&INBk~PkAn+iv;)1W~kAm52 zxxpBI83B6miUh3oE@GUnbIz?@`YFd#d<<0qR zZ_h12+92d$LFaMr!z9ZSWM;R=vaAPBy|?VdXpP#Izzvk{EIaM+z>JO~q@kZQVVeEZ z)@&U5T1Z`3yB4}oD(c@tux{GP<+B`vGjvC-(dj0x=0zGm#M$L5uk%&+#lg3;tcFaw znl%sPTiGtBqq%5jqG7P~OrgBg$XYwD^`)MpQ#2-zB>3qt>*r*iVOqw=;vNxH^qH9+ zee))#={4VRd}#Q3KUc<0;1U;1CC76KFA9pzil_qp|Pd`9H7T zn@Ef4&Or2!VFxj-r6dD-KoV}NJDud$q~Xmj^T zqZuTdL}hsLyJc#BNz-EPxTzPri5U^nSkXnQzPY8#=k%Llk-+yjNwS_Y(FpZ!!Vo{IlGfmIf6nz$!W56#1O`W2R5Dvsu9?d1mjXOqU zT9F}m=V>BUlhZ}2$IM4{P71WxasOUJ5~xgDJ8f#sH2^}j=t^FpbgQrQ-;gtNuVgpX zq63)PvDftu%8Qs-Zk2%t76I97N>B^#%l#ux#&R;6d7aXh55I##FOF34rvyUXXMj2E z+>YReX#!NJRr-#Aq!5gq#4w7BKDL*?x8pb5W_54_+J-fVun9{Xl=~yfL$*#9Z&R%N zOU97Zga7FQoM>z;(&h1iLkeE!@gE?io~U8rYcoK|Vlb{0v&9fNF90jgy>k*r@6vQy z!Q5r&EnWfCE}a;k!Eax42$-sw9)bj9sNn%)SJZ)mFs&*(RgiT%;Sr{R=FRW3giv}WTtm0e2 zJcq+{TAG8&>)BIG&JTp&i1CNbbw|ojBb#f6ht+!R*esmOcIR`+b(2~2Pm!?BaV2U& z8j#s-Ryfz3H0_`p^Sptp#Mcp>y^mP4p)hc3hZpfw+3?N;6jE?h>o7V-LfHoVwl#_7 zAPF^C3=_LV5pHG2?a|7OLGXdX#|&6g;wJ-`PnOH-6iDQnaIXXu9Ou61Z~e}ZLd34* z7+NHauEctWKJll=zFW~KjtIqHST%VOGfhK6*&LFh&`MH)b&zA0_s7S4HfWp22~a@| zuS~0w1*hyFwn|J4E1C?@uFwKNla3PhV1-Nj55$>y8{Za+WXm4AV$^B(Ai)Ez z(HTISF>BS+mAlM(xc1m`9>=q^!nPvPzrOTU1cTs01$j=sv3PP?YCvb9+2ha!O}Uf$ z)`1{LsRhl1z&_#E`|b->^YDG{qMS26G!TS9XB--usK9I4xjK6_ZUVj2eDdkG(~0_h z5!Xtz97bFkYEAwqHRWbSTc=Lh_9k7w898HYny^T9 z#Ghg(^s0(6J%Y!Hh-r5N;(Yv1+dvN`aR)Rv;$*2w8HX<(J?G^J4M9cvYM2P__$Kh; zzgbk}Mz;|Vj6G>C2Nz|B&IFKapq1X^zY5`&!1^LB>>|aZaTiE_$WzetY>z7BaDo;t z>LVtMfO*~30L@0*e)LB}wTQj3Jz}X42Ui^HB=uBFDcMn=bN2lnmc2$Z7+uO+BEQ7Z zlU`kcM;Md#ip=U=VI6k7l09`3_ z-*3`L-dwhvK1#o0lU}y6z`BHLtx40)>0p}1vg6tD{uzn4-XNTOs4CcQ`p}9+2xlVt z%c)E6*C8?>!ye;LDDVQkQK;h6$LX)ky-+^x%l6HkK+Q4X zqER>+m2?P{SSbO1=|0W_Bz@I~Q7Ki%()QcZXYdms~DxPupK^Z&*J@ZfN`j-HC7V z{}9$M-4`Zvr-*7aXV+F)F42}ClKEV))Vs@Y*JPk?!tjA*o}ZqfaaK&4hgAyK?T$9M zuU(vDR|YDTZ!j$_uWpj%a*NUi{_@*A@wYlF&d9nF>lm)21_p9|1;t1%;jIN(W-cyq z$_S2DRU_b{nNgmN&sQ-px*c?NlzQeJ`EyZfvIO~@pV8lHg{pSaj%i&9PS}d7 zyjCW+4)as7@3*_=Rm_g>!iluHd0WkC=3!~{Ww}CfRXanwIv$Cl!uSa~Q{>Ye?&La> zsny!C%w2F*Z?H5l>^{8N@EZ{Se0v6Aes6Yh)Gs8iPyzT?M^)T&_0MYm0{gokTQXi$ z32X(c#l2hN%(2D9j1s=7y}RD+Nd~Ek1BD@MlT4HiLX##=le3Fz19Y0Ni}|{s&f?hX zK!bO4D+aeGt-W+PK>CKEyQOTC6QzBA z27XRvP!GUm8|~6z2arU zmx{rVya8dqeNEwv+%-Lai%y}6YmY53QmHsWyl@JP9MDZT8E!?Gq2(aSif34YA$lvl z3R-wy6B~8l{h`4v(B8}>ThB+$(E6d$EdN@DiR|EOg@5X+vPUfY~Q?oN4 z-{|HU{G{Y20kP|lXm}y2%X!++6Vz-H1 zvzH>?>6E*p``Q6`M2W0F;^%bcqx(_h*&zpl z(7>9hA%>L{!)|6XI!g+drHmP3{0+EOc%_?EO(#~!jguJ#qz9_Q^%mt0=!pg^q1rPu z0SR=yu~P=iO@O>u_=AOTvo1qi_qbX?>J{LC*U`MYb~Z-;)2P#ucn%_~I$c#}XB^r+ z3kcaT=PRB!p@Okrb8$m*0W9io)!H6n1$Tb)Nj9R-6()7;iZf|)|j zT#2KGeKiUf*{A%WAhP$+l*Wc7#6Hy+V}-)tJcFJlQmB$>S$tL<`g;02 zF`Lxr_>I`RwEkyysYt8Z#?~rJ2Q=KUsYKrZka3 z^fr!h02Kn+M$#0>owlVyl94*1HFu;-Gp>!oCrZ~wVkZkRt9I0uUU%fL`Qk(RFg2F0 zEvELau!efZj~gm`oy@xR7U6`NCC_vQedGr4&eQ`IpqE`rD8HUN9c29XKS;ydp_vz* zP28#&olc-eY%+IGIG$@mO17IQ8hzP9u+qOf#(k(B3xvB-#Ls{I+8#oz!(gTD_J0z@ zQ4jv5F$_;V{@hEyXJMn><^&wpgc_m9bpzr&oF5}rmrj(qBke)90y^HyKHe)`-KAQX z#s$fW8S!Y1bVdQMF+2~+X@!oXl_UZ?S};T}d@#G**Q?b>vc*q`@{vg54M-EIz}ofG z3w++9HP}YA9W3+DP4TpR5+*$$LdT2ZfD-$XE5-{jtEKa0O0LMao_{T=7#!z*# zktZ|R*ZcvER(UrP?dPpJZ!{qG+IYUn7d{&sB74YFrL>0}?t%oZvp_KnO(bnhSD!v`in)Z_ArUQDAc zG@MQWZ|~EHFUcMJ(-8exokWne0Q6flYw%+t@E&dlc+dn3!LMK_2bHMLrIPgXcRcSW ze0(gXn+{NOYwFt>_H#ah?hxf$ZwMaUTN(ZmJa#A>V51eQlWxX4Ger+NvpB*?*v&Y| zp81VH9K37@Ko&lf-GR>FP8g^tvZxW;{Xs;GD1eTDKG43fAiq3{gbm)A z<^5d4e?$<0ek5q^+E~ze{B8g-4c+Pt7rcK|%8cCV3h&+n=$3x?H#=pPMv%7JZ|H#! z{-06;ntxIK{Ci69f7_1*#Y+99nj548PVei(+vy9LfJe=4y-|xVs9Y+D_#~wO6E%6i zGLO)f4hg%H7s=F4ODCv8Q**YcqV(~3^9r(q$;H1-xsX7Ubhj#*A!6jIi`?nJJiTzy zBHh(soZt(VRith4rxD4KrhJdDzZhi@#y-l?jxe>S7yl>Jvjd zXk@MZ2saQVFT)Nq-E^6=IlAT{9DKyg=eA){3u=xN_nwgbwgTT)O+82FrOl9r@NIbl zxWhl-b&;e|dDN~P@F>nU-P%YI13JS0jxB`GN$c%)$QB-0o*9gzG+-vyr)C)(JbkY{ z3DIhN9Q$zy4#xJmNaR=)Ip?pmtM+Yj3iLbes{DTc&uQ1cBC-6JHU3Z6-7Ezyg?U*x zt`;D5aU@b)TvA}6^=mo4L0C9HaeyHC2m*%AphNk5yfQJk-JEAg&l^6hK6IRSfKSqq zE-QJnGXG|VuE}gJlc)2|_ve=j4qrM>6SUC_LTwG{{@Pm&^GhXslT}VVjo`eD7r|yn zV@iQ(tceO3Sbw@fbGc0aY*F>%@$GhpxAIAeRVSz$2UM{9>^wG;3lz&s)^?+6^%BuZxo+T33S!!wmDW%I!SLgCRLTOMD+2#B2Dr|xCYR~yhqTD0;Btjs_Yv>#oYe$u+{oeG4`Vk$~$ zFt=2F3*yrvK?RkSee-wlPok44iGJ^sO0fje)hkx>#*HDgjE*1L3lC=@*u>|NSY=Iw zT|(ZXpn6gTdN|&|xX5U!66z4FU`H&gBgAD?ZrzBDebi9dEMz(PsG0JZf>4Sz+A2kol^ix*8XZ27|sPi@K4Z9}$_4x*em&1E658C;nOMIEa_@NtqcAJZ9D>M}=` zs2Uwly>+pwIqAgGHw(dR0+t)92pbyGQn^n57LT`-_*jSsa%VWE2)hV+X2h55iC0x* z2h4xc?`%VZ4egs*736deI(Es*ZYP~OPE4vfmgU~Rg?HycRzs*xY^c{(7Ju>Y7X6~L z?iR>E2*WW5WNit(!yXW_+!!GiU)jW8$``y$$@V#8;Ovbp!NL3Zkp(?A1OMvj2{Dho zC0gtOdxCcOhGx@hh_I+8N} zXT9qdkG#h*vT?gleN|gYxY-b(=Wk|MQ4dkl{dXNx{Ex5=-T&gj^_TmCu%4Nvll{Nb zCat8nWWFC=UJkulg0j6UD`~37S);@1`jWheNn- zf5JN_qk}lu-)5G9)>vWZ@tY!#nVHG|fk?KVdIe&y@$%G4P1(QAfOB@L{(#qWaIqzk zAd5VhptxdvwWYDr1%6;JS0x&hp#CIVHZaLKm?;gaVr!^^Pv^=&)js4-GR_BE%q5ggccTUfHf`u2IAfA`Axsa4+0f#=({vMy90dxTax(~ zJWcf1_u6Uw<0I=|mHhu5iWZjUQ(wC>6odza6vY2N^jnOQ#ju|fs zb*x1#Tm)=w$iR6m2RlaqLqn+Yqj%4^wz^p|SL7I~sayT_Y366C^wZRYKV(KM32Vc) z+lB|vllSHR+sE0Jj?Ir1-|?RqiIVrVW+F}un?bEnSD?qH6}+o!_nfqQ10vLOp@2Z0HOk?i_K=v#10=HYj9CLwzGkcxhW2{IRIoB zZ`Y~4l=RzV4NlAwSg|S(Ubsypw!T3|enlH0&Ksso4~gbY<1lqLg$dE=PLP?I(5U37 zWkDZ^lN6$MY4DF5-jkxp%E(WnpJZ0UM1^sB6zRN^s)Eibo`Fj2R0*jr(c-LwP?o;Z z1VZQ~RhyD!^Ob3;c_?i*y$5mhv|TT>d^}*`w6VvcjiR;v5(Kp+w`JwGtBQ- z6R#l&Yue_IH~PESb}iFd2+@0JB%fk_v3&Df$#TeR2Ebl!zed{ja_mNFNDsT}3ImTi z-Cj5shXgxuwFzZLwui~I%r5&<%7#GQ&>Zg}6+`w}Qu1j88@s}n$8I3BQB`?4aG7f6 zv*)p_cuS->vc~NnftC&(bl^_AMk`OV7mpgnZR-G@Ctx(L{tA@@k-B`1-Y|b7!rC83tkNzA@GwP#gqUm zOS*YO>`ClJ%8$Szbn6qC+%)x?yQje7T9dj{4<#7b_ta!JrVK{Z9wdppJ@ZNROU5Kz zog`>oi|Ja-TIruQ;FdV2etg9}N48}li<_GXINK+W6_nLRpAb$2Y0L{MBcwKa8czy`7f=;Rit8& zVeu&u()yo9R0H&d2BVb8z$rIH#F4U2FZ=ui1liICK`3u z=m{Zmo4y@oHkFseG%kAT`FRIxz@{a-l{BLcUxv~50%mkp0-t#kFSjQm8!pi}g$pe{ z^7n{8u)t=U$#<5}0rOAk_rIDd`RgqE+j{x`?Y5kxboMRxi1ej}YZqjjI)mZRVqEb zc`eGQoRN0^tzG+(b=T43FtthY_5MlXoA4aHtJsayW5i}RKz`WxZqI46%4z*qUOx0( z=^aAC7=n6e*`<2Gyh^PWoUNnKi$+f{npc*w7LLNgxW<{#F?y%(>Ui42$$cT}j*}(< z69dDL`P{<`Yz39oFly+`+?6^}Y)ox3e2C`nRA?L&7<-pMghwuLBXtyjWE#8or|PE* zh(x~SJsX?cD7)j{dAv~y({4yk-WxwX6EhD}%4DS0c=4P)ZCKkwhaD*7R3s@0wf71nTwl`!wA3(4GleO&%w{ZRm&Y|kN z#!m`rs8o?x(nxIeTC7juQbJJ@gi9LKhw3=}UCHL3f(#`;=(*TTHkGM;h@NFWeG{8N zF1=&;!>*GLv`iVoaX9jjvLvP0Et@0SxQ4DVE|&0JgOx}i(^&Q_jGR@1jlNY4i3nL> zZk;W5B5Q>R*gYffDTpY42MeU=w~$mR-N^wbLZMzApFnW+Covn*dAPCS%LKwen(?Y@ z7`{?me_-S*wE(Z`I($a4OMITmI=dFtQES%i8bw?B5waRJMDeeLT|Q*Vgj`0-iq=5G z9}KQB?&7LRH%sFvSeiKYC9FTu2QRoN}2=ygOp2as8$QzSkg>K zmiPTzpN{Qj44%G~gI=O_^hgvc16T1E+w^?FMANp|bGC(LjZsp^C$0*Qs7b~le908_ z4CG_XcSP!N%D-cn-1rEI-U-^J8u{_e)|0FDtgGC3 z^jK{T=J9l@WOZ))i#d3>jY1jmG)&ScR+p@(M4+iXPN}(5w0m@2jW+19^3wX}Bg_pm zt8L?Lm1)w`OV_k7ShnEqy})VmQ?BX7xc4?;Uj26|(wlMv4gtoh_A<=T*K%@Nyk1XPws zE<9ykc1RV{Ta4iEclx~A^!p|5bOXh7r*E6u)meR|7Y+*^k39j|EDkh?-D8h zWL%#mKmHeTbPnJ+1nQqZ+z~=Vw`xmE%rEM@;|E8?d(BBXN#A;2*#NjVyM4O@`Ybnm zxNAWq$R)|H#h|pfIZsm~GyNkrhyaAB!)9}|*S=_e_p!=IA}Be&nu2r0JPa?{)pt{3 zcMll{LHWL&iU<=FnaJq`;;rw;@D80$TPgH&ss=U5p_7Sk^Axf-e^XL0-ic>LJOyP5 zP##GyuB<+%~tw1VWTV6FF7_#kPtkg?BeRvl=?vgH3SyZoQnRgvHRZ6{8PUF8$%#)Q^?x}UA z5E2fj0G!$3lgdd+m{oW7Nh|l`7AP({DzcxtP$n82=^oN%3F;Fwp&d2{NHU?x0$f9i ztms@QEs}jDg6rs$&WnvmMV;&h>LKjvFio_A;!3}Gfd$^aR4{pw1%lA(7@#~P91MFo zuAfH_1D1P}?_Ao9NrWH7xO+#c#H<<4+bV12tPNYSEHwHB^_3k2#$%(sZzsgryGJtd zI!S8-_}irxjGXtxr(VN7GxpQ_CJTv~7R{Px6x{ijBcB7U927)B(N$Rn#tMmDQ%-U` znrRnYi6y}{L$Qc|BFJ0GlkOLA(hbAe0)-t2{*Go)Y&tEbhM`Lo`4vsxiftiKI>-*Z z%vUCi&aC)(=7Y3=PZ^^KOi?F(X)Rm(%i_Qq<76hQFVhe~xSm2w3c|lMnGqVQqlViS zfRVmZ^ySBs1;6b&CH&-6ktP*{v#tqKI$Vc8+0YB%%1|xdq)<;)jKyOkkjw91`^1Y7 zMM1GAjK;YLA~h8x)D(0VM7be7tp`P2hDW|O$4z*ni_*O4<+^@cnH>F<&jIWtj& zEr6_O{0vKU3x{mE*TOlEc>OjLQqr8TDQW#*@a#>Zk#*kQQr=>Gk;&&V5is~NLGM6wf-ENWL! zyFc8;A&s@ofNco_xzkQ4WC`Z)sDr(hk=lNMl-0oD-j0C^^=;0*<6#yVlTb+Zam}r9 zLnZJC6lf+DRT#gw9!IO=41xzcJ(!O*4=bfzm5aq?kmS83EQp=DfY|XM*Ck6jr;$nc z5f3Hn1)g#X{C?K*eGN)=2GqQjjSD62D~ck!H8Fz)*Il@?6NAmCzf!h^Fqr!pz!~M} zVMix0qbHZ)$f*e7zAz^0oe&>cq9-8+Goa4WLm0x4n-yoaVWR=m^KA}@7iZN^7_c`s zL)9V+mI(L7d#u+_k(UOjDM9YKz~K?u3Oxzm6{sYBJ^F-L6VGs0if7QG4}y{_WQ2u5#kwh*S{Vf|CL7IZl&9*;d(kgT9mZ zn5{oQuQgaRD#$EPeg(!g>_}nA14@!vz zDL+&9FQ>Y)($_J&=-KhgcbApPNKdUD9SCntDlB?Xhq}{t_!X^enP;o)-&=B`fk#4n z(NmDJN*{Qf7R+%$VYsoGq@LR`7wDpres!sS#512*;)Fh$iwgAGBP#PiT7p%}%`U;i z91u0Dw89ubW#7Z3&K+>U!|zRcDR@q|I7gmFUcjUGCiKNlPjhEe-5@$D!|#iv5^le4}flfD)5AqOOk3 z6H_}b^j6|oo%v|O8Ku$Sx}}mZ6u}m$oeqj8$rq2NMAcu*{|Nr&9RTYowZJrw{JaLW z^;<4G_(Wj|z9_Ik9l>g9uPT$?yfGp%scq~RnR(k=3p@=%t&7if&GfWR&6AbZF5XMG z$>a!Izs#W&_*=1}5Q{?i!Trqf^%YCpuDon2p=BAj3jkkR+dV^f=fS*pP>q{y2=p}}y#^7TVTLNeQ?Z1utUN7OeL4TKO8_@rhZ2YUinE#V({Fj!=zvGUo;Hrw> zYHT!6Fi%)i0lYv>b3xq3*w+&VTdY@6`g2`k?N?T7g&OJ2 zYeS6YMzN{PT2dL89vPQ!-8Lu5k33ghegMK~J*?X-cb6ScnGVxj<33YaAvhgh1V5Nd zl^{}vKrtTIr2~v$?@w+re(gE0nToC_8xe#4YM;b2sJKK6%lZ^7u}ZrU&?61nm72s@ ze>?%b2azB#64~Y^xMa4r&Jf!mB*Sm96TZD{WTVwB9ARU2VqvkiR#f$o_6UTRFXc$_ z>Q60@U7g!nUEiABTwmO%l1*}1pjHtr6VZ6eg}0)kD$v5AXLnj=nj0<6vX|mO#~Nd` zZk!Hf59WMr(_-9@rBYuhe3-QtL^^C~ZfR_8ab|ha-dWD9;6;8VxoRva zlh_SMhh{ZZB_r6R6%sPX4qF!}YusgZR?o{rLzmiz>d$75Piz@ys={A&iDroPlJ*&% zEQAh9>Q-XNBvzr%7E`EQpV^~Ipk<$bElwTeHx$L`-g4CB@DkO_&W?sn2aU`cj`ix@ znWd%?ZuthaNFA~=?&NgY5NyPVi-W`Zo6`nbNXa&89ymis{|xuH8Xb@J;$w|ctH^Xf zmaShK*5)!Owp%CK|L`V`467mU~X z;27sKv?&dBG>I-{q%=D*_v)e0&r>8BI%k)BiT6=)JEvXSEFpg!nht_icn?NO-Xzg= ziW;a>qI{!aCVP;Qbq}ult8d)ZWZkPB4O(V|!SKt(ytNm0$%IUkHObmyxDf#)Y891F zv)Awjd%phImf)0LP@c~;F`ziBphRAno=*fheAi6D&(xgWmoLs*dKXGPI*rW+L0Y*? zNKQDvBmvtc>`_i^)Sk9rOl#eQK+cIzqOew{u<(P^QtEO2mnP3P{gB=mQb34Z?6+0V zTG?(a&=jq;vg$?gL!kgwNHO7(5tnf}+ljcJhDzd}(%Xg`Ou4Hz$JI#ymvKcX_wK7D zR8v*I2*Z2)y|yiqCnVK|zL_2(dAm)nS)yKD!A7do#oh(|!44=$!x>12 zb3Zt4-Lqw#D!%y<8%kj;`&3YS#3w(1Y{7@M;iHY^|F~kT7lc`xW8iT`y4XgSSl+&o z*TpPjSuS5oZxBHANF3Na^__6RZ$u4Ho@kMbksP%M>&$E=T2=-a2{T@esW@T8z0Z(*?3F8WoJj5r$CLR+jymmEqUoznNEIRWygQs1S{0b-x;C$EZwg2)@Q z{#AK@msxbW^cNbpwqML1A_Rr8slmWAk`+Hq?W3Yij*#i3Kim#t6E zZrrJt{Qjnn_+i^{2=uVhIEMSSlbb(#_WZv7I{K;G(cVd?9LbkZ=^r7Co?57HyGl}S+@2}f&(#iIzRSEByS$0AB~}T?jTpEy_%)9elD+; z;UFbXHA+plIZo3QB_{8voP)e`6!sS}fNE;TykWd6uf1=>133XiXeueKC?!TVEKN0N z@-n>x_#iob71nO3u=F9$&S((ZY%6ZS8?T zhLH+d(I}%Imh0k3Bv;wZy>-`8r``&MLUb}0r@W-w zkvtH-1AvfgCA3X9^N5{O&22cJUC?BbG1Tl$#Yok3RU1)Xy-Jr>$isL-XzNE&2UB`- z)rG6s*0EWPFgOJqSwOXx9a}`Oo{Au{aGTq#(m+oy$REcPJ^kz<%_F`#oO9;(9s9!I zL+ae^#Ff3Y3H$AO<5W1AZRs|*aIec`&;vzT7phA(CI?WITu+;l8-MldFuLd4JoSoj zD^-Q)stqoplYXjRy4`4NBj}x)C?|5&#qG?}X=GVNe07BUlX|CH&OA3!wn~6(+wV`E zoF)QCRFj8Doi)&6-5mVjLCGcS``5wJk?Vr;sdoR7Qe6TeXBf1a=IBVmlr9mG;ekZjVV9f~vxXy7N1HCtqaem{5kQIlJ}`3O;GY=H(&Kd1Dz zG#?FiUll#UnSrYscxMV-=NL}ZE|WM&9mg!v9m!TMtv?5AG7Z`Gsoc_L7*kz&%NzNI z-7lA`hqCP|+HeAc=O1Olc8n&|9wT10@iuz_z>JGG9dPW@^$G9BUULX1kbrX+U|}b6 zGPAImd{LYzy8|TGqja2@{n-Snb0`(BnpP+}?Ec~~J@^Cr2jC2X$@_^v$)xb~;FJOv``cc}#~b&go}cd)t;F7rtS40zCS9o<_tsqKrPhjEMF#>op~^9*ec zUtC%;x;cX9v;}f_8BXcB6SDLP?&isW^z0(S;#WKp@vOfFCa>Dfy#FmBy)UE>Q5i=cy$2R$DgqKZ3?C<7Z zW}j5v``Jr#-(hk$gx^y22sLIN<0c}X&cB1-cflJ~)L6Qrh?u_CPRG=PByz`TOILHwXxb00_1)NY(+= zNB_J2N9Ox|;oyPg$H9BP;z#~_X68hv<40`%#QpsOJ}v_;4+%qCe3oBaT;KZe;ur}< z9it6{Nntu(Bva|N$hBCf4XV%Vj}{wWDY_7&B(A02EP6My$X{5$Qk%ol9B(tz4D)E zQBv%rI3OKT(6p5ad$Y2|huaUACa~Em1qk(a3ev__+Z5@6RCY;ogs-j9s9Z2=&mTDA zodhU?hjb7rSX zlDLS>m4OM`W_|YQlGhadCOnHCQAm1j5NlG#=GJFV`ITl;JpzA zUez-!0tVLcr3RnJ50;g(gm@e&dvdJ#MxD2@##U7j{O1?{!kH?6Q#gV$xZjAdDEMTNhWb0F^Z(aj+I`v<@@=D1UUjnw5JmnDzEAAlh|l&Kr` zbqGx}P#M#Sm$jeTpTimNpA4VyQExPzqfLRge>)9y_4?}Id@n!jKN9@E@8cf^rZjdo z4m6fFCi;2?7BmLm;+!-NX2y;*fPe4h_dkAoU*qrB|BU+be*gYIUWiZM!O>pN!0|t3 z1cbjo+t|A)IedqJxQ)HuzsqA+DV@oG^VdG5F)9;nMTB^P1*L3+kveD8fhpC6^om1! z<{xDNiOR&re!%YB9Y-$o;e1a-{b?;>5ub-3eVJ|8JimOp$ljc++2-;7nJOHwM|~&v zVYp_#HBr6FNh~O}u zu@+r?$V5<5UC81#95%dJ{^yZ*1VG;+%#?F%W*M^|G>nhU3Jr&v*6|k0nsvPWLbem4 zB){NDDGx7HHGzC7{-9V?nMy=nVa=K!%qVz^s(XZXCe~uCu9W@0yeC)9u-QBf*qY75 zrs=1E4d5@b-{z04#D~!bOJF;Ybel6-tOJpAnTj27P7A&4@G3vg=wE4fL_k5ps)kx7 zv9j~&iElkKLK!66`9af>>8W??aj-Sx?BKJq2(^-Cfz?C{=-X!r3N4_xM!39M`*2rZ zxoI54#!`C?QHSjk`b<#glOQqV<3~|aTWmE_xAf2^?L=&=nGW*JERWmri)KFby+fP@~D%nN>Q1ImvDEcY4|c>Q@cAZP{09s2*I$l2v9h>lxS?d4>fQyLoRXN zW~jFcKRJy5Mcjw zmN5Qr;!4oW!NA_k%FJ5tJFNZ<+=z<(?wrse1%Clz3Bw^@*Si?R21RLv#NyTy*!kJ* zRzo32&<>e(aVBCQMukD*^oG!9)0s2Y=Zbl(c^-NC%(XnFsQh?a!9O2Dy&Yp`t1I~b zNPEZNN*8Tyv}4=oq+{E*Z5tiiw%sv1wr$%>918)s z7hkfFQJ#*qTpPaR+T~rY=v|T-bKq*4>)V%3wqAmUbP^dM1lc!bc#Q}qc+?@;iH8hu zl4j`xkLUz?n>;l6LHo$SiBP>?wXmef(c}BE1=wxB2Ibkm*@7U{3OW6fXFAG28rCk> zw7L=gG_^y+21X<44G86!dfxQEjWUHIif79&-clvP~ zTe9Z6EyL?L;`^6#i}oJ%Ap&?wm_K?++CRPoJ39dL&u`q|Ury~`y(M`83&7y2g7t({ zlwg|v3v;WfFk~GEXm6m8z6&l}y@n}keST{7{uYRr@<$wH3PPW9|(3tyVqXvXe8Kt$_3ZE2O=7%`{l}9G;6m)Bnwq(W)H&p|);k6p! z+S?*>15}`u(b&RrIz9eWI<#~aoCn4L!mh~W(7{gE)w>m@qnOM~pSyW$6>K-ILYq<> z^w2WsQqV^5Vo*l#XeBI8HPrYA4V!L}Az@n(Iww2)V5n2P@J3`sbZX3MnC6j~m!R6_ z?-|hygEr?XKq!@ejPL)y#HI`g43_^s`CF)>qqHiD%45kjf=S{BQb;2~m7a*Xto&q_ zLCVg&#co~#$Lu0OAcM1v-V{btngDsMcWk70Jr`#0dL~;qbno1E> zp>x*yu;%!1zTW)te#hoVazLcmZEmoSbkf7;PmMEj8gzG)8f=(^PM47JBaNKSR zqYoSHbZ=@ST1Y%&p8vM$-G_TAv4!zJny_F>59QZ>>jN`>U}k= z!`JXL_v>2Ys#`c43KPV)8FUwAty+(BS23r4^^iu#rEQ-k#3H-xgg zu*Gkw25WVbbqDO_O*ShcH~x$CIi=1arBk5(vT|Fkx{yE^n1nHwnuNTAM~JkB>D$ug zTGeXsl2a%Sn3lbbr5gvP9!g9FoRzj|O%`rgT08l_Zt6^1+sq;3UO4jKr=Y|cGVk+X zRWVhcr(ArYg}uN{AnRKu=&!1-2oDdQ+Ohjt2C!_5tydcgv(j~!i0K#wC3>F{T%4Lo zRh){gPT|(&b-Kj0S}G-C^Bw~t+JlW#&r(llZ&3jo9fL$I0%9NbsEPL_mQD1qM&bF% z#ttwyYkQV`Wl0ejY)R^5x|G9U)YlFZ^37MuG}RS&MX#!x&I{Z@@z^lIor`;P%+ac!tis&F@E?1%e7~XuWb=nz)DGR;67}CQ z>~G_Qi|dDEysiyWm}m5n;VR_CL3>|vMV)I=H&38IFLU#D%tiwVALU8~`iMOyZFe5`eG&>DA_!wHmX+Nl_r@vGfW)3O9p#k1 zpm0a{x_?PKw7*A7y7z;YH|~L*5=Zg7_*}grTtCS5h z@tfx(X^zJ+Qj8(&C`b`Dk5i0y5io#_)C0ia4jO&ku4;k)?Rk+ZSaD9d~K_p zS_l$xV7{lg76hy~iY79;w>ydw9qmLdECd(MSNz}Z=6*#D4+Q``u>0d>mVers_$!zF z*LmLmAyOvE%g6ypfW3wM6+sn*qr~WnQb&f$5s`u2a>F6wUKAyDDy*$AP(G5frMVwL zUKNIF4Fix6bnnk5Ivx&o&))XYdazD{lpZwKM8Y8neJR&*wnb~nkXe@UE++RGXS|bI zYTHzDe<)Z5K=$8nt!a#SQUGH;?>MwwYOkNL`*J!LhsPAY%$M=tHE_}h-uN=2Xap?d zYdckEGUT?gj))Ia-Y(B&dPnQ>`^VXq%OAt{*5G_Yj`&GQ7>b;G?s>XMoi(Blcu8lQ zt1PT{qxJnWo?m|aioSE8gGQkd>SUa{&%+92QRHRQ9(v`gd4k0mU>6J-289eA3A~7* z6vI-df1K93Y#&b35jC91;?92sEl99dPJPy>vP(2zE?YFxtSF>?$=r}=+$7c{n~gC2 zn{-?{C3}qt;QlH97&)o`6gmHgm+_w>m{%0M@qa3UcP1K;y;CN3_VOmyCOQTZUI|^m zMMc4Fanz`CDhBF=-!ca}oV-5@Dt_!CTXIPg;8%p88=t%w7Zq}0{y zZ(uA>T#}UKA0011&C>`v>YwI*Y!J>-Sjzulrq3ycB0=6#09k@*#)C5hdhtV26dVbz z;ySZ8?U?_YRHR=>gk?~RArsgUA}P2kxG1=bz8xcw&U9}N)ZUe!8*B$ZF9rx(92|-P z_+M#8iJxWGJU|rge~g#^)HnD`ft3Ii*>9-Kzp{=0QVXm83vMVL7E-9m4;`4S9~lA` zt!}9$pcSUx`^7p}`OHy**1)+wvK=RAMRj%Mq5Zzl+vi4#??@U-h-?11m~-B@;6voN zwLPPSI8xMfWSu8=v-Kf!lf(7n>EeM8=yn?;WaHLqr^0}QnTV^hV48R?WE3Tt(};}p zNNk}#(9uzQ+RjnD)(tdjd#mTt|A)DWu7p`cwoH^<&VhORhdd?Z$OSh&$C__R4uK0< zKcpaR2C5vRc>)p})?N?flq$s1iejAb!qA{~5-^^^T$2H7$e}kyhUFo$_Zg03f=HC+d(IBVM6hsJ3z8WYvI}T}U&E@qc7iQm&ZMU^ItRAOo=ovhdPn)jp9 zv;lcyv681v)R;pL~*aKU`&5yg1YOg1)9es%~M zQqnvZVsislHrv$0NUY=B9n_DBuEEydUd4HTeWShmOJ3-B&0Dn&2u{7Ox>l#iUU65JF)(6kK_BH<1HM`;sIOYo+=ewXikpq+5V^LJ-Xba3gQyJSL3)n;r1v-H5=~ zxDF(Ng7L|u_|3p`yu$7MsRw7+B4H!MTrJ3nVROUH#Jv4hCQ-^x%2jDWyqi3ZDT&m6 z4S&i0@7eOhlLez_8Q)#N8xGC%1*djd6e^a?KV7*~o~0UQ*M{6pJW5MuZJ*)>W8VVP zMvT}h-dyK31~rSkklBa7N@p`2a5Od!y*YU;75?-T_K(^w(&~e#5ia5*2CkNg*$VBL z5{K`w6$VLsdQkS(;rPbtX*rkN1><4c96UxBSadCfyBoP5bsHgAKwvZ{^$49JqS9Ry zC0n9#J)V*HAwM@VQ`h{gaiLqdL+xzu;S_evok(1Kq?LD4fNp!hvru%U`r6elo^gtH zLM$7u#T^xgX{rC1ykSw}?{oZ4*|{`Nw|+F`EvMF6KWD8v$CeNkJ`M5w7DKEPG-77` zEoGMQ!+-JHq?y)G6N%GEbS;Th_cs4bC^FuyHfX9H)OdI9Zd>trAH3YUxPpaQS5GXF9XP>}M+My(Dyh{AU zXcH6%Mf{WkNO)fN`(- zpdm?aI}XC-kXsw`RW>$^_2v3usM1fyooEOo&n9afZNv8KjYQv7_2{=WJy!=JL5CBl zmaVFkwL^_d^%e93ZBNr*KAAyZ+zJUF(B|fg+BRg4s;Qg zlz7n`JbIju{W$-~BT_`58u1DOxMU#LG4g(Lr}NPICcYzgr6Hg6{Cde3zkc{g_=$Eu z^d)UTZ>KJ$AAY(*Lih~_&IYX8pk*oo)M?$~>4HK!0QuASKs%e~!f|8OefsHe zlkWqVJ}3us3R~nXd)GW!DRm(lY|>7<%Kad7#^Fb*%Xa$iiOX2+;e_DeLh!EcEDs*I zkvQ2r2HC-#h)%sz`*)MChphx5Vx;K|Q&Q+>l+CS{*mqX_uprYUh@xS+&i-^vPK#&R zD6|w(R_*A{<$YN9NzN&&J8h?ltyIZmcZ~fT{ND+srHK4gbJnAXb4?+F;&wo0SuAGQLzP_0K3u@vQz>0iarz;FwQ6;dp=V|FG`U=!h~$l(wQZM zZH2qRTjz`Syh|;RVMnz?H8c)?$I&-@xlWq2N8f&cn z4%WUG%5iFU%WN(dn8xUu?v`PL_JK=w`!(bpTVqF40JK4|(ar4l0u$?ON(UqVo-Wcm zvuRTDC@olmX|J9)Nfx}pcDL%!N~xwT>GsO2a?UE%=X<4&$~ZSC-b$!4T4*9wr28~1 zdDmZ*DRUQa%8Ss*+RBI^3eLexEsmNv$1Oe2qLe4?4Qsf?yt6ewfP{kP z=xD~hQJEO;wCqw|vs^7wa5(bHH*8Ug$h?M0nx<4f0%Ym1I&gy+@dv44HEs{hl(s>| zViH0EmiM}TnGaMcOH=&f-iYf$Xo3q+U>v&6|+>u zmbjHZ*zmjGD_Fti+#JRga=hg1jmqpJXN+9+_WmdU$)>9#LY=KXSn8Zfdf7O^|0z2h z0TDAU*be=$j94SRQ9g$-8D>5UW693^bBe@uG?`mH8qjlctS-^*8K={nSbdQ0gF;Sb zcK*fIPzX*J(KD`%YIJ9e>NALu72`YT1=DL()z4d_+o1D=?JQSP-~R0_p(8b?AKp)P zj8|+x%m^O=;!(fmPv5S2&cuo{TlQ(^8s`euYag+pd)x56>apBZcEqrilGU>41tIg_ zZ#mINaH*Q0UC|!Yu4-y#XT5H?FG)2mwJPq@+98@HV{Y)6jxvNL?tWkfU0~oD&l0$`JsonCN8s= zjfs+6jB)g{jQoh4C$V$550-u5wl*q>ajZqUKOw<=*!fGAj_FsM&ycpY~&b3S#>avET-+pXViG z&BgjK&1=T6F?xahD3g?(eEgVRRp_T@xuTMP$`R=ry`iAv=+)dJ9UCIqg)<#zvoyi4 zCJjNM%h~NS*~reWaJ5W%vIiq*$k3eXifyB!&FG)j0QY!kPRG~(db&(iz^W&q%a}YR z``zv+bY1+l38)l5|MB+G|CSOl{@+R@hYDD0AM}A`s-pMH^CQHD_rf(L=^eKbw*!F! z%|q$~lI!fuTKCVzY12af_=bTJH3Y)vhc8l+wqH=}f9_OV*4C!Ga9WkI+P(B?WB0Rx z415C2ZoE%)5eTj$C^rAxD<+ru!lYtb%z1|sbXR!2loE@L+3yyHB#lfd)rz;P5rmzM zLaO8%2UYE{I<#>pW0n$%bv?79!%HeGD7oLVMv75^A9qbOgOl286@=&*WHEe;O294t zqWNf>ygwPL%K8d8-?giyX*yKc)?NMDa|;>$xiaa@xQ}DMrbl{-e+xZgH`BwWA4!*i z^yhPWq4}btR72e}j1pBh!yC%emyRAOUaV(j_XA$FR85`7Ks7$-oF~E+9Od&u=v{vv zp^eS!bdzzEMeH#4Kt#Dy1^>Za_}@w}e-hJ}15kqBeXoBWyZ&z}0n@*gKJIV9Pz|V=ovqZ+i>jQVh$|l;ha^ zJJ)(?Syff_$!XQ5uZ<6o`Y`f#BQB|4v=k%L5tMs^xRJ`v)SPkgVF%ir>*R6TtmF&G zqHLnI4d|D?lujdi+63t%f$Lh=iUQk2808cMUYAR+OZ5Mxgi>T$|v_s+bSQGwaxA*ocji%+zp%6xJZNqg$`A%8#@7a zpB1|xJV4|a@CgQ(1RE`%BM{GvL1PzsBpYj@;btGXqa{tc^<#N&fG#pyJ}Lc zP6j!S8N{bm`S;ME4s+bCg&1`hO4r?iNjX*=CYw2*Vb7QI(YuCwA>!>q08=(A24D4L6I@igP1f%NS;7ft3WSB;mGtaf{Y3{nUpOcK{r^)7 zxc?BB{xP12*f=@3|E&p0ikout@~H1N&9(TdgMe#aF!Dc|aL`eU8HEj=Kg~XVBA9Jv zv}x*FjJY@5>E3DQJrh7-MFwIGF*WNxYf;aqmZ=LA4PdjXOT(W^nD`YxdAz za@n&xFVZ&*>iB`2N|vOW-<$P0WSQv~ZqRv8T+54koHznz;;S++!V6;C=965|FtR~> z!x0p9>4=dksaew~T>FmtP7hIYe(o{K*Q0!V;?(H21NJo-t6kowf;bueAl-E4Jt0T% zex?Z2%;KaXneqzkA(F95d1jH%jNceyjwT!FP4~1$u;*#C-;uuuy_E+!fvK4%>6o7+ zNDB?^Nqqj+EpW&y#FfuufNNM0jWa0=7TutvKqeiokJTy{CX&%=G(aem4@V<*A?7~v z=65X#j4L!be~*%{EFi%9iG>&RbLdFO!}7VeD&EQn*uyL>%hOt}?iULR*%$DeNu-0h zhZXW5L6~DP1L?QHTa<`Zw`UH1c}`Jb`8*yGNa!8$FL!^{(!o2Q4Fdq(%al zd@5*OTS@$$4#C$G%ZPqOOqM!oY`S5ryD_o!FihqL;{>^M9o(%s-ADsN@Ksy0xJ6Id zOa5^y2(~qgu0nw{%7{(r{8nP}Oz}vpm^2BsmlK@uw(iw}9ZjmYk)Fhtyht*np&JTm z<%1!_yKjF{&_>$s0v2l9YgH!%MDQ)eZ)UkAY^L&6Jn}nf^Ws}Hl!k3f#>nmaue2FV zl|rQLNs2ywwKA*B;x`t((<#h-2bvBwULcDSBNNo_H>a?XJ$W%QB(62+PFF#as{c-btvh&Uo&a`As))*3m$6GVhxL0+=_76>JnDbi>#U# zFI}3k9w_1_}S{lDm!F#W*eA&?uVq2SLO{Dg*hrY(?DgS zt#mXTJS(J{QYuvFVMC%fkkEdR?S9}OqrxDDK1mbiIae(=KRluTSd*I`=1SHdSW zEJaySh!~>k%)*V++Dfuc%(Nu1Q}nQLqVOikCk#+;T|Tp*=|}w#sR~H7QuGk}y0biz z96KdUBX&g4vtC-Ha^vSW$G`hM2)*HXOHk_=L`q5uxoTLdle~BQml5F3YbCNvZgPqZ zQjK%;PtO@zypE*rAg*8LyeH6K9Pl~q_ys|1^j(lqYs5l{nO6v*9AAJ>UE2DSH_wDv zY`!51ql`y9%8$(7*0!K1TK0lOb@*%i_dYbE)JAepx=OfZbf4;+xYz`Lh za=Id{&N7U)4s6^|B7!5tv#cYDt=gK#(r72qw~lEre@>tkTYg*+q_(5N8{r%KHr#m`u%#|5`EnOmH9|UQ?ur!a5n&NaFf~Sw1|s4H&EaA7L;6wNI^8R4Z=$6z ztXl2pjriQ;;@Bn*c5qLdN!mRCUIbRXOj^3O%p5u-LG~U$wrp5!_lu_?C~NbSUBOM) zCj3cx_z&H>PlOT5k+c)%_s2*-J1#O~*%7%S{xJ z@%Gl}dU3#hV5kh)ohB_X`^)qR{gQ{;p#E+kvty>)nRr<L1b z;GjPlvFXSnNtH9adIisVkOe%3I^-EutBYkeF)uCURC6&zRMcA=Y3c-nDH+v>tnGNqXA2}JuMvc`d?+EwycD_A= zf78nYArrb*vR;iKnljRwHFG|0lg6kJX!2PNEuIziD1Ndc@2B0RV14A;^JEafntdXK!fEjhNrzZ$=@gfq9$EIzRIhn$qxG9Y^83 zI;^=wuqWJ!^UtKp!3fGT6N#hijvLC2#AS3#t=aamxeSf^?>cX+cNWUxTIj=dmihaA z=(GL3HtISmk?fN|YptRlCLq)zb552)C8w;YLLD)F+j;2Ux@K!WuWl7z<&=ogb_ql>QIx8LNBnW&}98zJHNI^@V)d``~hn|+|1=6KURX9nrYA-XsR zjiZ6Y9a{xfcgHPw+jdxiR)lPGax|JK;Bf=7Bb8cb4s=c8=9!V>U;c#4#6fjP&8s!P zY4=%l6gk7UxL*&;YV6DMsuvdRw)TyC)L}ih95tmZJM}uM09)rOO|r`@ovx@*9CP7{ z4#xIpo9p%yrkNFyapLY40KgSpw_Cm2@8xxea@m(mOwM4)o|}KDhNCfttGafr71n<0 zx+u*=1HhKA8%YsrnbO}#qn^@>Gez$VZo4z8^?239L1u+;AYZdCNK->G647ycG`gju z(H82EkXFSkrY07 z51HYnQwg%wrr-+brSG~`TyL1#JInf?w_BNEC@9}!qOFCe_0r*FDgk6Cx1b+*L z%?@K-9_g;}vxR5b??1>Hc&FjsuQ|On)fuMSIo^iN4qqYcY7e`BIkI-yY0qDVs&1|} zM|f%q%SqHXb2;YF8ckBHuG!Ty9+tae8a|XHv(>>Z9R5t_n=K@f6sW`&>hqCV{}HLZ zqBh4h-bIH~ptqyOagR(Te!c}?ritz;g5?vv$^Nn+JHXRRD%rD{xop#7=#rvFpb z^{+9#fRmGfk(q&^)xY=zlN5Vp`}k2a!3u#RRDgD8Bh5RlE)5N#BoI z4*EkD8P8q&ry`^4lqtayKV;PQqfMQ@ZBz*L_3^G%ua0^2yCUc_Yq3G>_epNLY8g9o z=`r9v;Bha~Bk%+mQX_l($X5cABbx=!xwJgtR z@hY5A2Em&|3+HFuUmKpaShgAjfGL8n(7sd%nF{|(o27Rh+Tw#SWD^M;a&=)}LfFEU$&YCD-`lh+@hVlk-5DcMB z8KxuU?MSofbw7&nhOxt&1{JlYI-&W^`yjKk`|WHsZS(!S`?^m2pSP?cqxVCPgcbTf2JelptvT-Nl$NgM1?O>)j8I(|v)kEkl_g^9i)5M39C zd9vn+tiZ#Rua5H^Asf427>Pq_r~HkBuuvCP=`5Q1<6KHvaAnAp^4DspZP?SW>bn~C zD>T#lVUi1NpiJ^=ezv;2|A1UASW6XF&Mn;Udouxdi6zKff}Kn=g(Ov?f~NgW7J*31 zSitE*l}{IeNlO{_y&MMUmdU9+Nph8;-|kx5wDkvc|A<1_p;MNcN~gXG4vPclOUuM* zj43uFI2O1RoDRNXXMJvjX?dHC&nOiVcRzjH?Sl7cEpvXlIeuo$W!O~jg;er}EGNrDaN%t2HFggR}@7)uK zT<)|)gI{dRT*CQWG@S`}&7)k6U{PQbW>?N_jb7fUMz+v$U84!?b%#tkB&Df}UVKF9 z6PuPUJ=kovNS`c2otGNCG>)nq4ojw%xkmoE8VD^|gV~1Xq0#pvE?BvOyB7wYYkdt591{S5@sMz5I7}2n{^ibz@OIw7SIIh zH1fRV7O}EMNa-5xVMF9gSJ5W0%zYv>2N#Dg@*NB=4yzu_UhjA0i}eomzoivb)qz=B zB{O~k)@VsyMyJweWG88Gji;9RWt6ZDh1}3GbqQl*T-cJhF#yY2NCbbaZ5ui8>Wl>Ayl8ed9nK? z#EnsT5YK8K>d$5gNn$ck7rRxVZ2X6~>Zs;;DU{=Cq=cpn2w$)_0c*sy)zIJ;5k_%` zH4w@op6}zwtZ_X>a!NN_wrXFybPDDOO3R7CBsY;LD5pG?!gph&S}r(rZylV5SvWNE zuj(CsP%-Z&^w<)vaX+r#AotE0sHbT1fQ<0zpJ{phH2sAP^*76rMCuVI7@!5Q_eWg* zKVq8!Zsxy_ZvJ*K&WeBG471Qc6%-VJx@W#=%0{b6g%ueB2e6p4Y)k-4RnoSrqeqi{ zq(J!k@kwT~u6$pd|CRAzx?#z5fnRO=$?g*uXv0+H`k|L<*vc&rykL<<~fRW^+m>S9<6-88^b-Ja&+$m-msS$KM^SvbWTWg02) zK#Fob2lGh&eQXPyU0n>7i^0yiT&}+c#@)C{;~di>2-6&hQT>Bdt5C%6xo1ggie(CF zk}jZ@$cMo)`el-BpQ9*6_4!OIkhoGFH1v2GwG^iEh=p#Ku=lBeu}IrgtB>#O%z0^H zEb0<(MrT>h#?1@3V|+6m8?FoZo0%o2e=}kp{&LW6mAI zks7*1URUEcAv$6OE(R=xv>})oxG&!fTy8KaM6e?j7FmP7eRh=e_x+P@^s}G{KrlJ{ zV=$roLx=}pHJnV`oCI7A{!JF_9mDsVEO>Ae(gF9nx;D8lwck|8S|lnM3JOg0wAF~G zXPov|)y~)YOOVIhsNp)Gh{*X4ccyOlcD`=C%}=67C{^{rKh3D1vx+l2!=-U3etA%w zH#%I;M>ks;gA(4Vz4qqmCq)k|J;TVs-76V@zH%-)rgXW0P8VrtzS@L=y z!wNIx*AgQ&`z*T{aCwWMq9sh4Y78@oGq*GFO}H)$FWW=^zc>_0oo5bq0CGtMNbjEq z6Mwdk|48mXD3@sEGuL@#%#Za(CY|Kk%2nYtEq+XE%`oz=*>D?^9pij`19>OOl{M$y zxF5{B`+8UH!_`~<_gho5wjS`lsKbY>62}&*$Dtd<4-eOChwkS$*9-W*!0e%)L!_~ jS|_dKR$?G%w=~e28SJ_E0fnQaen)rE6SQwC&RuussVA{?Hmv zHhRLqLQeaY9Ke7ZA3x9n3{{E*YoORmj(WvB7&kfKaX+j#V#6>ZbB>X(zTjqvT49Ih zPp!RSpzihgpw0TG%^=0Q|IjklqGMaDifCIWq&2Sm99yPwtTi9IX&CONRkg zV@m6uN78_ReJ3DFgIY1{E*lYpY57Cq2((v(*mF{*pW$T9Xarx-!bSfXh?!yno<7b_ zve%QHBZ4H;G?lns${Q?`v^fF`iQmM8TO-z-}Bv5--3r-rV8d z(7gQVz+8e2C`s{=Bb;z>b^_1H)lqbuq4Ykpk{V(Q_AMpaQ)UO)#^DcgR>cu^R&#OD z_Ll;20wbA8w3K~;ktu3-jNW#VCN*OG(F(pfMxI;oCA33-(|88F-u9Qrxlq0Z1cujB zbOn4a%*Se9H!`lqL`$z2df3s(=J-!hjaMWdkz1B&$74=fxGmQ&@qPsPl%QpTUo@O# zVgN^Hh)XEqzmui=FyDVOq@3j>F#S?#)F6kF@XpaWi5xS_S=GppOOj1gX+F*HhPp%M z$Hdc<8`z_baA}PT=l_*!qX+5?E9Naw0f_4!$8^B*TrKL%s3{@aR_Kjt2X8n$j!U9E z%v9YkCuo&fuJ3Hn&XY0@&s1)pAI2CH*iO+&A!^a7K*So^Mvu%cV6l;(s#qnPz?;lH z1^yo9z-JiZgNZ@*Y)c=B~K?xq#vC#IlNf(&)g^$q5^v4P^M zSZM;0|EcwwnZYT`ttzC>Q6fy@3@!8KP!`@V*V?+(_+JPR-|g#Gb(ZlxYg~;?%Hyrh zJ~7KStt7FutH1um1E^homsSK|hqL)Vh>-vB0RKtBqm?Zk=KWBCyd&uxN_U0?sl4Wm&tU651HzAyd^CeDY~|pY5W(MSlHMU z){G|5p*SCXZf2)dJLyhs&z{q+AkhA_=Gi!Uey`!^#dGXzBMwp!DhBa8yLbZ!4q2+5 z35Jeck7RQW*tGrr(y(>+@!HpN*c1nE=Z(FoDn??5`f}(Hdu>rbUlCa`kUb zwMZW_BDHgv-prvJmxL)fBU(z##=iS!rSw@&g1EkiUcT|_8uPCR+efcs`z$u^ac5#_ zdTC);=YF$NmZ{GRH9R)V*(Inn!4x4@Rb*)q7x9yh1}0@u5}5@96WIer6i@F(#Za`2 z%NCWGF$NB?xpttXXg#+eW{T{yWPU-8&{Kw{kQ@^U)uQ=Gb6BQ3JY0yxc2&i6RC1cU zn~8SW@ITh`p6haPlFK&ObW1ylE;_O zF(TNiO4xK*EL0a7@Dg55tBQ**DOhr5tsIJb?Rcj?*pl-w6Gsjo1%p~0!j{h_x+dIv zUlR!S+qVz4O`~?G9-;MMegXHJMg6vWxD3Ny7gXwS)hF;xygS~3%(|e95qnN;p;RFAa+;zdy2n>&k!*)VnZ|>V)|lRF?ofd%-#oop|*=?s{ha@k9&^%am4mP z7UIgFF)8h8cXH=4z!S~HFt=RA+=(!I@6^D9Es0Q5YNFy2;+!Q_i9Al5J1$9V|IEH{%4_9c@g` z@C&)4@Ty2_I+_3K=QVR9XM7K~09i0GAmjVoVEFSpecy;Aozt;*hfmmK?M-AamI(Jg z6;_p0T6~|Pzg3=%vfkG`{GLz&M>+S~Tc}*6zM;u4B z1+1cdB{n)dov(3nk?{IKy?S%477{Jw7C3{LLbkO<$NT*OmojUOwlb|ny!IiJ9xQHCv-_BS@QWmZkH1^`-Idsh%6$!Ua6vO z#9JaP4Z%@hzmehX)P8~5O+_S-TZv0pG|)y2V~(~PVzv@v$pipJXEj_*Cm4C!U^EBi zv(iN_n&o^u&Wq_p*>Chv4zFLOPT*#X`G(2uwWSzipica9Y*6q+X29C08RXjGGjqLN z$9cu6*3qMr!f}EYsn3Q+hL5mf&hqKd4IcyKD|~GbKytqLz#cLj83;vZKwS>=65aMX zA`tAf_6sivOjrGcjBnY_+DRN)fyMCo_<={;dafFgni}eu`%rgc*F^1tJW#dy9AeYuAVB*ijR|0WOt?;Ja_O z@<8VtM8{makt#YMSZCx>uLpZ-h|ZLMt5;z#{np zH=F)B5&x$Xj=wDuuoP$F0GNr(JJ=eTIR0j1_%GFrNn|ZtA3dVTM?7LPY|kh8EKDG% z*@TF9L-=oqg9o_1HmI;Y@{o!*WojJ{@7#KySnWXXF}emPykVmssb0*+I2t?V>(h@* zn~qoxT_9IOQ#lb0W=C~eQV1?{kAK9%gBher&(kf7z2ra*T6kALG9{*dPoNiLIsOay zQjYs+)dNsv!~s74{BVD&G63|#P9_fjy#X7oz$4dBkLYb9CG}`=+%ph`j7cpjj#^4- z5}^!**uL8q9+?z0AabH-^cP-IRtYTJDXiG@;(Vj?#{0v|2dHH*wda7rTMnjdj@Vzv3rEegp|pRwz|(<0%_Oz^t#0AD;gpdZc99 z))@RfoSw~m`%~48B>kRbjaQ!XAR4Gn`yL%pZn1e&8XZ-JA(;+n-3+MFYH3tuqjJMu zR3*&3l8THG={Ja86N34mttlIu?O!a94_tDDN;pIoJmcgB9$7E}8R%N>bWBT|RR=8G z9@eYgOphz91^`yT0C;%$u51or{Dbf8OeKN2y`eSoct?=KEPRZQpv5e_)%oXizjX?$ zdq*AzP}m9mu`K?_MKyp<{dckdC%sEjUIoy5pz0K(3QEO|6)K7#AxUe|?|jxQFGLlv zw2vF#(h?WKiIR{BB+A)=D5)MHkK){Y{8j#uf4+xWk&I<%n(l4-HLLMqCB^6C>50k@ zirW}diRv1roD@gZT}L5jw9LfPp|WhezHQsgWzinBF|Pt=<@KhFz>lG#=te16X1|aS zCqg3`W08$zLBb?m2dw+YaiJIGH^Z=3DS|H}U!Dq)W`+A6}4h)W>}Qg z>#Qf8_A*u0b?Mct*JtaRDy`b}p}T+KXYnfHAm~g-Mmm@@7CI}rGQ!d*dWi@_4A5)N zjv_vMmg85$L~@ES6C)4$)P^M}SvnxZ5G6TGmKaej5A775D`#=8`dS)BF57DGjMb(r zr1Y!8;If@1M0J{ICo01S6a;p*?%;B|H6kyADZOmTY1}xKJK{anT>VGc5Gz`FmhozY zQG7`Ws_oH;*Ln`JJ)V#aGzMl{MmJ2$$QR{AO$E<=Hx@F3{FWd7NaC;p^NtUAc5Daa zg#HDQI7XP9P1(S-O14r3Z3W>i0loCb()6$|h?HB{g^b_msu-dk%c8WEuFHz{b$n4=cZxDz;u%w>i|X8ql$i55E6M3wz{gLi z=NFh6Y{lav2-oV7sW}S2n!{qA!Uykb*zbe=!pJY|@s9x`E4;Ek!qc8D2yiIRN6C>< z32q#w{jSD-NjLqP6K32(?tQokfQ^?|8X0!br;sdAu3$!FV|N_2#UygCSkrigX`u zE6m4UAvSLN+e%W8}h zmccg6b-&E6Yv<|Wmp5#fsC8u%3FslG&(;b0MN0``udBS>YBtZ9#MgDFeZ2Xr7a`W) zbI<6RHxnxev)Z-?#h3TS*atsFP4~uGDoql;z)GjG3$oDd) zjmxcg4qr~B5@k8z3ggNVIrAzaE`4)`};M?5@n;x%d{Ow zp-StbYlW^K6(+4^=zWw1xE#WlX4ccgmKzobR>vbetX3&cgxMSa(b_+thx0!`?l~tcUhf55VYtw4zm8w5vr0OP%r?;h>TJs_? zm_X`KL8vfd`JMk4Bk0e$PWCyrp3mV%0;&9jawD|@KvBxRQ}U*FV83ku9-2@l2=H$w z{xLxR$p)nVCY+MCHM0D>L;j!TZ(33C{r_?KJ3!hSKg>_g$AOg#gor4RU)4|}&qvl! zx2?-pQPsi$iVK8^2qZ(sRM#~8GZ9FAh$$ul2o(qp1_%rY7ZFILqmLwIAR!1!91L(2 zKV%|ULMDIqm(=N=p0dU)emsWjY`t&B{lD|a+? zT9t~#sp-ZlYaz_N5ec+~>s6-cGR<|3t+EajTb}B|Ap`Xe@?{{`*y8EoGrDFWDEd$E zN|RNz5z8yK&aFrcFiB^-$7y?oATDxG^e|LxZ_6fyiM*7fa+8L9vJSAUEhB? z4*EOU1SFYuCJs*Szx(C}<~IKpgh{jvK%WtVH{Cc2iNV zs)ib*Fna2z;Q9#5(M5L(XpCGDO!4h5UIS!0-^E3ZLX&i6B!gd;X{FVt>&+cIEC#5) zzv`9HZbr&GD-+V&>(PRieR*y1Y!gJVk%1eovcJn5eF1%qnF;p2EII=DD^;S0JQ{5T zNaXV$B|`H@CHY$-fHeF+@^GH&ga;Bp9lUbX;BtbF{UYF;uL@NdB%GI%rERoiYC0KH zt)}Gm34x>uDe0W~LvQNz%?&s;PYg2+B*$yAusMxYjFlI1>Hnha9fK@gl&s;dF55fk{3Mox>Y4Tdu^ z3Ib3N;ARhriGTvF>#lw)AL`m}7sh=)OUviypYb@wAD&jhK+jsp)xgO1um8ipMq<%C z5`cdVObA=Te-*X#qgB_z#VV+l6EM&4*Mt{trH>ulEl0SZ-V;1oDaryt_DGixMCp@B zPlk}~qFmD5dT?<3Tw9uB@S!S)TkObTWvKy+;ECQ$xsuEm22kT?QkKK*>kQMk#=g8nIPP}u^8OWF#gYXy7PqGgj}iPGF)}EoCEj1w z3GBf++utx4up&i}CiLsM%jz4wI4Nq3K;ZVI*mwqei!yJG4^(LYuny5i7Ex-&1CNDb ztME|hyqHdqf%IYPp`cy_$^KIly=ovZX23!HXx$B9x!T2bP&ss^`8fU0#h6=0BO=QP0uI z;s0qx?H`3Z{{AT;dwUyuh2P)*XYBU=C*h9R{@7W4uch4F*IZrNw7*m<`H-X3L+Fe8 zcNLvMjDjI6| z0*GwA&`<220*YdHm@sT?=F)F5y41v(TEpgrHS%k1C;)|*RaqvkdzeSyF5(;RHQ+7U6sF8o z1pO7&Swjce3=@INWy?u|1<&|nB{BoeDaAx$*oCw0qhNdjyQ$aPK}Z*E&earv?3j%( z1`n-Y{iA@gsgspq?qFs@uRV?DaDl+>Uep(t4c;OW1EE$i@k`7`{T-2-Qhw=3vYFZW zB=U+xKPmnrUMamwoSKkh6=^4Y`)^~71QC?Xe;TXokG}ekHRRvMlD4t^+g6fh4vt3u znJogNK5Zro_i3~E)&P;}7-d3|#eU(R0fG51a}W9AbN)D+W8(Td0G#n?NeRGp$=@rt z46Pr>kh{M~@$+bgW=sl|?(qg;!k=~^w8R`nhqr7}>&#G&M2yaFg21a=xW(fqs8OQy zs0R)P30-;HcH$B7yTu!Zq9al+-JVs;*~tnfOvlUJWoF?h8G~uLJfL#jdGg!k5(L6P zKiQ;({KQOePz!CC=jdbGF$=&r&2rvr=x%UIRqr~cM8I&$7HtWi6ba(B3Nn>=xtoZI^D{ra`~2SlIvTSdnau=ALO zHQT+5^Turpwx~!Wpoc)Y8~&AgJ4$AmHEzpxC(K|qd+g)7OJKQJ76(V)x`=eQ6CwJn zi`LHQ3zS%0y%}zxBMOFNkZ0VOfMXDNo#KWwd*r$M1D=mNO~4YB2;=!G_sQk)a7^}6 zBGg_D7T{3KCo%({b;5`+d3{6V(+X$*eiEZL!UN|rSU%ViekE?k5FTL8glUVeg~1w_ z+lph7jK#M|$LAF{piL=*y~EftRV_*^LddQtMLoHz31dP#qKlJIu*WG7$=QW)p`F(B zfR5Auf~Efms#5X}>0w}zwnP@p0#Zm9*9SaKpC59l0OMdD3qHdpQ^wvEqfQJ=4a(J+~LN@|*Ct!fB8@ASxjm7rUY) z$oJo8ekU22tQbFQTI)Y<-*Ejo!^l|wP7Hr=PcPZAzm$8q%!(=&ZKV&fj`9fHjp%*0KDT}85pR-27nM^Z<`-8r>Y)dzi`;1Ia{b) zbjVsOFj9A{Mra_$wuyT@^RE;GeeB~8(kt${hh^)_uTyJzP|rMrd<3nYiiYe;)1J01 zi`xI5*7F73o(%nli-{S8EQcJ3yRXV|$U8Ra>f=ip$-NuW}=H zWlQG8f>woY1$)qel`G8BrPY&*Ti<>2K!)4K0X>>PX_42&bZz6owM|EhjbkuN!wdTC z)YalSuW-oDtlGAlL6S+-C~?jx6nr0%!O$KuNaFx)Yjhif3yaRW_7w6GBxYHQrCm)t z!HPWCd+-D;6zjT!Wz*nTrrj`lFAMb8l{MX6(JT?LK!^w)UJkCGDUcVM+|^ekI}8J~ za{DTO%%E#U_O7aLr>S}t*nUs~#l+t9nqmi8X`aMd_@v*4<}1iIVy&Dyt&@>^hQs9~ z@q2t6lJUE>ZJnlQ0cm-l^qfO?)+4)dS%VrB-=RQLihxo+kZb)^Y}vw+u1o#E3G)PJ zETHO_tbQZ!O<*X2Wz54czCYRO7-2p=!x}sG{X-#jniwo z20@~;fTyPBp}*H!pD0P^Psw_4CXMo@^|lAX>brhxn!>2UQKml(b+}1yun-B{_#Pa} zYH?q0Nr{UpfZ`HzZk_TYs#pi=6l9TY+ySRF7e6^DttK3zvzHoxtQ9c zwQYAPkabPTYjbXY$U-Q#_LN5_n?|yX85=EzMoE z2ZcLa4>7CB-fGOyQ*5m-UqOuJOtVKNcXVyq%u=gH4oN-MZpOV{ElBgC!sQZ*tbveN z8R@kPVX4ld-msVkZ1~30vvqP6nOcjGH?&g^W8Yg{q+ais%@+-c_UBv+EZ|+fmw*gj zo|RxMAiGp7u+^9T1qG8LR@_2hd?S(X&mrXO;nR{Uf()E7j$T!x$+I1o{^SP-M#!`c`totL#92_?lymA z+~MFkXryB%8>qIdb_d_V5)c)DB%Z*D2VpGhKEW*YpCATpRkLAA2Vp+>?ErBs9hA_e zAa*~!eS?#W)4O@zzU0vWNL-678m`gRQ%wK@G=yvUATZnwXo`1{gN{e!d)IR+9Y7R& zuqB8dA|nAnL15(p)z3SpfDh^8UZc7NTU}~1)aR~K~ z{jI+N&3{A1a=%YLmhZg50Sm%yxzgIMx(+6z^#>RR0znaPf}kZ1II&E^oOQWf0ltzN zFz^BP3sNg6Y%DBfT>MTBNvtNtP$Yw8N0^Z&&`(z@Xzuc8oxA3Tm|W0yv_U`PLDy}Y zEzmQ16rq%`^nygoyq5HID`;1IpZ27hxIPqw>Q~O4TOAPeMOFDz@Zn$tn$<1n_DQF) zqDF>c`tjrPRYg`4&*_m$nH)NdGVp|AJ$7E!5zbOGV;e1EjKdjW5l=d^_z=RKddXX&lvjiU9Z2^m;p11E{ls+ za*oKpqMH|54w+KzGO8Btv?!jGa=RECX8v4Blz@qSzvl_BWIp!RilPgE%kdAC6GozA zKR$W=q#4LiUK3u=BghaS=X4MN!dcVUf~rNZ?K55EX4}CEMG*b8pxoo#!;56Z*$YUY zs&@c>0{JTk46ni2S%2n$ia+Ln|D(A1`xX9sxL;BE)U5j0Ftp`IBNMd6Q}!3ah}G3R zRnA3$vtR@QCLf??ClsJ(H?%eOlR#}-(Q2c4$ni2eW8>mp299=@K8wqo>&lUN6EN@M zfP~vtWDQ=w^j^Dc+hYFy_VV)WOXH43&_s*=O}aHPQwJ^n(Il}$YYw55MB}KjeK&Wj zp#ppl+UevlqP={aM4;i;FglS*=oJGa&%AF4d62HmWlhhHLdsn?uG{ExCZ#ekA=8E0YpG@3R1BmM53xAB@qbb*I-4dMDqmwB}3%o?6x!Y z@pSNM=%)@w{x`bNr3T_vrDmmO1XwXwths#kxl+C4jJDtGVuycm3RpOz-|t3k(t@T? zS*+4&QK^N^IN%li&?wbLh{;dfjU5gsPe5kC#}v=c*LW>GB#11c0A534_`*?*A758r|^&w9Qt~xy&x@aI@F1g&s$JQHfr3o z#^@X*EiaLLN;J@!Pvn@BR)%8;R(vPAG7BBFFw^K(k?H&k8v$m=tkO%>?>Jy$ZB%yf z4&12aSHTs%w5wV#C8_ctdZatPhp@;A_-TOtt?M3Ep_nRGXb3{a}NCp!c zkdibh{O9O0{JXb4A!oQ=r3gIMQI)puk=Y@5;}YhGc-u-&IdKNJ3pG(L=+U6HRN%mC z52Dz0HkU^ZM8*&6m-34J5L}@d>!Qz7GJ(f2Ld*ydq#$$<2{*U393&=E;5N`)&3-cFWf?A`f*z1;Kcl#mXL`uHU#Ba#;v9{Y$aBSB z+YGlE!&hdd5)qHt!@0`3g6t5LxWOc5B_S|gC(3kFlR4E#hIAhF(MoZS*L)zxp~4z& zl+6AhRegjQ)fYnMfkp5*)6flJO9b$t`V^?f=0cC*c@YzQ?{5^Bx@WegFO1Ib=r7Q1 zmwC+2pdP_R*ZYLd4$__=pq^+q?VN$qOJm0D=ox3ti(KWqLs0H$oq?q5KHFU<{?@j=3!u0}K1R%vHmuidf4R4P>0Wd_UPl@gV3~%4&2TB!<#dcu;OzG>4GY%ZZDQ?` z-dV_TJ!X2raqlw_(L6^Xf8}%zuiy%7YNxFlFZ67~G%kxST|=Y3>Cbv79`*|H4(qjh z-8`AMOf>7(dWkbUFJiz9{|F)9F#6kC_rJpW#MfO>?@vjq6^K7|Z2z%i z|L>XkzxQDNYfR%T3^MV*j%j|k`rdSD58~7`V^fpV`zO1HhjF75R1=G{;*ygpFSFtk zQZ;)gyT^ySlagb<%KcPNOjYR}&Mw>$nAWtIpk)>YAqGJKfzvhAGt@QG1*H4C35_+? z=KNWUWPN`Axe5J`jFZ8V8L1HPrzQk~jeOR5FUhM&*&PR8V}Oiz4YTnW%t~>hp{Ru&)ybdQo;Z zm{Q=60ZPJnbO_}tmKhFg@TkcMCi z!TI+CQK2~#u8~HqAp&V!v{@4GsNQQR8}7Vnk-0)X?-^lE?g6S%Lc^Hc^dET+Y0(q= zF!84b`)4$y+CSvn1rKnp@eOKTN6O_I1m!AtvhA+|oWPHC%Asdt5R_A_YqW`tH;AU< zqFj7__r26_+qhIdF-H0yF~&dAdH(&)N$FYZnf%A}C_}bQx{ntwJpyqJkMpZ<7|seb z2{}ZbPdvm3sSptG#sJ$7f3~<=HhJ#|KiKU&*-6v@I9&K<J3!7{`FdARQj z6c9FG9g4?%*Y#+d6~n9)OnNk624~tQlqO85@SZOXv4xjFJ48FK5qJ&CqB%dSBUjGV zjqAksA$tdO_OF+!||{ien3dlIz9$Jt)-6whlRmT-(p80+a<=WO_<7Fjj7 zH1}S4Mx$8YhKU%b1>ar^!M~u=9`^*dbm?Ipr?f^uk2Ou#G>1}!uU+25w4%81oILmv z{q_G3&smd#qRNu!O@hq0SJKs%LNp_m zmyRE-{+y+3=(TfW`mzHNqRhCyX{2m(9_`g=ZRP1?Hxtc)d)7v(&I3%*H9;Z6uT-gJ zN$BT7l4{10yBm=l7}Y3eVZuq9BgckdMIEfq{vw)Vo;@>UKH$k=j4TO@j{@8pnY#w!{p%8DJN-4eKR z{2Fm)gKk=revXdOdO!)CdMPO;jXxkLuKRf)L+x^};wyG~%#~oLp36c-1tqG4J=|PO z^V;Bi9*Q&hE@P|#21`G_HzCX*c?x0e9Iq!=-&8a>Dz^fKH&#*5t8S^j0OYmuGr;Ps zkNjc?5G&EZH2-GPdSBRSNa`f`zMUpF7-`XzogC)bi>OMU&3YTp^n^d)?ywZ?sKby7 zMh+%uFJ{x|tQ7(flr_2WAUFJFWzpd|W*=svz{_fsRq`OZVQ?^_{Q?`S?p8uepW3RA zfVFfR56eJSR7%|i>ojvginm|x8Vu)v{u{v{-3968YEwLebCkJrm$xZDOPxFPW<5_R zK9?^E+ob{%0wOLtNjtYLHsOVo;SPf+xhuxh&4Y>qa#io<}ynw3=Y1rcw(tqN+m z(OFD6_XS4ch!?30broAAsti$;IP&ONX@~JisVj1oU7z+N>KY_3vOK_JUa2c0$*-L^ zlmz7k3G~aSbH=;~IjQzw5#;u81>`JjZyfr~qA0K%oiPq_Zowu$*eiG;#}n35Ofj>_ zHU$?)7FvS$;xu{93o)6A%I_dq*VfN$8M+=nJUb^2>(&?@k}HQR;R#su&a8GtZ6J3b zS3x!wY26SmSnP=xx}=s27K(I^uv+bweiGPQ&po*-zO1322Y^>q%PHiFw20}@@ln>Lj!1XfeZfGdJR zABTA1n&Rud0;3+d0J}GUxhKXFL;9{v0U2FJE1=NP+>0og%JLh7@&!k*5<0|OPqlQI z=$z_AF_ix6DRa=RY8y2ixTL>4jjqDk$eb+VtG5OAgXH9E!qXz;JJZ`Ktx)MP7Cc53 z;t1nF=TJLj@(`%}vO=)_Zb!3*E^3?+XV$Npte8#I%g;44;GdMc&lbDR9?ib=pJ(l< z(9!Qu@?vcL10>S>-sy20)B!9}0QzbcdE=CQxQTEHh=%pQKBZRx|H$;Cl;SU?*)0x- zSpSk^h~eRuJC}WVyZBAd=yXXGd`oLeWNJg{RlFJV2T&1TN2MA&pps@)46(_(Sz;KL zw3q~>(Le(uNON*1gOdJnK76;GAJa6eCSDMsD9^6mF4R-(eh4L@(+ve4Sv@1djiYD4 z_WpR+>!ID(V1gdeW}m&Y_z?MShf6$MDXGbH8iViJ)ig+zLHaw1t|=t~u6(%8a%Q%5 zjV{rdj$-*mg!RrD<(yqpNz7{iU>81Iy3uJAPAL45jPGsz`e-E8y;SVjfj z22Ldosk(kcJd@BjrhX)+%lqTsB*Hjp_K<6mT!{fP#fbRWse7v;QS)xwH?K-)bmaue zx6i*yyG&R4L%_(5j!1*q-S`psQm>3;ICHr%vel>h9#5$ z_-$q<61AnGOk@Uy1q~c3hBWYbA?v}#qnc92$TJ#Mc04u*KRkm zwW9EmPtfr8sWY-K2LsHV&daZ%qq?Az(J1hv>;Q#cNpbzf{5Gp)&W0L5^bXRWOufBW6d@~JJ0?WIX1tEXvoAga{EtR7E zN$Z%G(H&~Q!aQavxwl1B7ym3tafpd_*xql7s#fW9NkH`{-a8vh13zTSshpFWoty-uO=EqcCYglk(O`nG@Y$ zeDpJiR*<=sp9y9j(boa}#fn8^XsiNS9FVGHpEC6mFw|Rjz{n&hz!tu_+5+p1!@CmH zJ4|v4x_@bDt#S7iDI&{Bjm_lkF<2cM(T)S?)PD7|RdglS);)(xKq{9YqqR>8=!Ykt zjA8WKN!Po$Yu#qe3xT!{riX~mVN87gUAYS&Wk7Cx`i%b{X|ROAE0N`D8ryl*|^r_NTG zMbEHn&t=g51^NomaZRF{Sn4i$bfq=J?L`YD=SxFX}*deN+Z{0QC@1IKHj5 z>c-JNK05Y{x+Br0qh14kf1(+l)i*BsOl3RF* z?tq^#b+gvD2X_tZs(9(UBhp_~RqC=)ieeaL0^y*cKDang}6- zB(PI&Tq(;h?Y^2;1?^|~N6KZ94G7&LSRy5ZFRT}Ak|unykRh)A)k@50_nopi1Ugj&-gqmcLdxBxit$Kw98kV;g$%~?C)8I z#qn0s)-y{F4A%v$>n`Rc+geHF9paZ-MkNv%%+i$jTU{z@DGbFRhey}O&6dw_#`3XmHwK8-nS^wyPGm@ zyb8a1zOnaC^z4eHi_U^ktVhJ_Q|6>-8@~Oxr*~PrMq;TWUl6+Hq^xF8SrfH|D*V%DU^;GK!`dR6}pOKB6}ysFvlz2h3aENj&62$H$I5B5rXa>pwO(%~uQ{#3Px zyt3{Q#n~132uK7r9IMHV+M!TBw|cOM$@akP_V=#gD!aI4#%FS>{v)7a`9G7>|KbCG z=c@*l7agP}nk8`#*!gDGn9 zgm)SBQd^g)o!`i;1T>_OWml6QKyQB4e+YiWt~wYS11t&AW-0R2Jx*pgOg^q(x~-3O zy?dNnec^g4;+3h1<*;C9+n|&w9$;w6H5*G;$go}4?4cZybLeki%HuRI3vw8(Cn>-V zf-~i*kS<}uA6wF@{}{WNn%&lI_%GY-(NA?YJZ?y$-O9 z9pW4X&gkM4Mb-?eVE~q+;Oj>v$GF1{?6PB>X{9oKF?E4T+Mbp9+>K2~-{DVs^TX77 zA;F-uq6Cp$=;)v_XF>9&Ztr7Ypn~^n+tS=OveLosU%B;~6O6sCs@vR4oCMJ4LMtZm zk)@3UUIbsGn3nk;g(=CG0|^o9G;mKBPx-Rz%6zjRxI?H>E;_9Wet^Kp2NnWfSnVgG zMq5Im|3nU%cNVNE=~32_nu0cql*o?C4kqFeWUA*b76HcNCa!KM+YE|oq6r$h*7HRP zHv)Ecw(`r2!kscl%Cov(W0hUFLoo1W4AORlSnq(~*o|$W%?!(l>Z(Vc5R;fQ>ahUs z!z6iRSCxTT;B(bD8{&%`^${tcsoJIuE=84r{3#WgKDVxKq}mWWARcQQ2Vfm*7l&hQ zU(f~4n1QBvWygsqL=jZ%+p>9j0iFI3A6oM@QV_mR&bQhuiBVvoW0xduN{=uIOc=OP zQ86!n3~wTV`TN$#Cc56&LE9hTPXXOpojdA!6s#8x4t_7yoR{RTzAw^HS-Ik+#R~S4 z4#S}c26rcoiV}0$L{_6|4SKAV+jFw$=6>1br3&!NbMRQg3Hk&gQmT@hYUU`dW|<}GQ^O~%UX_lSAku8MD<$Ma0Y>WgTE@T! zSd$FchAkC@G9^kI1*e769s7A*k|e3-YO}aBb!mQ;2Vs6w+jW}AS$RmDY^?S-zj}Lo z1^fej{oy_NvOVUsIDgQ@I2fHQc9OaxTVrbXBrTa8YPUzaTJlgig-dxVZR60>(VsWl z*BXm%hYE|#96r5abmH_`Jb}Oq27&${1K!df)#+=pX(j&!q34;znG7Kwcm?j~7FGd*M>XB&jxjWf;q#8q9eqTN@(cMG z*fXO+r^;5(x}D#PCf_3{@7+~8`%6iz6X6Gt`qI1@VjK&gE{YVQ1f z9Z5!*=g`Co81w;Pe<8?ucGvYGv`zDW@EN1j6jcWlUR$yY#Qu`yWQ>{@lG(Aj3mD#) zHV<@kgH&uAW^B9JMxfu@m$oM5iV_JUnJ8?Mm}WGhMF<*t`bz zv?NVv{b6-NbT_l+3yg*D;C~O2`gF?IZK<2Sxcs=o=+XA0&qj|Gr}c-)(e>*l3zyK( zf}#$jl2~NS@;N<-tPYd$RR-Y12 zRvhiY2iIi&n5g_+c;|DtnWxoG8rO?%o}GK)cLL9M9+paB0QgM9q-voe zD&zfmP^e@52IY0{$|v(s^u@e3>3pE1%-45Ho(152DMs~%)U&;SWAVX^>-Cu^;ZMd^ zogtS%3OgdTp*GUK=dQXQ5`!d%9%a%@c2Q9MtSM^cT-i3PdlE}fvmFG(#rPw3{H{M- zUQGdba0;QNV#u;R*E3Ir>DI+V=s> z=^AY{bM>9)_k3%kl1%QCbp{Xrr=A|^AG5Zsp1p&S{eJ+ph*&KPL^-&iEivX5!b)e2 zvbU?e8ZN82vVy?fK>WmLep?G7HQ*5;w$EF8R!Lk=Q-uRM^A^a0g3q64fp;y*_r=wh zZ?9o)$J-s2Ke_YT0Ly%F)i{wIGOMmNIM9Z!r-AHBnJG|`haGVxawW?(d_a$anG!UK zBf}gR>BY2la)k3XxmNLDyB})4+)ANf+*xFp%zEcRl9)<<2}OvUGi@QYww|O@&Az&l zuYH1%p=89y&|rby!Ln}XgK`K)RbT_cw}5(1%qtojX#sowq62--spig?2%|^znWO@y z%&A@<%z5p$)jlswiq*&6Jsac@uA*^Td)suG z`_P#P<`s`xAA2=h++bMqRlX(x@-)kr_J(`x_)i<^?!#5IOVYinX{6}brIzKvKt*wc zW-Xh!SoZ4FP4xGrogSzF0n!ED@3s`qmHm{+f$IGS&zUVXDmuO6R;-{K5WIg3Ke zWG!P{8s(V6ufS_^l$roH92zTxxx6i5B!S(p#1WAY4P(A3fO+n4O|U^jvyEY0zC#m8ITCmjH1u^Lj)z-FUux@CP3x9oI#%<)}ml!j*Q^AqNR?Rx^ElUIyeO_zMR1v z8`K&o>MqxG=7KgramS^hBKPGR3Q?^2l@!xapXe<&iO*9cg4ZA6=5VrU%}BCMb<0C3 zb%YfrgQ7DBsc@Kn(<=sRiUL~>nDB0%A=D+n@Uqnl_i?w}c3DFscW5tHe6oFE2e`@~ z_RtWENJqdN6;-!qCpeN6DhdN3YtQ#VVSE{ppx}arG_A{WmTQP}pG1Od1U`=sjvpIY zMT3WWS@zdV-VLf6kPpb(aVewk!H zuY}hdh@}~_$B#l?zpeyT$v_71QoR*S&dGn0oam^+R)vzP$rCo@d9`P!uP_xwmYT1w z7&C!$_q;QJC|JzMOlF3@@-?%b4fTq!Xf{xw9X20bDXG{HdiO>cgZ?%wkq9+7W}Eu? z_@2m&A1AsCB6Rcq{g@qxYr)+Bw97mc%-v8J{p1{H zTBp0^Q5AxRG80nuoA|~&E~x@Ug}#xVX3=v^;sc@H$z8T@=2x5oE-ml%c)O=7iv~9R zx9wI$AeW+^w8%V^^6}_v%H~#Zi^*)fpH{*lor9+mSQsTFpgSNSF zw(yADVZQ8>3mYfEZr682QT;NZ^?VNPG#$;7N{!&y(-Xda;;o>gBJ#O8re7Nr%fAfVDz@?cSsoPJ~>DR@ifh3dIzD)}!8GWnsKgVWQaU{NLakd1(? z?jTSu?+zdbO~$@?ef!4cncY6Tp;@4e2S|g+S7?1k%NVqT4}L?gy%)WN&YWOxJo8rg zEzULkhxYw0HUNmE^t^|l;_iHQGPj9Sxex5m*6*S>`||iezm}siu(UlcO&_-vQrUv+ zg;1{8+{>=fJF@{|6Qpn?N;{Cwb#^Q&T{5H#@QBL9h@mCvW2*~$d>4X;{IP`6wLTC+ zLHwg<8QHRAiTa|UA=ZUVV2;(NU@>VuEx4Gb6C&|i7o#l^aqw4M?&=eiQ7fEc@V~}{ ztu14OZVo=AZS!Ed`+wn>{`sX@OxS`5fWIzr_3_RnF8ak__u8AUcJv#-SzKCiJe99D*;L3_3|--)Km z*R*U@(}`{rKmKg_H~{|C*#&65$*#np;%JY;vQ>F`-}#vUJ2As}Oxj=i1X{4} zj87Y*6(dB3rJpnplklZJAk8b*O;`8cJMu-?mfpuPqfZo=t^J_71>t~3YF+vcpA$!T256e`J)+#*f*_S+`Y4t#*Ow|GR%~18M7^)KA&o-0 z(3g{YUL3_y-og`KoeMF!$#zry)hEGT83ydW5imy8F!AHfet*IC9JxZo_{Ej9(ZfRh z3jKjU0mY-*p~R;{w%@!d!7vzgDgdzR?o`kG_Itv&JcFCq_{nywhx`*7_(wh0-+dfK z8w(?A!hf4e#M;=*{-w#G@m?SAH;gu#K1pUxbxh9g1YgS=O(qscgd`e5BiR#XsT$vl z(3M~i%78JU{gU&esHxv_1ffOB{es4AlIv5K?EU@r4b|tXGg@uO<8x6=8LY@#!@!B^bh!{W}e$3Jq2%oQ7(K+VR$?P(@L5m$0c#+U36t9CMQ2qNNQrqaspl zHpmJ`->Jj^NrjP0&1l>}l~fI<>-~Z}0-M+ywB>Z@P?>lD5^wB^UNc+MEKu%mcD(k=?xFU>tv_NLx8(c6IjC-2ELm7aWn7P(b{=&_@i5kO;v4h0gD*Uo>jvr_0IW0)+teRO{{l zCsqUdDt;wY6;gYLzZ?zpr{PafRLf+2%A@pfX6B^2qMe(os`6;<`fHaHXgYies^Ub+ zi9tuU?pFd4S4U;xtwxagvNk!A5>=P=zNRizCevF*rSbiG7<)s#aeg@UGCF&e==r=e zGZbn%6wI}Laq3Kv{Hh-_6a4p)>CAR~9{xasx|01@etK^AbY&8$lK$nVP%A=icE+@M z6yx1FqqIEJ#hUSUQEy{QaMAw;XuVzldy0uE97(*f_c0VtolMF5yu@_} zG5&HyKbF_Rc+$58)dkYpezXdGXNAZ0?u&MGDCz=;}O z-kq&lsgffES5}WFal~ z9Dmp)7&L$MgbM!<===pgc$zbW?N2qMkQC(#BjW*lmyv)TzrBJf* zfFsny0aFL`pa+{CN_E;*yxv>T!WSB9D@5i^?3GhH`M<>*Jya5?E z9-A7C({p6ctjhC!$y4bm&BS|dayk;cg!h-xNz+HxmKl^Pv3gMF2{F<-0cf8|q z+;*zPB-v)GEB#Y%iCs@AaML2rtp@#}fc-vRtRX4lS?vP&P?2OtBO{CoQ_xmsKjlt8 z1**gUJyf|Rf)CkZYDRJmo2zc8 zp}?d$#2i~O$0+Ag+IpQS-xc?nAzXw8-e8PbA%(f(TfRDT?~VRidKS@qlPy2XvK?c0 z1wH$PR!N)Q>LV4DK<7Di&P1sX?qHf7$~1YlJP0_cd!iJHLXNfMN^>Pv!fTxnT%7$- zfBpL|%eeB!UHxadclXC~?;p44|A#aD4zz!{#b2bJe-RNf6#lw|`N?m6nW>~eWKQ=X zB}ZKHMTzJSrZR+#tTqe^NF)k}%`bC;F~?ks1pOdK4@HXzGWj6gb7>3J==Hx~ZrS2G zX*uF}Twl-X>U{rlg_H(0RqnD1N;8dBwMJKgIC0~t0r{MPI}df)@9go-s>`-vR)FEJ z#J_P^<7RFidE(sAy7pbi?7d6Yt!+FyWgZ^hMD-1n3SMlLlWdrF&Jyk3U;S2;#auXJ z=NDrm+HCz>_Y(pAV{NAfhb4wcMOUxBZ?~S7$+A0_R@8pU$=$inj*wi2IDZcmJsDUs zVvL@sYUGhT(5;ZuPwNMcp+;l`7aSI&{b-UixxKe0D31ZULY!x=CJp5xj)}$Q`A7p0 zzF+L;BV)uGkgBmU-BzP{vko3R%mVKiD$orD+b|dQ7ZCo6HRU{2CVF*aTqj2R6{Vwe+@e1OXPFf59T5oq{e3AMHM{k|;R z6_dA5QePjl`M+;2JD}Gz5%|-5DFlHKLH?IFLEP&2!pzkdjZMG(2CH?wvB86;|vqwjo>AN_l?+h z;jaN$ymR*aqGUq?vOGN%!-eUF#vIDG2U8OI1zz51hvlza-rI9i2m0w~bbrj{f2O(o zr;Gia&kK~S{%S9HQ{&?4^@PaIJbg79Fcb)pt*GELhvFmSBL$bOXQCYW3VA|Ij0s%f z)$|6Naq?r1CdI4^Nmy6C@ci+;xbf&ht5+g_n~{OVgXJjwlk>v#{q1e-+ZXpMYylB- zyeC=>Fyq?WI&*WfeuviDDJ&+b|sH{s14}JV|>@IDfZt!^R^@&6Zse>ScP1$kj=53uoM5LLdsBCB% z2b}pM(%d$ZVd)r`cax3B(;%TNLv~d8;93zp-lqB24U}2H;&K{gSRCuJat1U`)>uYl z&+nzgT>&eo=eHSaLZOLr_jXk2Gr>r55jahqb74$~()XLl)03wCh`lZ1Y_Y7pJsf1< zfm;FTTc(!zV$$%yGn)5%gHXCV!b}4#qR+t~@icX+ANN?LhUWHH|@{K67 z-NH{I6mko{NDv&Xfuk{%fox7%q2A>j9LKVI$CA?~p)TLx@cIX8ia{UyEV$50U>?nZ zd2OR}hH2r-cPAUy$z~Mldd|peT<$$Vcs%+{^ibGfGQ%)qZq8)sNLaB8#s)lA2m%NP z;!N`{V3~W}d{}7(C`JC4eg4Xf*o*8yi`9z35P+Oc?!IGR{8lB~HW$4h1m4c)iwxp` z`rNdYnNh6}e>H~D4_R?f%)+a_dv*)M%>9v0tt|<4_}M$1Zn<;lt@zpzc?}|@ow_4q zYEE@lmOzVS=^%Tr!~3j{ekFFF1B=cjn`a$5D}-cL(-qkaAttkQ(8x+z1Q9*GBdLsF z4TXCvI-4=DU98u4PIbHEa!jO>ufR+6y9Fk&n#WJ5#0vngU8yO9oPPxhSHZ=U>`_T0 zqbh@jSlvrZuo?OqAKp8b0_KOvCf;yqkiRNFmy8n3YukL+I2zsBs#lD^uQ`X-BF&d(d1zbfE!Xo2NzmR@DE0iAO+ zx6*d`Y)wH_x9yzy?Zhi7m+zrqw}+cGSnkbwX~k0G(4T9zKwsSrzOc3VB9<;3(sRx^ zPy9S8bkg8BxLEGvhZx^>Z39jLbm%=Fgy`V&X`!zOcC0{Q%n|DmJ!P$nDUT((Ye&%h55hoKT>&kMjGPqXrQVycvvLU$z zUR_|LXDV_A8M4du{9+M5uJs+2;6~li0RKBBxR(%_Ch3%wTK&w9&ohv%VztzCb4_$)iK130k3tR$1SdQ*)Mar%C!B^|%hFY;>Xm#iZ zrGgGSB_;bY%EzZ_nAD8|)49%|;3F35nU|7`NA29RCSTdR=VV*6q3Yy?ULCQoHINe- zRSo`_Q|>pnoxc-iC+Y-X`6F2x{dM8&-~72$Y@Ix8jm#bGY(Ji4K>%R-dNgw`P zzoA*!z`(*QpzX$4!!mSG0$ok5pr4?j^Q`_r`TAwB!=DOzr8Cn?7gfJ@nqO4eoEhOQ zr|^bKZEKoT-8WY7Lw4s=A7q|-PyF!OSbzC-H)+@TWies}2xsYNS7cNI zbAC23y(4x^vniR|g0tS#b-79UwLDpB?I#OvGWhv`J#wa32b`uLrO5OKzf%i5ltJaY|o@5jA@}nRu#yJd`+#k|ByUVQ{ zB06`44 z8mTmBE{>Biz!!=b)BKc#n1kJc`8=C1>#e^IW78lc)aw$mtx z+S5d{YUnInv5FB2xTlP|)2u(742aqHx2E0BexA_%fwxV>QNvqYL;bQLixFJovJD^@ zG-a~AHi;+DdRp?6@Ljg>BO)u{0?z%BDB3+2RhY;SF?re2{u=bFRx)4cIdRyr5#kV& z*SBxNSxmX0Ya>sWYLFyz^D(8Xsfy6^y)3q*E!pEj^UURGo;-U&WzN_fOsW9166P&v z*Qn>9Sdted(fjOdC(+6I>(?KjBCa{#4!AbYu-aXqSRGLw2NGj_E6$!{`YYRyW1*4Ef%diW-Zn(}gf_ z>G(<|aw`RJ6oC9 zu1$W!xbt;Mr?3Bd^yCHam*u-rH1gaQv#lXsNa#^jJz&2|@r{fr#j!=QMcdA>TMHr9 zl?pk&-Yl+9Yjw#U$o+((Y#UQ`d4F2Le?zBG{y3-vF78MC4|xGSo#M{GQItcgUo7%D z>c(z*_8lbO#3{C`2-o92b*O>PgYl}9JTG1FzE<+`{UVoZiVc<9A7Olt7PF%kU4|D{ zq>4ekvY=3Ha@V&W4x_tBTzbyN{DDdZcrE{R2p1u*_Wnoj(=@Jx+Uld{-uf$^it#T< zmdnS&;Qyx`fPdTk{PT+h%*-53%>L0){U6GBQv8Y?q5$$h=hk<&rbd1dt-5thoi5k@ zQKUd*1SCXbi4?>zIODeJlX({fTA5!p&Kc?j)3-}}BkWvK(89PQ){JDGX&0HV`(wZU zfU|_SNaXukcRTuptzTY-=r_vt_07u?>UPRiR&X_&7+gVh4`#q3zzE3MVxo|QTwo?u zPu6$6TRf(36^n#xIdjH|MDd#%WZzp{7d=H|JKZ__ja4rAs*a;HJH2xoPr$Np1=6eM z8qm&6U-!l=@A*hjSTgQ3OY$1Qn^1|zAs)|c8$Hw)ARud!9fq>d&-*YDPAOYR5KV^E z5fHjDV^I77N3h%x`Z~ko&U##&O=Apm#dWj5CHHA482VlEZ2ByF`%WYaTt z!<$`T-ixUCL-2wCGX6w@;8-;L;aI^%l-Srf@U71Rm8>6%R;0(#XBa!fQ_FNequ9Nl zR^LSBv2qnsMIA7UETn-QY?uI0=?Dcc6#!uWkVHmiP@(I%U*TgMia8h&4WHHCEeNGa ziU^jala&)eK>|FhCeS(e`UZ6UypbpKjfJh%wFH|M!r)b79ujX zBzgWbBhE>1i6i;wR>Lb_HK89NNs)bJk)bAF$v5*2`jZgya4*6kxg|GhgyQ3*U}kJ znnbS;#7dB2sZk)X$B!LBfSR*P-|B%sctkXq9y3C@BW9UVCEr^-S4NQ5IM~{@g4W>r zEGrT&Rh!KC=RU5%`Mu<@9OYv4a!6gf)QCVYU4d+&E<$*cFUC5o66Jby07B%xfdTc4 z6Fs&uLuM~LDbAvM?t3vr{rjZJPTl~!N8;s>0IWw=^%{ScDPuWnd`U++rhLBfl)p5tA^D_5y5zNM0f32^4es4LD!w$nHU+E}D}E%U*%!X=5%uo}%10L%Xxj?c9qcRgn&P)w1RSd=KBOz^ z_t9es+bClF?sURu3|<3pvT?7NlX2i*zHi@y2)R6%J^vw62SY0)?0*Ci`NwzsccAv) zu(|)&H&nJ$G%+)AmofOT?EO!y6)D+##2UO$)9gLD%GRz(;m{LML(qNUCKVkaN+Pfk zVP9ZiD)xd51#Yu_2c#y;Refi-aOZOwX|W9R^u-&L?>FCW_7yImIDcYWMlLR<$+3xb zriYz}6uVEN_BjMb)kj+SrCNlYmZ@?sO6=NnEg({p)ff|m8_XR%AU);=<_N_aj@U=kjI~eXvfIi``Rp>u67f;_Fy*(I2H=GW zkesD^&K}P0#5a-xXgp)IHkFPcc|^P$xh3SS4z&KCJdZsv=xS03#6h#3OT!*Vrbd+w zNz`zO20>cQNUAmwg*J2>Jw~@ZdduB-+l;Pdn(ng{Z9zM7ANSEpF z5g(}$GBXI9h{O728HuyBo_`yiERkalXVBQD6r#@N!F1OFvZE)jzVwGay9(ZTMI9h< z^;f5+N{w&Cf^X=&Z|K_~;GT{xk{}U99z#^oh})S8?Ze--B+UB^+RMY)7-#x3p;F)p z*p7v0J7|f{UkUSt;})YTp`lT3_>9PJk!u-LLU-z^%8V^>L9Fjh3|L}#LC&j#kF?Q2 z_}svCX~7P2_YAu}m>u}0X7yQXc0!W+_A|kqH3>!q!T!bZQ+T<`Yy`@k;~o`g@|-)2 z(1ua>L!h(=uJ^*s9SYGXi}9>7%7SMFK%?Kd|3N~jL*`8#h3Qy_b4Wky@!PMB*Wp7l zD*o25&9m49UttS3|BRsbMvnM?>sz?~byV?hgtUJmz}n8qMCE_f7F=SuJ`6>XgC>Ja z#FCRjxRoo3QTdtb<`?0ikPromwypbgrLsi}O3{0wMws=F^$|nC&LYn?D_BuSu?3$B!ke;>~Nf)VrO)3v8eH z0g2%l_%k@iAR{)+Ne5Z~AXY3+ULs$p>?sM+sBCAmr-oE$Nq_|C_~cvW*q$*=#T$p= zqDw7Wx2o8hI5wfld}K68coVDL+Am4bVe{fw|0)sdq4X2t9ijq?g8qB3N|6^7k{+bW zb3)j#dj}*#G6GD9I6cJ4(znO@fsX5ix0?&Q=c_*!;T!FJM>HP^=>4xr=&!}*A6r*j z=ie-V{~m;m{2%XLZz(@P8c1?Ve>`pJqaubYQqL`6!ybXzz66@e57&0dX3+PjtFg~? zsqUAS+cAt2gkcQdGfs{7J3Q*`cstkEKV#<(=sUm6d!uXk9CEro%pV5}+4lF`RGFfK zQCfRQML)}TASj0?5N z$urJ;W6cT6Lj#E2Q3V&`i-Jn|_W9bQaDdVv-pdQ8WFMZW`xP5tcu=-!XZA<`!s&e@ zJbNbrorCi9n*EViCt9)ovo1IuS(^-r7fyRRCkDOh;!Y`n09LHn=LD!cx0vrhBBBf?KL~FaiHwgdodD7{h!bge;uJ>prE&`BlNKVC z6BZ%DO5~XF1Ei+w>4pUg65PX;@$J0T=}OAkaV!-|r?QL2#oz3H<3=?4dXX9*2lnvS zL;E-C#y@fMj~DNM56oL}MHWc`Stny&mJ0{LvJ8k24WXFEMYvxpN`izmm7k#OdUM6V z^C#@AY!*kUSGe9LQ&{&b*iJ?m-d0KJ*I)}kg8}YDrpDK^#z{>xpZC|dFI|iyfgWuZ z9d6zgd#tX39cD|_WL4gK4V5a*Rl8(&!4H_B`ml!2I3;40UdY*A1YTtXqT<|6%h8^) zsSFEXETS@dzgP)O_nTp~{fmjBi3J{t!jD0niJhSdWYCfBp3_e%%H7GR-jWYo3rk?Z z)4j(?q;=Rwy6CG5)vW?!wO1-Ts#RHaN#h6#HLGbfW#(lGrBd7ZMTDYb&rd57o+9?2 zs~_fa^wp{yA!uR!tGJjy9_a#4G9)+us5GJ3ECrf*IlI=U^y3 zhV+(nj1xn~VB8DPVnW>@GGHdv@J@I><0>tkT?i~G9reJ;)ctYq9=S^8FGY%V&Vgik z^C`Z*(R-J8zb}^3`19H4kAxii*QL{clZ*Ouv3{5Q@_*`m+y7J~|Gi^LO8?xk5*p}4 zgi#!2+VxsCYyn{?bw7Vi>(3N!-WbJXXZ%?`&X!YVzCC0}dhT<;lCgb{`EWjgIfUm- zRoy_OQ-w~Z_Z(Jd-t)R2o6B^1pKrHG0`iNJ#;s+Cjg>0Oo2tz<5~w_+Cdqfo`^}U` zw~HB4vi2x`u*exeM0VE~|4>bev@A?Knq#TfK+J?@872Z2@;*J3?_qQyV(F8An2bYb zQ&dg&6M?XVd;_%Bb;|_5E&4`;7pgFIv)!ytxtEm_h7VDNxCk}(K+CKrw0J{7%huQl zh{DhUwghQ}HlAk0F98Z6nizBTYQ27-7$_fhQ!*y4$TO1Wd992^8H#VEk*wN|1t=*d z;-!dPuAsw|qz2}<&$39>BO}#LLcXICi=AYrl182rnDGuM3#-B|S$TWxp42sF@%h&o zw$2e&3&{l}?qPZ*$)&2vvv#yQG0EGBy)pbSUf_xlWDg{(#a4xLtH>MQPb;d200HZm zP)<;-ZMT_0g}g$EjEi50NcQoDJn0l+nc-7R4EF zGfi`m^5ScSuiy>x&WPIN`eiT*4iUQjIUF-q{<;*&Env3GKjWZgqWVFY}IGd zli6hQBxDEtQ-k19!#Lt);#QG)G?g1uIhH}exrK);%E=1BvTD%&ckosGTaz)aK&$r zcLPgpD@6EQe zkeU6*2kZYKF4y>f5|{fKKZfm{GMm{qvKgP>7e9L|=?W?;3hGzc_g(lkv#;IR`yZ!> zKb8^`?X%&CwT7agrZ6&e|7TG-4J_6f+mFV@`Qzu`8yB*_;RC`hAOFJtxSAxX962ee zAiuA%+Wfq&3nFYJ53C}lAprjpj;|B{iNZ#4rC1Yni>0N|FXch-8mLOOlxiE4GE`*M z%`CG_Yh)4QX_Kw<(T;uMFef+rW!)-0R+T*wHJcH$d{c4)@h3eWY-!dT) zu8EGS75*%P(|DG$3{!GI%p=+(ac$O25=TA!xm=*SX=iiEH9^nrD&QKuu14Ba5~Y9E zfTo7j-QS?#z_z`T<2~ldKs|of)1xpkjTZC;Lu2^n5F!|iCrQTLtxO#>Wypf7cLXH8 zH(Hi4Df#XZe3H?cjs*ohuKx9xb9RM;EU4YWl#wnWlR#i5xc&yWDRnFkSh(pJIGn^` zj{sTEp=qgvX`@%LK@iz#Riug_u!7$yO~z7gGM*{`$2*^Ge{||hUaw5J|sz-sZ4S4nPV{M=7wFs0JqnHEc=@@ z>x`3&E50mKo;^!h4ElX9BD*ZOv7$ei?sPAO|5%Tl0?;^<8$OLeJ;Zb*0+P;Ymj#4R zf)qzn7|k}nZVzjMTk_bHqJzG44{X96a&J0EPH%Wm!uOvwqnvP210DmbiE@+4jl{LG z(|7rm2U)3IppZ1h*VE8v^4a!Wm((02W{lcJewS-`tR|3U!jn57c{d`UA=PPu!Jw1v z-dBjUkf)VV$d5 zTpyv{72bdmFCnQ_nqYoZg3-I0Zx>iM40o#9Qf7*fXmrXZl)Xtid@rrykH|S;SMQmI zkmi=MDJpB2R9gH}_T>U7RqkD3q_ernP5UXrD%}FkI1XkmbguWotR8ohc&#XyP6`?;m19fH64;%BGc&-jxayM#1TfyewFDmLyFtN1ee}&3y zV8#e$p$`%ch+={>1(fIQOU;;PeW%ZeNF@yy&_{)m{^B)WBI)oJWUn>qu!7oSLpOM) z4&Gdk{Q&Q(0Z0;MA@@Xjut(^t1&dM7H7N`aQ)}M?vwj}s;UVH_spWIXk%zU1D$$viZ)}?rSRL2 z5xVy9f#MOp#WhpkE3MY`}stlI4n7-kJf;F51{+6&_+N~HO5@D)<< z&SW(5Y$Ng&l=4xa$KFsXq?#t7ybZ#^5wKo?cm2GTjP9}vWGrk~{SSxqUs3*9>E~_| z)%N;$l)(Qwy5Rb2LieyWu(2=_vNmvXlD0E2{s4dfH|r{y=r&0qfe#~^VHBf$K~65N zs2)QDlsb;V9(d~ZOrP%>vZ@O@JZ)Fk@Vt>p`deQf!9QE&bg5!nk9~;!dGR?tJ$ifv ztBrB#@yjl2gHM9m3%qOmna60EU8(exaDY|8G{_MBMXri22CuP2hV_v(bgFavt7^1& zS#l(&0a5zMcPeQV5S{E@U`&>q$%BiTntqHt7xNAovB2*8N8dq@^4&iBFzvDO%Pu6d zU@j3fszc|gF3P+V5Im$8<=PA^K_V!n0Gio8Q1A@%e3C{o9hmD1@nVu1h@%2ppyhzI z4mD@JOSC_8{fzkvhl7u=h5Xn4?BABG{yg*|wyyuJo1>Ke@qrC#A`T3Nzw$>#K{cg_QBlAQJI8*&?y?_G;XwjQxjphsT6RL0 z>!q^so>%Wj=R0^VUOjZk4asZJ&XGw8yVY*ak;fp*ori7GoxulHtqKuc=tRk=dulXT zXV$4+Zk#&>Uf;akcnP($2R>Bzq7*z&K>!|6sD6*+%>P6^XtgkA-7FTnW|B2KgE1YW z_1)9bHd-s1$1wRoTCE2*xG8^_42{Q@7taj`@>(P~Tii5air9^&jUE1#r_hj06QvA8uB4|>q5s_SXLf6$vLhvh5uOma(b7$g@#%YifTcHt0Vv1C z;%cpR%oaaSMPB@tY&zY(43{0O@I?iCs1PKlLu%#}k6uh9k@GiQdH}%=I*z^vo6=F* zsq_R+T{y{%3Am_ekXzfY)*pNl3oNKi$znL6~={|JwE{cfkWnp7YWm1 z@lh=tGqm)#Zz+C_oVz;^w-JhD7(IQ5IbkIt+Zc?&Tq?17JlBK!nY|uyU;Xk-r1Vsl zKgmQX;ODoUgsF;6y4^5VGw&c)D^3EhH|w|Jjz>lA)4XSyZ`yx^q7=4B^C(^>u4ru;6S&Jc{vGFjZ^ddC7o zX=@<3JN+upZ3|eNp-CO|>4Va~;AI1!0pzyF)=YD3!qwzUBonKY{a?k`M zgF4p?H6fL*RCZ5l6f6$Q0fMBXOa^{ca6(JV$OE(7I6Yzx)4wj@b3(>Etyk7<@l4Hs zq9UUclsvzzR>xN0GUY_w6s<1JB`>gm*t&gk7-=Q;D)ZG4rwXEKWkbB%1o#V;kAVny zIm&(?sj$`2m;8ryf@BD7*ipMFocC|QXJ1)5{FPpME)CSUbNHcf|9`x(y6RCHvkp%ivjq?4NLucMvFK%GfW1~n> zyVC#S1Awq%0n|0t!TR2UX_xon*=^(OW)3Y9WVXdcTM+NrvcT~DDZ+yx5DdjX+S{DJ z7UBQqwe?SIx|Cz3o;&0Jsav>&;D{W3XD_o+r7 zUiZ7-lgNN6`HN1DPO7x%s&oQA^NJpa6cUC9cPlhHpQ#!9wEBu48}|(69a`hrieDNTS60fTMM8-pzn3v zFL8@mP$)=#vSL87C!SE&E3OX{6+9yOrEZPGUZ-Sd$;<|5i4!+hvxhJl-0F!UVDgvx zT7E)BjKz_A;2=rmCWHYO+Oap1HM|7D%p?6C#lmG}79HG+lE0yUkvvW&I}i3W zJ2;X%EKyUhwoR;NG`e#RJRqv{%@LlhWe8JGgGYU+t`mB69u51Gsh!S|CVsEOqW=}} z_-iZkVN7hI^ufUTXS^AtY^8*0hU}xe+lpAB9K|vNC}!P5B(_*yW^M{Yq_={HM$=-M zr@d^gq-_J28aR3^dnfG7%~?J|VR9&bTF09^TG}H7W%ToV;CXP$e#pGJ@U40KY!4?YYRznzo`<~mQ=!s$)}zv*T$8%YlDp(>h({lKC*<0Rqjbobp9YOgqb!``4vD3C|?!;X;j^JbSAG;UA^$4apCe3%cdl}t8=zB(i-TeiNX?jqF(j}8eZB(k43ZfmDm^XV0+Apt>) zvGh13aObx@%%_lUzW@=Fz+T~#7}}C+=JV*q{)*?jl;o2FH z^QNE-50gD=b}=5(cwss;QMLsLw;!w)jQs8qJl&0BSAN=BB0>x#!kUn9dQv? zF1Lh<0U;(}V2=*h<<6^@JOIst%)$t6f#Q;w0T5boD6x8M7xq~dTTW$gpAjw{cr}(; znm`R_e&gP^XockDE1Ryo`hEyl@9d#qrmGZ`8&otYq>pN$9rFiS3GN=_=J3-YQ6?MmBu;YcJc?Xo;Z!vT_&& zHfe=9k@}u~-8nGPEKSR4D3z|y#*)4*g)aLx#ck@@EIoGCk(7;w!=>})vgoKG$^Z?Fp9?6DI zIbPA*uin=V`4&D$ya5jkOFME1-i0a!b?*a3pQm>=#vdJ#7}Y zf2Q^ViHgmU$jrLHKe=JX|Ar99nK~@H2CzX@4AOn;GQoQWn-s zlf!Tmvqle^GA-N9jMngiSg`#(D~oVu|Dn@$jiP!&%}wNs>% z_pZCVhSs_`k?KrG0X3swD>x|c7g>$%Mwn!ywZrehY><1K80IGkU>CGo?J=@JLG$Pa zr+>oISpFa{;)+TCbhf+3PERN4dB2nvpF~oAJrUrRdBv}6h3P$CRF!k|03|CLt%ts{ z>9LNFM76OJ$cRUA)!OAi3Ay6Ft2@`uLuKvYgQg930VLcQEr`yU@ZkG-kl4A7HaKjFFGs5R23lTbD z8$t)o`2Z0FU}Zq$kR)d*G*JrRS!fVwEN{5WMaIJoghy%h;nC1Jn=A4&!ak#TyC)$6 zK>DN7p?NaR^WyUHOB=rwaUil2XqW4SEVF7iJvIDbAA=d$Q zmvbGIV2_r9{Np+tB}sf#h9MLPr)r4@0=ve<0>LeaPT zoGJTh$RMAUrc-#{gq>WFoC@+G^Od8lE%0&Vopc2PO}!kIToG^ePa&paP#uQ+7bV`8 zMEoae&X#`L=K|8c+PL&&T2eYQ;zRD^Q=I;VQf>HI%Tzb`&A(B)>I=FSk<*{W1$U)h$IT;NH}ox zdMOxjULla&raJs5u-8n#hqGO5c5xbVdnMq8aayuEO!ga1(Tk7=4sw$3*$}@3zg{>OWg($)sTBvnJgyn&quJDn$NskbfgalWFkH6eHaDylNe>h|a zg(WobxZA@qan;{=x1Byr4x)WiVuu#nBEmC4$~IQm43Xm=8}LW-$h^#OrvzOfywX#q z2emrnd*QyC3Ecn@LfEGy4o>jB3U8kr^r0nWB!}KF1Sd6A4rQ)^#Yi2@Ei!DaJ~?o} zJV1k%T)6S{1}$4T!J0BSjGcbG0aqNfDD0Uv$TQ&Y4GzY1g)SXkqYYT?(7DdwWVxrp z)1lBa`QiuLXgpO!q9S-p(x@n;km}lD*>2LBt!C!HX zf0Kgza|RN&Ms_y#AF}{MYm-0V(f@`T*?icQd=NT#cCNtz?ZA5K8mV1^j0~!xf&r-L zTs!x@jNQ{Npsr?79eBpnpIrq?iVRAcxr@tPnVZ zORXbO>RN@DFJv3OBGlKbFM;y@DN!hq$~>4pPUW|P@V}2}X#R%iN!YsD8T}d3i2cv9 z=Lf69ZiXK@vns1t0*53KxY3Ul1|&TdE`m!?(*I*`ksUb*4kE9rp4k?=?X;R|?;HF( z0UB{%BO0xE6hHRkhd}2@eF7onR_}TH)!2&1#li(1-{;kSoM0Qb&32fiosgHWt2mst ztBAAhR_FXZ6og4iPkMC~y+F8NfwX-(dzH2t8yoUNVU)Xs} z=*6^Q%FgL`y{es4M&|heeL9zKthPZ4xk1M2b6+TC@o!(a@**40x{~~<;(AU`-oX20G9UL8AD(aWcUwGO_DPra)yqLnH-B_KzT6N!-Z(v+jdiZW$~ z*)vTf*^dtE1dBYR(Ta@@y(^*V!xw{0dt{_$NWdtc+L14bXr~*FzeSHAt8g*(qbdYZ zRQt*pGOl*rubL|bE&>cX*}LZ}sAKxc)W724CB%ql4AMu@IqAXNwbV!%^(nDY5?6*7 z#%x+SoXwJ&v+-&!z#Bl!q`qi*VK z+BEGOq!(zu4R`rL*lLdAmUK?YVv70tArvz4>-qJS>>CX?S!KPzqeL3L!j(Z^v`{fK zoDx-hZACus0+tqT=wa-oEPirR%Oe8BZTn1rLOqAd$0t5@Lo2VRWc?dAy=6o@4~z zzhTcM?=5(#DOr63>kxoOTMup4*U_8*vc}V*(mQ?(J8a-_1Kr$7_(DE|iO1)(1rj2~ zNB>~!x&`evQK!i{IAGD78s%X-UN?)=ptHRLv2N$?nSO&h?QGP&RoshM?DRGUy@$!a z_lM4hHzOdfxevJ}W4UcAe$V<_%ON-${IVOI++rMhi^`fLT7e^QKgm#o>9xQ4F%l?A9gsw##t8)-C}<%STXurrCqA=E zOCtt%-kTXaM;nLl<}d4M65yZ9ZF&jZuB#{8)}LM{b9_J7 z;x(hU&U!tD8w9Zsu~n6(^pqQ1+fUP)Z>8oLw@~;oRCbn*Q5wihJ8kvdic~Kn9%Hz2 z3%fjghOojFu_O#gf@H^1YoImY3eXOkH9XY#ti=*q zs++l0OxO-P0@$A9 z2#w{xR<}$`tVeJQex>VwYVTqjB1dL~_>7UBVl2_ad!1)o4@?DEO}zB}B*#3hj7_|u za>a!Gwor7XuS~f!RCH79pprHZ2o!?mQk%5U&>B!ehc6@M(yD-u8Y=?0=8ez<37=95 z_UthR`Zw}}wW;~h8lj85mi99BT+D1+1g57!bItt3(3Wu+_Q}O>iBGc6yuNS+oW)y8 z9V!l=pbxyV`z7eY2iq#GRh*875>OJ8ntQPjdgMh_DkmkmMwvN!YzA`63x#9dJERX< z&mr@SPU&XoG+S7L7OYBC?6U{kp^HiX9LS{z-PlP}74c2tsMZyUg}VT9FR}CW8|9BJ!9CTH_iP?Net=QX{0I z0O{?iJt{Q>s2gdlgAfxPx?x5-In38HQDoCTX=4Zp&redLtG^jq@gnrF6nleE37< zG+!bz;r&S#TeDRn#A3GK{i_~yP+-;%6B(Mr3cA6~g0WUBP22?+TTWnG1F%M!FC8T; z`bd~tV7+L!6|jsvN|V!0Wb-Q1T8Axjd29$#x?G1ZQqOaOWCcz#hqTMSfsf4j0g>}u zrv!>RLI*!Utg~7pY>;^JxE4_^+CprDGZv-cyrCZuaLo_TtN|fpC-(Otoo|O(Zq(j; zp9-VC)!@Ky#M-p-a4)QcD$@Oe$Pl_gvR)Svobg@sa{&I5ZO#=2naww=sU}z$IPC#P zDHBUJvoHQh5u)TAUl&ze|7S!|@6E!jQcqf#t|Mn7vgyx&Cz`Tp&im7IViJQEp4(63 zQ0#nj&pkTrw^U_j5RywUg9<;9uiLnvqF092^4(USKq|BHPj#ucuDzXGAgc>5#2otRnb%iKF9|72r(@^Kf>}74FGw~g644Lt=fxoG+PL> zebb&(xa%7f^PPD5qwFDOs?=Hadte6rw|3&+G==^&deZ-CCjN_hdViFEvmf3>y%lXm z_{i{aZ2sTZg2KZ`grIFv2`I$XyEY>d&ug`)vx>4XqX@3-hVU*cd_EI}y~Oq5nPj?x zq~taojb(ndyU64)^ZE7b9;XW(7ZF+m#5?Axwf9=9_)fDqRqXEDO0+Hg=q{_%0&pxp zc)IHtTk(0St*-C)Mj;y7y!2d#jOl;irYdh+hBOA*vC$Dtx^JuL>{vTUYybIz5ql_HL~q4q{| z25tbb3Ve*Eb@Aj9td5~qG>C0=e&Jn%Ov8-gCj01^E5{wBB`s0|XXo5${VQ+GIY^V3 z6N5H^`3u&}p}m?(L%~hv`CfaVEs({+uBzYj`{AXu0Nu0kZEjBP10QJy$FT%JbSkOj zmvWcb#rN4I*^uKDDrD$9jRE{>C^auz&sAT`8-M?;Yf=b<=#P0No$x+2xi}#TsVMli zPwk#qgJ3mOScEmoApk=)1_7QYcx8Jk@8qB#Gi4g_I8S+*eCtOfg!70wloO1_KBOnD z9$OawYCt;kXqW`AQ?D3bd0&wqI+uI|C%m*6IjMa+&_YB^pqq3goN%GWnDAKRG6Jo) zz+>MuagU0^^Oy2|DEl*Dm_hRmd9LUw6~f@+0ayn6Z=PpVw&*#R>PjbYdER~Q4d^_5 zRsD&cWRU$zEC|S30ku-2!JZG`50YiqH6sk9tbO+hqSwU0HUz1ZBz$7lrhRH;iw)ou zmwz^PgPJJny+10N-M`kWf4$Xm_P<$-;wIMrvvXCY9`@l}fb-7lnxc`c@I|zDK0+AD z0JW9DGQ&R|U%!65wKM{=L3PliYkDco#Z)ynOeW@5a^__g*J7p@w<#W%Dj4&$$i{P{ zs^g-~S8!z`BaKHLlvtA&FV*AX)n{Yl;`Mwh?VbCM`J2llTklyK(bY~c%0lE;uj9Tt zw^6Djw_Sy1JDpiYuuo3@93DzvICLDL#Re?sJPtmNEF-nO+gHzKmor&JVHvTn=uqgWDxdJA z?~6l8x-~4(QIq{1AvQ=}F^fO9P(#6z{seO?F{g_=K7%lV5IQ4OQ9Gl7_Di1UA+!}x z0u~U)NG@+R8Evf^Y5ML`sg*!OMPh~${Fa>7T)yZ)&XwR3e9G#qh0(~Rl`z*tR9~4h zcMHK|WbE|43U?kEtiz4Dfc+f4*56>KGLpxrHB*HNR_U48F zK`=@ia9*mnQ1u9OU2@ukc~w*3=q!aH%e=5XmaUoi_~^GccHUy7I%q4RQUR!5n>X2$ zk3V~ev|}-RnBK7$Hd9IqPbksL>ldi4k2j-;xcSb2g_*iG?-`#VCJ|$Q!Z-Hbk!u0U z8VfGyq-qP*z>!w)^KFj0J~fulSm?*ho^GsV;g8x*qWZCxlf5@Yi=k~4Z56N}&hkMD zRkWjuAuiR2tTRK5tE-G(id}L-Wfrjo$eNVH?wid@G7cU@YY}yn>zqx9w}fRxw}8B& z7Nc-!b5p`$CP4!Z$Grwv$kAbCMT|-o-21mLrhP#UV*>@^rxuJnjwwlAXk7z4X;M z0m!ZdFHnzAi-YAyFLPUXC~gn^tpH5tB9}u zR76%)M&{0)Yp=bQqfmwECV5}dPAu}IOHmkzN{)y6Lp z)w*63{L(#bb%sK#@rD|=%z>AhqIHaUHrOs_!^2TJ*f0%x2aYQwk@7k}q8MFpt;>!u zt{F(F0nW4;rsnB&P0$LEB^7#11?U{;Kw`JDxY8e+83y?G#lpytc|1~K&#Ua2{GPN+{4_(q#7D1Wat4tx+e43m7t&ErYbiZdy}+g?lefMwr}#_ zIV7|MD#P=z5DFrV1YD}kV%|MiSJ6AHTMEg0&7>glDs(E9)Z_9~2Hde6yBBD^;n$*k z{1Heh^i#Z8*GiDP5w@i#kkh?VwP*1B`tk9*Xz)V0En>c~e7^hV_koVWvb`2<-n@?0 z7vcolA2l`ZvDam&uVnlaUH4qDu+=#hB;7mWra{9a&P8aSzC~1vy0X@J*J$uIN5v_D z<)gi~JBIaExMiQ^06{(qr$mwxZn0cwtE{6y*yH5maj_tFQD2z!whn`%wBkA}^2D;7 zMxPX7uKLxVDLE7t==y`6`45eQ{yk+x6~7CZ*EmE;6A2ZB2Qhs4f?b})8-?2C9Ia$X zc6GSBBORP>9b9@>sk$eqyCni!8kZPZ#g@5tWY_#^U#YTA_-OYeI=k`);&Wp=QHK?% z>r(c;w3<){xZ8_#T2i#^h2~ydbPvya451NF;BNjz8ElZ#YD{npd#p_s=;9t)qRF~QfFQrq z-qiSK0Ht%;#6bA`Z5!21xhA%e>(>WR((dk89ua#`9%Tt_MgE{3*m0wOlw0Up38?-o z3JE!E+c7Jqyz$`|x@nU$)mMzgn+v=BPwy@gZYa1!$p0dRPZI1jJR37$1`tF)=WkfH$Ij+ouN*;F8)_IHS$toE4oDS zgEV?BAPP_sD{k_+<*VrQUYeca*G&*;&*RVU$((Xj25t=fVQmKn17`8Q$?41<0Qx=M zBvc}Fym*L`=Eb&#Knr$;dM|t#tFM~+y&m(816{9(K^Y|lVp52+Y!Gs$pQ3JgY9f!W}7A&T;=CCA~lfoY#pE^;48QCQL?9^ zlh6>s`Lx;N-;~)cPHzt)1j|e7%ctHBUtHo9`6b;>5n-lko2(>OR#hoq*Od_9D%6z* zNsR24o#tAP^dFhon3hJ$$b~t}kMc7F;%bpkzZSbt{)jeZR}D2D(WSQSHNhdODGp^e z>19BAW7&FP&a0ke&A7v!FtQ0TZhJUwpVgtusVHp--6RL}=NIPjuvjgy&)#Mrv2eIt zu5R7sxm-mCbo0R)(tVh=5hX`oEyc7InL!Or*51UF$=n1})86Q-u)+-^>Z!{~VfA9C zoufQOI*F+^-Q@N0DG#G7PAIY%GqRR^%d8oq3)5FgAN0i=n2*UA8?$z=wv=9Hqp-N5STQZNFRmFsG6$?V-q{OuUcc-J^9>k_Fw^2Q*Fb9^gxa(#9g87M8*+Mt zMsqKfSW5B@eC?JW2@(R%V2r5p-=c8T+0H~7JA)i zqEawY-T8DzWvW&i1xRBvzL&vjPR|~kgo{exk4IEhWflrimtdj~gvqyDiRG zw^g0KEkv#w- zaRFWW;O*M>y^aRcqcB}$ZKT0BfhF>^U2f$zHL-c}&?wWj>B33Sy*Pisk&c|55|p0; zbLNd=$D1TewmqUuT&~qud@Fa_BkEp!Lp2`Hkwu6_gIcE9KI@5{tviYj#9(j?z*h?oRS#H4yLXjGr(teJuC?bbm*m+vdd)GU~wny^Jvy~-JJNkr|!+xw3 zEL=(s951#fw(`Gkz92e|g&cyISy5QUXEaWqhEt=h{-Uuklc5}|<@>bg@C1)v;Js;S zX;F4nNSdV0YWDt3W-B=#GRzK9oizxsh@7pQb{(1O`pUEB@#E>?oWx&!VBf2AXUN4f z@tP=$!bO!%uSn~KnX)oi<76J0ytRJ*bvgs8{*}0Q0O^?H!fSfwPgJELj)GMhu=NI! z@vr+q<>bRzi$YMgke7t7{yhV)JM9wm|TSM zbDX!EiMZ3HOzJrvn`|UvJs~tst>Nz*v>v4Qi2SjK$BRf`ej{wUuC6YEw{evsn^4+H z1SPU9eXeTd^3&!mMxSvzUBM8C7H#LPMyECQ#-t>VIk6Th~Gse#ee6ip#>g470Io-dA&iE8tOKgJhY{{qoQ zy$jos6=mts1*T9_85;L}!cK)4A!$O}`>O7U8AGpP!f@5hBRUSJ-s!AmavI zmzS1K{7cGNKO*iARNtg4@VnBKUl=cNbcGv3bH7b8`6buYj%qh6lor!9l~M4+q$S(x z;Vgnv*N?5s=A^4%NkNRXMZ8&g-y_;G0J-vH)`NA0$4dg*d8P1#%--n4K68+9K!|nT z7^xUhWj-+wmsW`I_327lhjJA2$2EGabwsBqDNWzSCLQqC+(X^k!zH9g$eEsPG+WyW z`Dw6Q5Kna5AEMJ?WZ2~;%o{}*1^mGx$sOwc#sK(k$sL^TDDblrwz%}?d@y_V$177V zCvKas>6BEyTWk{4^C7$kP59tNoy_&CsZ#NUjkkAr)5lJoZt%q3Nw+?oX@poeX8jm2 z9nWd4?;&7~3bxtx|3k-OMoHuciaE$3cnba9N1mps>EFXO`uyK$=G*Ii$QX6=N2 zr{|_aNtFNY8nZ?;T;=rVnv8q`3huPR;Pb?^o=-jhqX4PR%x!x4Ny-F8`nz-VZ-uM= z=}9W$U~6k;@)xx8UvOoYs+`J#B067vb7)$HugMUDDl1(r%1x6PIIVRlL^Eh{o$y$5 zA8Qa9<4(+eR(>yo;W0d30r!5J`^6Q?l?*JprG=}B#ajA?$0gTOr;kCv$H(ulyby<`@AWshLSh0*8^`kg?@;s){Ye)tzp|NK7N7aMJtKxDFJ$XYf&d_Qpmh zyK~?Oeta{V!km?Lj>?_04KGxvn!baT7Oz6*{6@WpE+0;`2Opv<(c_+y4O7GhPPm56 zZEXbZ$_Smsr>^a~yaDD(Sp>H^buy?0cr=0Z6at-QdbYbLKHXa&ncfE-F(_$Bd6d6) zhUPmlvz*6YQpR5}K1r&oEv0q(?t!u5=}q`)+2IGmQPEputWZ%M7Xi&6C!A6O51UZ! zw|vTijv|t?Z%<&=zJdetS;Rw1{r01vZd@fwB+8YbRf^sr4U;YRZKxDCc4~2qe3hpS zub=1=MIsU@R=OLinoC)1XuMKpqAF3thS98x%-B0HJcnATco9~zcQz=7&KP@>n77{~ zYpocJ%rFJFbaIBpRhsQ67B{bd!JM}bTVyu-SxL_V`qOzQ?*^a2b7ubXD|IIA>Bmi5ZXuWMpQ*SI?q2zSv4Rh`BTBloitRCiYV;--H%&;y94%qzsMo|*z%^^DC zAX(>rSN6m(4nV%?Y|q}YYY&qHzUq!Czi|(UcEv>f`(7aJ#vXq})>hqaD@ym*p~&83T<2lw;1G=*gkEs31R1{Oeuf>&rV| zdH=e!ZC_(Kmcp9isGyne#ztUmi!t1VO9Byvt=J%=kMRsIGI8-~+o?@B!eX^tqlAVv z3vZa5_Nv*NXC0U3N(K=jgDGaVJiwDI* zjTV9o2{9!mFg_ig5OK%)qEm_{-inqGv@{9`~19j>H0O#zNM3JO~)1sUA7;}7Ks5? zT&BG!n(KPvKA3b2As$e_U$$x%>w~$s$32s2=MG^fuxSe1> z-N;&8LDb(H2Q@p?5S@fK?<%1Q|GKv#o^1z3hV|NDkmnXitXQ>x+baY>9E%ZgcfpX* zJ(BkiGIH2>jiJ0r;oY|aTuRKA5s3#z_m6RHRQ^&G)lZrIy$7SvVz(l@Y0if{jKYi7 zZ^S#{I66@+EUhRZcR9Z(5~v@d{9`CcbU---O)QoaWsr%iGDeQ% z+<+Pga*x83*A4r7EL>0)X1zw!E3qY#t4{_VhJjmxL(MpaR(>jFFTZz;NR@ZQ@g7B2 z?5K#J2;gk=l>4j!=;Bj1Vo19mf@kdd4>roEUV7Ca+~KLTXR3pnn1W?o(^-wtY-|R)3~d9t7JkNOON$Kt79voe-2%NIeEx^H zbGX2?UeaP3%#1_)3tXV)vG&*L!=GR+Tt~z7L3O##A+O*vgN$R z`Wta&1sKS6AhJWmChC4kn^B(i&Cw_4D2%7J9?6$sH1= zK)-qMdxLG(_x(;XP%0H`g zy+Y(R)h2eevx)kUZrX6B)a+3W zXgYuGO5C^c^nZKKKRNY@SZGSbI{6eptZ&)zXRt$K?s_WrNvAa+P?ud48jGr64sB ze?NOJ^H;Z^JG^R9rsxl66h7P#VR4Qyhh&VUC7a@N6}aFB6PTTmAcqF~r}{%G1Ec-U zr_^ua-*!@n|6jyY6(div&&<$O+3Yj(`-|xN51$~#&$HmO-|atf$y6mdo5jzI6o*%) ztjU^H`9+1Ajg3HtIi?a;hoUGB4LbNxP;f_u)oq3pUJ`qx*v1RXMg$MXCUkAEVQa8} zbSFb{r1ok5H)n&bm$u`rx967!@Lq%()XP^e4}q}_DxibUN8Oo(ep*=f*^p3HXwYlH zahJY8g42iUZzmTlPjFUek)3S&p6Hl8ek-k73zb<`E5S^+CF5+cE zg#`OT7%SV?PBY-8ONWrH`>A-c6MG#7n@{5;;uX6iCadaPn^OHX#=IL)iki=Gb0kn) zbG^P-RXEI3_s_)@H2;ee_z7#P|1HPjf2t+?D~0%vvtQ`HFRuTfl12xpXng&XcSJ$G z%WSEIld0Mdo=!oB*ucB&3R-?jdC8H#VLAgt;W$%e zFSD@*s^_T8zWBd`e2^}0b8$$CWL<_d zNX?v8DgTjD$Rkf*3N&A9aki>;5Y5NuoRE8hR?u?KS{G`7)J>cEp^{dcjf*w7CQVN` z5b~$G?t--L@^(Pfjmn};I4a-B?`y(tU5y#?1Mvh!%Eea`}Bzhxv)QIG)o*PA2hpw&0o>H@k36-r%BamS&+Y z!C!o>!jJVS4XE=nzCrI?EXR+`&qZG))S3&}z#;I|SWTvISqo#0MEFdQJ(z5x;_6dQ zBB8^PdpBu>HEBg{l?sh>+q(3IzG^bqquh?{+LLe5xnk8FQbf@+Ko!!hN%9|3s3`cT zazy16&7)puqF^nh1*LNlC3&)1t>V}*J6Oi?SCUT(&wXlaxJO-8AIcr!r)ThJFi4jt zED)fy292RJv~f+q7ljz@e;;Fu;MD4hS|jSfUQU#OD%X|Qcji+V#E@`S&r~OQtekD2 z4bA;Ea#{Paa(>QOVM(NESfJjZWCux`HJ6GrvRPIb!PSSxh<|RqpjpHNw z*b?qYcxi!M;j(oE!F>$_?A$TGTadhkfvsn%5K6B8w zU~Leyw&qK8dAP5TKZ-%!#Pib39EHPRWXQUD8xE(G@k39D(MOeN3O}s%C3RgtcLX0d1Fjm|I&d!xPW{m>1F_Ri`<=St*T_lo6t&_Pj36B{2~Hq zkR_+XbauWm!>WwtJ$6eZRNA~{5!-Y;m3HvlLsw}3e(xW1Eb=QRUlBdsXJViuxwH~% za7MU|#93bCO$^n1bW?0drl`_>cm^k9IVQalYrbWVVv;oPzLMf7nWBghBEU-_$cg zm-GrQHJ+mg>yX$+Ns!~jEYjZ7BERK0BkwGcH^N>!YRMkb^QXN@kU-)BX?slNPqFMO zMPND8h-1Kek<Ui0P@3TqR+*H~WLf|?ZSLciaub@ked~?y@VD5b zAF;EC)Nh(D$Rm0v9g+IY9vf8QYm#}L;`>NVJfT|B$Fw6Q6CjM8lGOUHdU;@IuIcW{ zYpzH1hg+&qFEU>_K)0i*e3Q=E<}nNIq&q`B5Zt#0J0LbVme=^gq3W6nA?{<`rg!=H zqF7rh*9q07Pw>tjIryT{y4nAb+mgLpkn^I$(Ykngngh3^0$WrI$U7Y%f4+g1NhcL% zmJapa9v8F7FhBxbfLJGFEeXXW@_1Bul+-1wja&yu2~Q-S)0D`3sGqb~-ZatlKFR7n z2<)&TIJRs;;n<$m|D?11Ox3jT!Na-Rjmp@q%HWK=nQLd`kB?^>`?aOjkG7ymNIL7a zmJGaW!WcG9b%GVD6bPW*$0~F31yM*`HNd@fqqT!A?CE#J@#)yJ8|Urb0{7xq@$moY z>t7$KJ&!a^YikY^Uka>4&5KpCn^K+htg{|Q_%0xM%r@Wi0BJ7vzA*@wrv$3ruTbvf z1fnrof(7Z%B_>`{HXj@vH8Bl3ief^M?phKmhGaMkX_P(<*Bu{?p zvu(*wx;*uCj@rOFGsnggZisanFWt60@Zs6+83Cu-(XTQS7Z=%pgxSeiW*eTC3=>QF zGIw;*ITBLP$ik%xZblqssrRT}^a*CZDDue}lI%4j?B9eXq3qJ5%tI|ZMF;gR;S0ne zS+aUj2i|2z8is2SuIhbky6J^GkOPij)oSHCfHYKYY{*tQV%rhv6ht(yrd}DbL`G}V z)jAde5y}BeWdTZC9Z%E5r9Wkic+Sh@q;Wd%V}GXfgpru0@4Nts6C3*9t3umjdF)Qa z2t|$vX`mq(13WFcUx=3VaKQRf$GfSkuzC|J2%p|)FyQy}4ZZSJm228!j535s81UW# zP3P3Yi+b(R$9n097@fq*%1qi)vRcN%82KcQCG4fXg=eD12DX z3lw?Cz;SD(1ZDdQ z3z|j(nAr8O6rS+oAZG){dyY_PO+!o4!kkSCVC%ERcNWy+BUka_K)G5-XgN6eSQKY3@< zU~W591^%3Xw6PA=STZ&~C6PZ&S|>9W-Y(W+4{1DOG=-^jp0PMBQEntZl}P{%7(07< zs5PtcBgeani~6%W8N`gvFL(+$>>tdJ)wxxx=1(Ls@-K3|3>Y~27iehcFW7G9e}RYp z`TCzKR{t$M{^!Q{4->e5=Ek|||B@9cyC?%;Rxyk+$LpbE}L`=R3nw5FJ>T`9) zd&$+~bNO-e6fXd#8Nz_Ael(nl1}H_3?a#>KDLaU&GPB|mTe>SNJWP#I8m)A9s2qIY z>}L0JkQtN96GW>-CLAmQ$-@+ozw&=t6_)aPQrTWgDC` zU(uAROvL20{FX?bSINGy$!0QsCk8?{ z;JjOxT&Vub#4@jvfi#Xju?}2hs!+|S1iQaww~l!-dd5|dySe~+q8g_9=Pq4K>~KojOY}UJ9%Z+RP$zYNMf?s}8hPf>UyG5Q*^m#LrPi z3|j|ceE4tmNC$1Ea8V^fj&n)H*75oqsOFPXSfmddq<>t!Fo=g}e#d$ZoqC7A@nIv| z{jwyQ!_D6py_gM(m|K2EG&(`dyA%<^IoWV6F9}1VMIW`&Y(Ft7WZjER1)|imnr2r^ z#a$Ols;WBGu@tffT9J!sg%^$~1R{aMZGMG-YDu}%Hq-n?>U)Dta= zXjVt`on!^>vCV~oD)wqe&*@;h_|7B(?*!~i{#*s5(eH)B z<4z9mBzpd&*w8|_q&zGu^kOe@XZ=0gBZ^;Y%@GndB(4}2>BRoBtTagPaKZ;L&-_jh zbR4r}q7cymBlCj_5f?oG@+lcwO`!!T)G1n^QePJAvR+x`G9D)#IJIfgg4!}vHCe#G zu#~Nb8aqNsmJf}mEv%G>aX4~bSjz1A4Vy=MpzN)N?PQ%P2K@XM!4rqbm>b6cw-oM}$Evkefu69tI{6c~2R>Q7vxV51gco;|j1X*rMSIM70@ zC6_6a1_=z_mjoZw4c>nk{`Jml_QTt+k5#%mX!pzA#Wv@}k3I97Gzm+xZV``maN8T` z6Z;ob+>=8)00;+Lu4u_q@r8kLqC$;gb8T=uco)ADkS)Qv1^I%U#P9UQ@ zEvW^(g49-yWJ3Vt`C+d>(uv66w_ay`LA<(BJe|mITpAk0g|qXRmOQ@;!dgPpn&qrE z?Jt&XMdQYBEnCA<9~x8nv|8uv&b!>MYB$9n1)lWBzSm;&JTiRfALm?k_PE&V`|rO* zi@LHXFxpARx#Le9@-Vk28qs+*lV;A{zPNrDnJA0VR!8z`hAyIXttt>b$h$Gv%WkYdin#*{RX&h2|IZ*-W@s=V%1 z&>k3Da}|AE;f6KmUYM(nt&cUA+bYr#dil)+v|GmL@4t=+V6_?@8UO{l_9gQ`SJo6G{ zWE-JtXV!KvAvMCCB^1oIn>~pv;kPey(SrNFwbgtSTe-_`Crh|^*FNdAY1jdjPLo3L zFa^oHI@!{S43fbOH}0AnRJ`gf)HLw8|AIDRy({AweaQD7(xoRNGIuEwDCv6fiETLR z4m7iF_1I{*UMm`CI1CBZj-qa2#S%)xBMkp`m&@<1k_mT5693s@QP`HL4OPrH*Jo)! z=3PO#r4|Gp?ei1TW0SS3nDK=~?}pR`E6tQ=U#JJ?)bp(d*nl{ZlucCbI{uQ-ATQ7C}%yWb;y%V|q#la&jU zirxBeKN`Cdoz8Jy1)EC$t$e%-?~21gRh zRG$v1nx!v;+&FCGH@47Q*KIWr@Q^9RzOX9TbcJFScvUUbrxGZ(keF1Gd0|TZZPhE| z=SrzURb{%jDro8z7|1%oa+N^es5W+y2$9vm{gDJ!8oA5 zMhW{12}1K2s4Jns9dhoNK&>eULQX2?Y+}-W9%vqSDfXd!Vqa!c7_aPnB9GURstPV# z>M={euqkpC8ia3sQE7y<30JLQRKs13XZ1_QLkZPN2E86eUBRajQ5{g)BiyGS^wiyH~)E8{7bqCRJL+PTX%vCr3Y>{|z z-+Oba=b4y07bU$?vn(q;{XpKh@`!EI-up$K`T%#;9?~j+NwZWT3g&}E4*tK8n-pASDdmX z4N3em!$ZD%u9Bz$U`?9Pi!zOdc}KXgMM6b#rmnsQP>Xm&(!kjHaB727Shh);V9`c{ zb#=qq`kmkF&m9a;eD(buY6jaq9Q3iNy)C{`45+mm~QzVs&9W# zBaqH^j7Dd_dkqq(md|VH*%=uKV&;|t93nw*f$P^E z8v^?$D|RK@o(mEk-ztR}ynq}-659C3O@3qra6JUxI0{K-N(FHCLuVg)Ov>EZRp_(K zBf_bj*o3OU*L$$JHHYGBJ*qrm0q}TF{*IW$VBJ+S>@_Jb)0J(#-SYPViEGIISO0YX z`XK$nZHwC(%oYmc zQGd|@64{T+5*|ja$gbm4&TOA(#uwao&5Sn}Mry4F!&7(T9|V@6BL?$ldt3ow%}d3^ za3!GT^oCC`L9$^-y!RZEB^8d3HjujaSLdx~S4zckz+p+Qu%gCb`&N1irXh=FGsP)^ zc>$P<{N9r$Jc4JB^>3cEn18}P)D%Au&U?`hd0_|9D9M|TG0RflCPSg1{s{e{9)4jc zv#~`SM?OhDO1HzLi~gBEKNI@%kI)k3M(N04u*p8nJ7E|7Q)duV-{ayp8Y&MR*#<>x zmTv==>Dqxy$t=UHXq7*)Dk03u$LYsGGv`3PAXeoUWGB{))!?|*f05pw+Ie8$od7zI zX*hnRIF?GtC$KQ5AsI+1!WmbO$NI+Zu|{?X|U$dLz96AC&c>Z$WOUSGZ8yAvaMJGUNJw=N~c z;En3-I+O-MZVhJN zV5jBwS+zVq^jHl}29M-A9Mkn{TcoldjeEj6i2Sa$JR>R_=ixj*yztE){qm6}KhdBw z5kH=ew*@?mSnP6hOss>?`QhcRjvOBE96u{~b~1O!f}~pDJgGiSU`vvWn?-%G_8mt% zhU*oXcDk#mjDLgiNp}~dWKfB28_G(RpoA2`x4ikeu4V~o=G;Yk2JPz54>X*h0kLSi zFkkhBs6}%3=lPe7ax+-QIljju9>wbEweq6u*M? zpq1+4csEdoL4F)JXA$n|CyZf$o5&&QNw|}9vnh0RG&Vf62n{bqy`vkY!(mQ(6R-Ys z;bB$?@KH<^%SDp%QIhVb@1uX^gwetTgi{=?-xRt;PG)IsTGm`Q8?kr%!Tc(LYeO1l zhWiX%SZ?+agRglP*j_y4i$6pDjz^HdW2LR5{_WV$W28*2P;`H2*dN^;qfkKvBDgH6 z+myR+`u+k7Zk*ZsWSCVdY<6jDrg?DHqyq)<*Tv2wPze|7BrbCL^HI_UyGW4{CkMFr zeiVQr=+uvDl|u|{)L8!v0TSGID&e}WF20@Jky=V)5JCV=`+KP4Yv^a^UotI-0Cix# za0fIQ-31h)&MDHt@cb>a&oeboAgMM;ES^9t4JhpEWX+5a2F8KLN%bCR`Qd^ieKyCB zny+sOlu0s1*J&Y;r3!u|d`U}_!9idbr?fS8a4(=_gxjsndKg6*dDh>u#mcbq?s;p4 z9`-4O;|)mjl@3T7?q8RGoyPE6=!#D;)fL!`#lxQ5EpNfT)zxU$_j|hy{pPNzuh)cX z&{t{nhg;@QtywXCUygdX~utBzY*kgx>D^J7=JlOm;|fddpn$J!)4>BGEY(k#8)y zZ*?(GJTmQkI^DxH4qOy4`k6yXT~$rT*#JuFZX&b=JWhRW%fJUPjvcu4+=}S@}H-X+wY*J7YOX1T3$&% zF!_5je>(;cB4`#17rUY>N38Hl9OGwtfGM|apu>k#06nffqCNtxl0JTAePqi10e!mw zU+vlA5|VKYxZD1{DfT;@%^K6up1Hh0->FX4%`-8`tcX%$f<|+@rmx!oul-e5+JRTb zx((ALaou}>LCFse%E{>&FHOa(bj9(+az|~?#o?l5?V^v`9*ewXEtz_YDqw54xyv1@ zr6uZDt3lDxt#8!N4EGvuK+012*u@&AYt4=p(ElXTj<&~KPlHtNdvVNq?s*3gR02`n z*~6hiw8{Z&UeI#@{i?1o!OgFH;;KUw!Ki0qtvSpp2 z@7x6&&WoVPiS3jzk3laCn#26b++=3;P~8dL zv~ZnE*egsLk_p|Jck1`aVRO~@lDz{riR^gowVKUyz=+=&D3)RGzM`Jq39mpPyGsc8K9^B3QEijps-9r4STKBB*aJpU*2!hb=YLM~qRCjajXacc6+ zUrKT#Jt6_$^jai?f?=&u7B4V$xzZDehDxL`l5u5EtvbH047s&Vf0KJt;q|%h9};Eq zX3Tppj&U%|F3?orSoK=%oO$iO%FcYhxjW1V)#TLz0+Q{901Vm5=NQ)0&hk4D|vW1|&jaVmnK1#3U_9Wn>mGCD1ALab z55O(~ytkX~!d-cimyunHo%5%d>W(T{^~{qHRbDr5mdI;cUgSwVWKHf8ue9sOS?3-| zVdZ{0n!{|#aVt1NuHR($lPK6FtvN2|+OgJx2yYG~VV&89TEPwP=fw(B?c2L~n>+4* z2zuqRdrZW zlfU4RrmR3nw5o|0yhQxDQJe~R{fB3@WhR?4@h8?!`?t2{|C80}zZTv^8@}Zhbe=0Hc2w z1Tp#5GrsLOaF}N|NnZ=ALi20Dv7(te57{P&u^nAKvCwCz@!M|d*BSS)dp>|JFyKAW zdn99@>lSh#Pu5*u1T~iiRS}1K3R02Ll!Yhr+e-@_=y&QN9j(b}mYfg5l3>4-3OZ9Q zXDx*C_7PwLasHV7-2qfT^ckZGTt|hGfVZkE=}^L!n9aD(qlp{@6b|Hsu(YvEeH}1O z^GHqO)I1q|Iq1lKhqZ5plOW!B?_d?hWbsbp%`{sy%QIBB1I;u|7ri^_Zr^IP zw241(LytcM15l|&k64}c7`phuwyTvGE`&i@EL`=uY1VM=m$%sADt1}t6OV8phhpp~ z5(^PBGj}mg0b7`pqETG%Vo{&GR z%dcZ&bJAw4@Zl4Ow@`jebQ++2wdvj+j$;@Oq1EM^-YQ*$?QcR1CqQY-@-8y^K`xFQ z%QoyGvrlJeo<>|r1dSqk4o5afcF=;`9~2g(r;v4dXH-#2btZGd=BO@BO$teEQY(Ng zZhN<)LJXy!+ho?K>uqRk51a#ydWEo;%&tmEb}2d9Kixp_0=*BOm@4-O%CLWDarlyS zLr&2H@4(ifHxHw$5e%N%r1tl6gHc70%s79DO**DrUX)EQt4LcxHqn&bNQMBqXx11< z67X3zf1gA?Rsj&Ha__~^$e83=Rjk-Y@CSNzmy+ehCV2{*MD;Gcx@!!UkwZ#S3zQ~i z32_SR!KEw{5)Zg8yicZ1HuGL%>f$5vrm5nF8)MyngG9IEBBlWR_j+f!y|I-2zy;ng zyz!QuoOfB|<&I&T*z?Di6*a?!id(#~FR?GKb&tuwIY;K?kX z3E8q z{dGEA`tK}AeR9Pd|CU-$@L3xBH%4dTg)dV zUl18$+j=r6H6H~|tEN^39Q4uM=h%sYKv69;j~UwHzQtH6NH^C2&Bm?5_0KGtkl`-p%qFD%S)iT!C#? zY@znh4=3TBI)u{w@DLOgMBfzUfBz$*1gE%3rOE)^6EwL!@F0Q z#K+JaWH^dPMW^x<^%65iAyFRJpTsDVIHJrI{vXobGAIsh?Gna<6I_G4ySux)ySqCC z2sG~Q!6mr6H4@z2-GW1qAVbbMQ!{t!-hA(^?@w3%+FjNA*=s$%PWDm^Fl%-F1MXe= zCGr-nGYO&H;)Zc(5c+<-!P=83P|}BT%c?`C=xn+v2J4A~f(L^>h9=`K_<3R9@%8=4 zJAzSw!Sl@2D{7J}Ma5=Q@byXx7GHJ5$KJ?Rt{;nfE$|X^G|&!-HnJy-lhXNFNIbXp zq=IMqzVaG+13o`UsqfaMFq$c*V#Y>>0>YXLYe*EvfyoNgKpjS{`K9@-aw6|`wv3a~ zq$Ud29Om&owQNGS>5hpi&13XcY$lrYAf1{}4}}eI@=I3@b(MTgz(s*j383VpSXZ+}bIPT3O&)NsXrBWO9*px7tc)MbcXBUtOBLD? z93vqG8t#7{bG@(UT|4|WIcWeYYZMsxY4y1g({ZStJ*0LNK>{Ms?ow{jWz4VZgdXnm z;w|R4zB1_JM;t6*q%+Ov%{aMPt##Wq)|)1Tc^Se663kEAF4dp3qwbYq>RB|*Xs_Q| zA(M$7shzc&z=z}LFT%>V(5-lQD-=g-QpYcR;QQ(deNSk`lqZGV(pcsm+MP1Rt>*rHRzXdPN+<}ldYe28J$b5y0Aqt%D%EZ zN~V7;;lu{~(9*MP5eC&NwuPKa9Z%-l+zGsK_6}YACWfcsL>HnIHEm_*jJ3f61Tj)@ z*0G+0@dM`o+SbAIoxQQ`VK>+zSET)7Zc~$X0SiGJWE%e3rqo)!{LA&6+un$}f4w-+ zx>EvSR@LsVY8&5+omT^P72%Z`#B>W3zu1w0g`0lMI03Rmw6$V6g~oKCBvUQdQ>TG6 z*5xDR#}G(l!`rEbX>JLg57~-V3NF$YUgc4Q7)CRXB1ex5N8bKnHw4o!_+d+YM|Omv zVU<(mhXP-HIsir=CNn7O#NLGGltnyJkQT91D7uL7d7!D-_OR4p*&G4Q-=_{f0+G)r zN>PE<2x1}SPIp`D)daO)O3wABK_Nl;3w}m3&QgppL~Q?cFh1tP z@|oa*;2p+8YEE91CU;a3cDFRWOUf}vSkJu5`F-y=rCG4etYAb-@AgAfMX*1VyRF@K zRs@3?Z8UU!p1t+cXkLlobk@~L6ZWY1m}mc5T~l9(`GF^RuzrD@WAb@)?5Bu5It8pW z#J(VpGs0*s%p7&iD2~xElHA#p>sr<<+bkO3s0DCfSw-Z}EpW{mvd*SsH*WiaV%yWC zqps5n@vSr3Id!57D=jinP!71c>USqdUgF<(FzD{1#IQ<&wy@ByHpiqVgv?@Vy9k$C zHn`eWJoaLcJVlrUF7Qbl#$a({vinuPF(Ov8)DS;XZH`fG5Skx#@a?RN2I!KjIJb*R zKqHIcwV_mnJ%HuO6D9tYk-p$MNPw}bt8X`oLVsU@*}Sqh_nPTZ-<)-TVgH50p2;Wr znKI2M&jN~6u}WcMdlsP!UgZ+v_f=E%VSbN$2QiiR>;BK&h4Y`e%hdS4B6-3;p7btW zY3A}@oyYh;IPZOo+|ABj{{8H~?J)U$X%mhZ)=>A*-w< z&9~=Q%mB71go@i-^v`J%5xd8Z-HV^~f5iIKFP9qdE-}b^4}H<9WyZ_JSID^Kfd}>g z{N{X?X<~d5jixiQ@Kev;48ArfF~@oO_+f#9kFC^a*f)2X8Q$^USr+LyXvVBAvBi}) ztsu<0RaVj?aG8%YBh~9PX3U?nk3(WNAM?8}I<4NBN0YCgHJRBT4~wprYukO(s%=wS zEj$ibu3A^rRB0)zu_x4GvdcVCKW!?qIgO97%$*{ts1ZY<{CHhQY-)KCWH^5n3VH5 znI!n~S#HhL5Lb4X4gf77I-Clx6jPdjA`(SXZ2Be8#gU9$B#WfVG?J({UQyXZ(wQ{b z7f8q%oB$~jK~iLzN;Dp?zQbtB$t+#EN-Lo*6>1b{A~fs)&lQuEKo2Ay%1`hEkj0RZ zfdkB9%*ZB>k~E5;8a9zFShH^B{d*_a8rjhRL$zW6wufIghuP3$v6_ zv8rTPjYpZQy9lwAw3fCOw(^#=FbdSq83jDG2HzWQh0#i687Lv9ejb?TXt}Pxg~m%% zcpZH(rOxVC{t^+pUnX;v!9u*33{G7yzp3fdM$ z@D@;=*tPvRx=}+j_1a5t#E!}UqG&DtT1`?~Yh=-g%A?4Znd-h!HF!j8rd;?#bJ2W= z^toicn5edjwv1@edg=lOlT}p%RFI4h<(Uq0>QBiPllZuwqAT~rRA*%kIY={4Gap5z zSMnP2BxOE@kLB+9Bc94rY;8Bq!g#mrx(efu$W#2-u9`K%Kj*>|62S-@Y=U8J5ef6O zM6tX%M>WRR1-rkDL%P2Vi@UrGj=Q}~BILb=p+XD|ZU~LPflZya$M)`i{(Cm%rW?gR z^4*7e`(v!}2lx3Mg8l{$QQ_Z@T-nUU!PedEpO#d+sPT`zf@mR=cN*v@h(>`S;gt~~ zx!J1u`i9)(1#H>kC3lV(_&p-w>=>e1<9wUrT!&X3>!7mJM6&(iddj1&<-+t6vX=IC zq)SYu0E(HqyBUTH{S{RMvx5NWmox*e*)_^0I1?&oC^un^;pZL^x^KKjjBEbJpHxUU zj!u#Hv`mvEj*=_Y$|L(bZ0wP!fH%Z6FQ(^{{^AF_AH7P|4tD2A0GZc|BRWrk(;gSzx#utl}6>kn9%t4 zw?RHaM>ueh(?iNy>b4;F2|G$KBJXsu%sDxx4W@s5O|fTm+J<^i8sw={gbru7QgE1T zZ9Z%w$aS~?nQ-iPJYTz!KzA}|ZF0nK*^Q*U#^tZ`A|z+t(et7(Ht=Bhg|_is@=*mF z#}IzMHVyVXvS)wsrzZD`U`F1RMQ@R`7N9W&)3a?nuF1NY9DWb>JK>~Zn=)d^*(hnq zcK^xCniqP1qWRfkuVASD7CW|dBr&)cAWPjPC(pX_J9BNIGbouV22N%@WE0jx<4G9> zw!0{)oGrx(wL4bCUTwj%C(4+dIk&ZF9D%1jp)2l8*Yt@2EtkXm>Ua~|kLnYUAxWjT zTl!lWD`9UW?R%s#L7(9Bs}1-8F@%=()@&BJrip0Ag2z6#KQ6Y`y^u!{?vW zu<)h*PQQ|5Pds4t*~ucnBoscy`p#n)v2gDeAih!#`G8LgVh;n)H^!F}>peJr=eIx& zp?o0PpFZ7X@0O>SxU#-fmg{7kX0)xGl{PJyRIRZ4_(kIVXnr_GcfmW2LLfy7`cdXy zT$W<~=_GQ3YL*WM4r1QRcUCqM0$br!Q?}6H<5KuzAfd-YY{wab>}si)k=+|t}>@Yj-gf411M3Fn}=Y=&P?WiWWoym&il0Fl8H#rCy8KaccV3k|=LVYgclo92U zDPK`&Z!)c3JKg#DIGk0s4Pooscyho(Nk-e12IGvGKN;`Jm5d5x*k%GMyL?X%gAzUaF)YJ`(2@W|0)^ z(ff(<*M#(7fVcm|-XUsg8fp<(&;$_dls*hm}s*$m++5hD>N!KLuV)qQw(d!KvJ z4f4Yzw)d7_GxsST{k9!%@t37n;3qM@N$yk4JfCd|_1QBB|7dNUe733vv07kmXg91K-x&4k(>LN6hKTWoa%7wfFM ziPj5*u+Gp10GfK~6sN%pAJE1m!WA;Lvqp#Uu>57;H5i2g&LbqtkD&a3e}PrfQ*a&A z$H>7^kfggHEn<15HZU}6oS9OLA#Ez(s0odf&063a2~0You}omT2zI0etSa7#CKi0S z@>|qk0e7eU(MLe)>o&ihgF;8eq;H#g<5C;ZW+8*R|9fNxA7fD z*<`JHS>>33co-EO-Cmc`3r1fWvL}zLv-t;NJHd(ldJfN9GRSMD2B{FV#x2RW;3e~lEk=dfO?j~2d5h3Z%Qqs6at5y`^OKvMO(8Vs%`%bXzQpB%+CA6H@ zO>~al@vQ!jnTBE^%@HhcOinnFCQp0 zYCoxWrdKX5T&maNXeJ60=i5(OA8J&J(=wH8>owyvo&eNxqs#4_3$&`2_O-xFcn>^y zBn1^&znm18TAGW)_aX&OOL`zLTz7#Y843g*$?K&*3eP*^oPJ>p1h*znR&G#@p;sOs zGrN<;z)ppcJ?G3Zuv8B~#ySff+5!ngeUnS(=L~a6sVp`?Xs&mWw63nUC(8y==*biE z#QnJYy1%$U+b+8GpnmNtl+&-dL&drCogC!|nS{tQqo-f~Y_##@seJsFN1CwTRRsm2 z*j=?EJ92GktJU8VgBSwf`0Oqj0K>jS>dqFj>Yvpks6AqCMeLD74~JwDPNBqssGl_V zfx3qkE~~GD@*rEhy&YL3Dk~Eu+kq8=!EkaM2Q{ci(p1LEASe}25BIZs7KnGJWhEO8 z+bSQ3iO}H`S-QC#Spke=O8Pb~Xg)MyZPkGztV*hBh6*}DrW|7$%F?RPwmLqnDu!Xs zyh@FWij)da*5U)_L!UHn(+&u^XF3 z8aFeHVO|1FPrlg7seP)@`76LTY#p-I4g{a&2g$n?Q={7Rux6jzWoI zg-KEHX+*^e!8uTY{&+ExXc3YSaNl5m)O9l3UWx}v7yLrB@vT(U`nH6WTQg+D6iT`@ zY%w6y%uyTCn)t7s%iL{CJfM$5;HR_RP;Q$okv$pT=$0r06ZlH02_e@jID+_U88SqF9A=lOu$q3inf$S=)!DqN0o17ZAO>V_W8 zf4Xx$gr(bSt@>dtmG4|e=v)JQO>YePJ8v9(jk`-RJJ&GhE@^?##G>Z}t3v!f=ocsq zFT-@GjjcdjL^RKyoj@91$7Cp5{FXuR@vpj{I&?1{oaKC+@m%)Xt{C>(hDY!C85ZgE zt8_Ya-#=r$TDAZBg2A8>nfh&Dbbe>w`pVgFEKiB44Bc^a)2(=K$Z! zP6sy&DB<%wyF@|ueYDGCjKP8Z10wv{ikQ9DqOQO>>mo_ax!mi~>lneh#01&fXP4f; zCWWjhzKa3hxmDzk5*&Y6qGR^1wD=B+|5cLX-$^(AWbdSVtTp;1h~rc1lJ zR7)+r5+K5<^*z{U^?S!M931NVyLqH_Prei;Fc^evU1;Z}b z?-j9c)eo%W$t?>VE_2;?pr+4IXLtaO7JJtWpzOxOUM7n4fj5J|4AMf zZqb|WIanfP+-L1`(%El^@TZY4))i69dU)b@r^F%o9s3(f1s$#gCCdKxKJ8|aNz}mR zg$MEKd2s9xU6bIP$wuurO+X0c1*3S*Gs_3;Mj9maFi0@uqB9 zB67W2Sr$_gbW($?A_KeO*&MF=0@}L*bn}kLspO1bMsY^s(5bCc^4fN9aYsGCCcRgd zx9P7YRAL`Dx^{=)+1B~tEsOM8BgD|*TEqtcLhNP;i?hU}Yle!)vi%M>CL{vv!*;$~ z?%Vy#`{vPf-qcRqFbFb_M|1$Fp;qkL0UY@vmyU79S4P>~*gC3?9;u%s@*$F>AdF9? zY-lnKB@_}@^e=KV85_xC)oBmVri#S0Rhdcj)7l(RY0n^!sPwm=HXTEHpQBnqPcD@5 zvNuYmjxdiooW4osQqPQ<@4_7bZe^fOW<%b)cwd5K$x~QV8|BC|K9sB1P@3;jm_xR( zptVUT^(`6vw%mJx`x(Ud&_m{rp~oL)ZT_(}RZC|x7fT0Q)BoGvqW`Lfq4}R1CdHJC zWCsy5QmnY`p!-H*6A^JoO96>RP+rvAY&>eM^5|rqsh()!j(i^tpZB0XCtbOog)ztZ z9kq7y9eU;5WaSuicl$xr1VF*xxJO<*5PA4n%+_r>t~T~5t~@uok|1B+sT204T(IZ5 zUch3#OYlTpflq^zy2<#FQQ5W7J+jPt;2v`|HeKeQI49?M62G@L04iu!`pnY!W7eZ? z`Z?;}7opR!z#s1;AQULNd?%I&FRn3DVdPzex~TCj+-#vgwv)4McaTy`HX^ADl4Nb~ zt7gp_Ovh#Z&XNTARnaj;NUO3_^Ie<>`v5Xw-Vy%;`k`Z>5W!qR5DY*`Le!jjN~?2o zSAb;R5hitrF`Np4L{XKQZJhB=ASy@;&;g$d*_UsBDr9G|NL;y7o2XE@)2b&%6-r#i z1TRok*)`|Lcjft|?IU6v{n0_nd{c{!*GC6Y(AIA$9G1cHx$3m|YEB8Wu=ayHHw_L( z&pd3Grl0Luc%L(Cx?0J82rY_y0jOLtuMw%lK6^sV16+A&RuCYD%_KqIOIf~D=EvDT zQ+D{;qGz!W>jo{N{6N}@MAM47dRbgkqCO68iYyNebdG4~8Zq)47k_E>7;g4E@}X*h zC;5P>Tw|@;wY5MocKh%c_$*3YJ>V*kr-%u+Uj7X0R=cEd3!aF#c4oC+lGZ!*SFroB zSK1!=-Qqm{XmPmzIoP#ywX^-Nkn#`K``1~bf9KgmTwMMo_z6+f``sAV2@IvvL_UEk zr3AnGB0LHfG>sv(;4T#<3a{!r)i3K&vN~`qzn(1||4?u%gi7FhJxuXA{_5QQ8*NC7 zoV)XRPUm4(JIl-C@9}ueAapRV`l`;vjd)Sw6S|Um2ckwQzIRN+QP}cZ&IVk z822cG&{5~Le#I~cD=X@5v6`(m-`& zinC;IwK4jkA8!0pb{;KC$Qw(18zt~~);Z-;J)x>P?b|biE)iqh<8AAe`;cdz!)bD* z9oVscFIp6^A4xaF1|o+_eLz;Cp_g~n=_Y7VHIV*ByjJH5w|#?7tthmstN3@n}!U*>H*tx}`Zuhwy?Nn9BEr6t@J^qh1D5Ib_f1Lhysu z24(%F{v2XV_Iuvr0U5U9vWzkBZ?ueX9kK ze1toy*ymasod&oTZJLtDLU-K+VwP?i3UBE{qn$&15eaD~ zv=vQg8t<&<9!K>IpRFv=l#K8zpO-+4x<0w;wHNK${UU%Nwgret*n`0;b!d>=P>uPq zO!ri0kA?UqKxJEmELml>J>8$!B5L@Rl=&VrH+Xu{8Q7Yo{eCsLy}RQ9>L$LUg{rG_OAn$p0b3`G3ETcYt^B_?=x+HnV?sh5vVkAX`n& z2j^WVK_TE0d4;r4>XRL{(5FY}s4{dLLdqgT#SGD)GHtd=5DwE7BS;JK#^ql;x-G}r zn3j6CPWyeyZ~dPQ`8){U%Xtdakv=W=IX7MR9fxZ?-7k+fEFd&XWNWr(GzRHS`I*_p zE8e9IuJcWeDRmdFZu>DyDu}KnwGQb9-{kb>LZ&fNYMu%EfGgm4@#RP5(@N}_h@zvz z^D$r2Q?LltBp9zrCPd8JOQ_~EmX9sPOP(dM&T(&$IEX?zbzOxb3A!G$s_s#_-AVhth`Yfy^f|vcMJVwDzL=Xh@*MR*Q zWa=yAAFEIq6FvpZ*%@B%lfMGh%>>AOt`g5G)pVo2zLMYjQ7x2T7X>f}$;RXjAzgxt zI!w^7<#|pZD+Welb@C4_i;*LnWY^Ej2DNEF(LgwcI6fx%zIcYaDf#fJ1LE-K$x=Dh z${DMSiGov|qHA6S(D_nwDi+c5iK2|+<9I(85>%srRX9lT)res&7D-ndg(Hp7$hY@= z8IbOW!SwOvEXmhuQkjK!m;3mj94v+H;ND)WR6AEyv;MIh5HBtsM78GsqxS4l3nyg- z#Z1q&wdou*BBjWgtNyD0r5=T!E3HVk7h(8{+-N@p_~IFv=rI;}9xQV;ozFC|+JY{O zae-8o>&X_fftpgu*kN>$uD*!aDjisiQ?X&FOpL|}?3KwtjC7x6JvvsHZB)Xi+#uD?05WPCgtF}R_+Cz%j;4+5s zcz%SJvoSQ#gx`O?@3TKjjz&gWj{@I1at9dut!Cmwb)_(mSZYwY>4 z!}<9lm0jiLttwFucgNOFERU*Q1Hl>lO{wd8C*tWaLl>K2oL`v`d3O~?n4B@)%D)f$ zaf@c}?(y1+WUVoz9q+y(-=tP;Zyl9b8Oj_Eq&!0nV|QM?+! zPDEGCSyABP#6@u`B_%m2Lk!HZ2GO_yI{D%ZamGv{oz7S*O?$a7TVXyi^{`+XUD_>t z{uDOqJ|dK*LHZ?BvD#%Jj_`X9P?1L7Fm25@sStsrP)lR2QX@FzQK)j#=V3mRWv@+PfFv1gN~47PU2JW@k#meOHFo z^NiOxgh)^w5$0ELEj}q1TWo`IBnn~Sja1pw6)iE|QX<%N7?LTREr{5872?q^Uh{;8 z3}KjH(mW_TQ%bDV`eJ?xT^*ks)e(W6GrAZyVkQvnS~R!4vxYnAQN=IDZdCvpgL-Hl ze~?vx)sd;}0K^p%?3b2IEh~Ix^HgKF_4+Pv>KKTlNLpb7L5N(Rtyupur2qgj+fjf>&=EFAzjx*aL>?jlmc_&p{;zQdbs-RT`4b5 zf$rg?#V6oxQEzLF8X7*~$K-mz(r})4oV0ksEgbZ2O@=WiF=`9v zZ=$qC4x>!uAhec5=Z*G-cFHWFICuAzG;hPVPJY^yRdUupYIfHm$Y()1se`-_IjKu= ztljkfmD??Rz9z24>>j>N)N~yt(x7b%+3MbkD~)<_X8!dBq9SCl>+3JKT~fqtJClPh z^HTVqDVO?FFI}}3C*Ad+31ncq;J%i^GxlH>`zfj8roO?kaxV5P*mQw}`*sBxI(v|J zj4Eg;$aG_iS!VORRd4zp_wB zx3r#!F3a9@|4s(@ApQ!idUqB92!G;%KO~<1;sG^h+y6I|a#Pe{02jjI6R}cLI#o_J zrc2PzN3AY}QYNw@wkkVpnUZI|8Q;sg$a0ui{WVGx zfS?KQRWeY$LX>)Tkbb7?D6wL6#MMzmPbL7fr;l~6?=yoggd0WVXTQ0myW*cnkev-D zF)%$@bFEQ`7se2>c?J&uvKVN}SS~>AhVJR_5^3bP`Yr-3lBL@f--nbS)z3Iqv!GmF zKioYaW2#ClKmp$!N;l0H7>~9i37>~(Qn-M2BI+Y|aILrA2c0|e5_*F`yi_FvWHEh1 z%_s1?K4>mFG)QZdZq(IiR-V%lro8#8zRaKlV~WMh*S4EBPoEugsRy{TH@Rh%H^N^g zJ*W{h(muG_c4|~^a$ z4luesp7i`RATT!(y8q=pO_}x{6#QqN$NSHrx3z<_k^O%adz1cu9cJ{GRLp;MrsV(d z%=b=KQ>))XG)A^k_9nJ&re;Ea{n+2DmH%;4l;jk^n2`K{i?CHKUw0MT$R6Hb{DSJCqldY-Celw( z?U&+AJkcuEEVe4_XV#LUD`Zy6A7Grm`R>h(Z-ric*h>i4kQ>Ds2u|!N^GGd5>qd!h zJ}QU}B_`~E=?-Nk%#}!pw)ibgk-&nPo6-21vx`J^j97Y=Bly)5lWKG>($(}SII#PZ zn#D;z;Ds8t)MdS^v;ESVGOw4}$dJ4Vee%MVW7il_Ez_;9lvRT5*-p_yni3(A>n)6D zhFcTC&Q2(TMxORc5w0U0>XKLILpR!E3n$2SR;M}u#CrWy0oT2I%6G^dZ<}+7^}XfZ z`5wHonb$X>o_B4GiaI5~QHnxWQ@QDb>K4e`Z@9Q2IsC!-Zce6uG$-NzpSSh*JyohM zE59dW_~?jwk&-D}zLq+TpM+7;_mcI0ttHkbR(xVlZy4^G!n5EG$|V-qqUjP$R@Zv! z`$Aym<-=^LIp-`@e&Aj_*?E}LzBjsfPXG$P%MVPOXVjOTbTsX>*1iGkr{!4a3}(5? z8KtGv6){FA&)NDhXV=wasYhczM?zx(j~1Y3_A}Sv)D&7>H+EJB7+)EFSQICfc|xqi zufN6<@tVWwtQ#Lm7n>U&^`27-hcVx>%PP5e4!aeN#>uN6jA;~ar{&wrQY~WK`3_~y zBn)I`5anhVVO=xWTFEYb%uTWuZW2A?Ar0#Mgw&hNM0XIPi*{dB!cFK0k6f>w$)6 zzUW1ijl?Dhlt#-M6H4`V?(sdBua0XK?i=+3=*=NM(5W%$@z8V-I`19_)PJ`Nu? z?4>MP%H%vTXxY*UqEP7tumZmuh{h7ikeK@vg%o?ARZrev(f5QAhepCHt=CA*bJ0%fqKk476p+^UN8Lh~3}>Bg0Gqlu$z;6u*L9um(cn=zjOF)0-C3|mnY z%}q3b%$6df=0+rIARtaI676W}5^S(Bfmo!J@@`GE`+mkGEIDM$Ug>azkF@lF=tu!e z_HBErUbK716npvn7RP(@F#ySU303!SO3Z*TUT?_oC(BQ|U6Aw#X5(X7cXV)v>BNbO z9m&HNck5~f)C?WL@e#tJ~@gF zfgOH1&=1}Qr*ZKP9kmqgp;bAaD% z-p;QV$lQPn27hNr^DITP!D)qw2MMm6b}4B}7|y82xOJa*nXcyvu5Op}*Oy6$Zt$gO z0_=~aVvku?qitH>sZX@D=FwLdRJ}$T&_vW#C0G!=rdY4FdmGVeBfOXeuz)c|gT(_5 zjTKbQj1^L(ELT^iwx-UM{_hI+!&?k*EgZ|v2Xj(G_gFe@$l=R^enQ0`BMkm-$G|8)lJZ}je{>q4H%T44ACcC zyU>@B!a{=LsM>-P^pRICh$HuR4Yl;izzC^T1{m)4bAw|r44}6yIqJ3 zN3uuTK0-Z_eQcMS10CzJkqj45E&x!7H&7^Fc9>bse%0zENxBSs@H~D&P6}5TS3)!< zhS}Cm`tXE{;%GfK_=p3HD{42%E8;HAibu*UW9SD?vj`SC9#<5p8~3y`6KH0e&w0Wt z6ED?P7_yS{nK3obfSQF=2#qkJA0!0?Um5n|B2&P(sv@qNE3V{JYSgo1o$w>Ke1i9| z5N1PeX%f0AcMx0HTZQLX-lEm5zo8ht|64aFs2CO&3If^{94 zRw?LvgcEuLW+JMvyeS*pL`|y|8KB%`Jr*q9TfD)CTH#(8sN}q;Lb-`k97MT83#1UKuP^Vq$-{BX_%=9>$}OI?ZZ#Y^t*5ea2%)bk`T|x zeW9;!J~lidQphD*A*|w-Dz;3omsUT-zuz42$yeLJ1gkzsKbE{?!*~aJ9vpR4WpOG3A4ujcm|T9mSVg z8?=F6+$;kv2K+U8^aj&=#K74QkY~wIhT9&v4MWrt6aTs(X@gz1VTparoKp@G@bFv; zwj?--;SK4HdHG{r$$ehrw1ASFSFTN_JmYghPHv9C{W*N|;uhI2UPp~SKXhA62SOev zyz&4#!lZbLyX44eB-}|tvK;TvI{lbdGzF>v)XqTcx-5jrR409C1FBsFh8DUPyU0w3 zX>u=a0{_rgNg+yqq^sns+RL9%^l|nND$J1$FvqEj(7w2ka`lHDW1mB0<{jHgHHjTZ zw$W!U=yuz+z5nj{i*Cm=ZF~>da{ss~@ejS`|1Uqdnt8hZZXf*@c2M~}(}?CzPh%UE z$LxiSbgXCye}E2ZfR#bm3nB8rEMg2#V83cZm9pWrdi*TrPtHVQxr2BqfvqqK88M4x zlGt?2b;vd8lH>C0ZncB~1mh~rXkg>eLG`=ezILDgxSc_8p2ZD#kyuX%o)`7jC+aX$ zk`?4oXTI>lUMzD4;p7y7-IW0+;83TMVG#rzS z_Kbf@t>564&0>uhbN<|@7@^D$ma5Y&llzsl1aCQA3_YHTty?f3t}O@oQRK0jwLw#I z1Z&VF{}kSq;marZbjj=mMtBUKat@_1A{BV6ZBCtDngPbS@RW%uI$4Y95bSb07>l%{ zmZhIyE|kVqsf=WRD*?3PT0uFH^sEP5dy_UqGes;}IG)oetV}H`Pf^>LLs-MH z>`Y3p}(HGN1T=LS77IC82nVUDnHTP;bF znmma}-(<4C0X=>P4-!dgamw$mP30fU!2eUz6}PfC{g)W;AIC;b&t+8|MW6H5ZJ0!CmaD2(wAZIcJ z*J9(SvXWziX1hq;Ryj+1x5r z-~a$z&rnJUJXG*2SdK!a#UCcx=tZ5~QJP}pJBAX?PY?kGa(HE=SEr<=XXsr3% zov)%4l?&fk>K+=@^4)P)AkM}!Tc{rByPmq)kgtzM)7{+2>XGZ~>J=)mJks z0w01|mQ|G%vHS5lqM*mIw#QCF6Z_bV+ZLNAU**J4JY2cwk?;}>pqm?psHNTvegRX> znJ-rx)*fLTzO5WybFADqQK<@Ey+H<(NU4->PH0J90WBR`Xt8v}xQt)4$3Yqoqkkc{ z2f-AafhwNPu?k)QC;OC}?o!!PU+J^f_>DLzac*6zLUH-7xHzy_IRTbpt!Dox)4iBo zO$-8_%|npUN!s#v5^0kv4txYeSKG4kd2W6w-a^Q{WAz%mvLw#j^%Dc~*vrQ2eLu@L zDM$qJJK8&)5<#pg(_fLxm0!^y%1^k<)>vL5YkXKUmYY7p@xY6iekAkQ=k~x+?XCTw zfL{0NOByn#E4GN<8-yYg+#*fObf*xo_;r^|8_%031WhabiR0@9x7I{r^mO^*Po}KM zM#rDnQ$KkYU*)o~^Gl-9U-p^|u=R^9g0~7pHcbM|;V#!T;T)a=C>lCmKA|Wmm8>6C zOD2(Pr=`V2_xlf7pMwk@@E6ZqG+n+z*G|l2bjcae`L6W|+sk4LtOMsMmJRS1cs56U9@uj{(~zA zf=@Jc8k9?X@B}?8V~sVPv3lswv3PF0Mc9=vq)gDye|5+&uH+@czQau-^qC)0%9z zUqV=`{zvQ~E}QPY$U`|M4#Dxzw%e2p@IL@+39qtEi@jKb-pPHE{MEHISteNawqbNe z?;LpMwH#AOl4Prf?aELpri8^*qXu}TVz``R6{%wFGR_YG1;>F$eVKxqf=VRXOsc|U zWR;2j0@`mkSp_96z9$uqHlQmxWT&?NWj7|Gqod&bBQFDpm7VfS- z$9*#0BP?Ua73GcY`L(zhV@@rc&0Y7yChPn#4TO%MM0ksjTiwWQRZ*_+ENi;ZB=ml* zRNw<8&#aiUsV%7P&lrfp1B)GB2R_`hAkd>}oF;s$83(e_Hy6!HAzy38KaPIr7*s^6 zR8M_WDZ?Qc)8~NQpJLJY7I;5Rb>onz-UmvbavKuJyD003zvtE_3;6g-Kj_WaO z`_`zAyA4S?;E>=u{M^YyC7|xz~j8Wm@t?kf_ zj+NR1JZ;a{V)U~ncy0K^H>!9&KWAsWySaV@z%K7MOL+*D>1!|?9`qT6xYQVkjxZgn z=mfS#N!iXprouLi~yl@~$Osm61=9u~1+fP-l{jZs z2QyE2*??m{KbDbLr;4m!=wD(3WM4VuUCsPOV^{+S$WgM&EmMACisSEyYLOf}PfI%< z#23AU$4hUFP+(QwD#&6?zQtVeleVZ%N2b#8_4*((X+9IKzCg^5)I%iaGMVnvyscCXpVBu7Jw45|ua`Jnp5>IR)tB)5 z=DtKkL0gM&{nf*0s{~AQdoN$(|FL}i2c5Kkeb){a7G}=>`mq1ef?yxE2dWbaGr`so zPOvn~brzNd>@$%(iaVhtP^p3)oF$0_?caccU(} z<@YH?)(&pg)bkiAQxe_uwwY^S0Ks@^7E9@GpX!JN`Xq7daYqFvrdHdFJr6Baxm=&G}9UpCUqGB zzALl~zUO$!5bT19=FJH*MMwcg5-RP;T>!fliIYO?pB1O}A|kzh@JvHl`_%4?uB;XX zh7@14w_jVV7CC`kRgE#O)$21gaP1s|L+=&%b3$F%pUVB6+S4~|uEriHzuv`Co3T~L zn{7=hs2dfW+eh?1U~9qZyEmN}7%i=_ygRp863ELMVDMB;@a!cIHH06 zxRT21ADL}+{J3@Nf7BKJGDHDil62#yzLigpmtT)!{;Cr*VaGp;XP|L~lw7V=>0B~4 zbziMK%_uC3KlrslWPW4eTV_=$mzl6{@XTqXVv3QBh6)A#fQhnOnCZB4>$I`lu5=?$ z5bBJH^&&g=qBtVH^@#gR*W4w9Jb5i1SKml<&REU_dL4x-?{JM3TUt{~)qrveekrMeId|Bzi@hqp-uJYrNEz zQvsHU^_U;%dnq8s#aNsd?2IC&=rII7sivx~wy5cpk(z=2a5ir?jFN6Hsq9O;nbG`A zLmf7IU{+*AWNSa;TEbO6HX6>%E|uCRfaWX`8KugU8Vr)0s1DEZ$s~M`-K`-ugEz;b zMPTHTIW^fz|7(l8T*bvyF7Q5mBKp2-9orG;=kqT+&L0Qj2f- zI4Dz>YL;&{IEIO?i{2{m66cO%2}5TMgemf_bOYj|>9g6h!p-bc5v)6s0Y>rabc)AP zm|T0Y_Uhh)M^W@%-ueY392$x{&5<|+Ube4H_9J1$_jMI8tm zx*t8w^U>a0CtQ0^l6CJQq=;6b?NVw(SUXBls zf#w)UmGs4Kb9X&?mR>!LX&IskPTzqnh59Z5v&OK@|Cf(B_ro?czoqAVq6Z#PwY@ z@n8szMgS_{n!K-#1hapkUrt9K_kLPueKfW)lXA=57ovG!+A4#sUttFmJHULfAciRu zy8%}kkPy@T5e&DQXDLCDC5R)}Q~++z(1<2F=!6;JEB@_~g6fM!ap~P1t8-&x5RI<( z7sYOQy$sWNwk31aqW6J%NNj-(wA)Zdf(hMP>3hLDEZlE$VG(2*+tj|uMvurm;~xfF zB9KTwz$Nk$@~D3@g*(HQMa06cS3`$T`--nT;1lhWz>D__C)A1`<&G+(wV{Ro;LtFDPz zaZJNo3Z^aZi=)&jgz_w#r%2H-k$N-LnW5NF$EyBZqms(cF=8er?*F??WvM0%0ro6_ zwn#ua=ma`~XX!{u#(oE59->YOf5%Ajq}i8LK;CyQziQ*CnhLYh<63kX4Hqv#iNKCU zH|VLD$HpUD>8wxUm?20!csD`t@T|8SOfJelAZ`h_XB?98nP(fHdpO^zRf{~spV%fQ z19OBDWsTX77vdZ$no+6gCP```)K4<2vV~HFyz;Qjb84rVl94@)Uv!O?1-E_|q@17p zCN4YELzKo3)CG5sp`bsTT{wuC-iWP{J7HT=YLzFY+_1p!U+G>(r``^5Vis-^J>b4b z+<@zjD!-?Oh;KJb>62sd6$HOePgVNzEYs{x?qi2*OE|Ok8+2dtoI#JC)KE#?nnl7I zb^QF~f>>}Y@f50LW%f}B+o*p>7^CXlVy2nAl04zctDSuy3K-j=M%8EuRKPS1Qx{!G zqBseBZ6@_WJ^)G_h+cAIp%N#_hGg%x7Z@ao`pq?#v6kwuK`o|WspJ+Z4#D&XbDDBC z&nsy}TXqczIva>1yEGJqYdKT*Ulc%lT!@w+pY$v!1Oulp+w@56A^ZyMdSZt=NMXd* zx%{bR8v|#w$GSwwmR>+ha)Pa~CbwnNm94WA z$Pac(9Q+v8nxdby7~+rRI)$##C->`9PLIb(=MQz7wL7>ItP`=UB6x^c< zBOTnLa}kdo*lK*idRTW0malTL75!yi4~z`fK_Tb)!XAf(x%H$o#vBfMtRJw~()jRveoMbckABGkPUg+Ir!f zoLNX(#_Y?tzgTbIFmle~QB7zc622Vv=%%tH=hRmZjM6GS*S)7QyQcV#)?c6a|GXn? z6a8e=VZylgw#!|!tFlRzZnwnw3Ry4tXE*@6)IKM?cXal)rt$Y1htzMzn9F~&&h9So zZ86=MN#2veLToI52!uwmO$H%dD~1Fep!#eT)hy$MfEgznhf~9Cq@71a{G@;}IyMbU z@tknN98J^hW|sudF2ca;^_@EEiygnEgI6E0u$<9gb6In+da>Qnma}c#e_{14vO5c? z%a4Igr(ys8L#%-r?)R&(h#-cV%%$kepCJbe6oauoL86~S*#m?j1zChB973lHt*MOX z5a!2I=VlojyhXd1fTvxGS-2xEBs-|F#S$U1rM3%4{s0uEt6YVr0jmBuISzM~%sw0# zxm}k2x~wx4__1mUadXtnBulJTOGTrsbab&YPO&U&)ukmiD?^El{g9ds*K)JZ zve@oV%06^V@YNWQ@D#$wyL4Ml9cd!qHH@WN{)|b1Ua~3sty5DRZF%c2L2zA6BaSr6 zOZfv^$pa!&nbsMi{v8?M8{8hA7;n%~af~di%v9-2w8Z;mIlk zjsi}pCJLZ*w>a}nlSR{RQi1*ocd`Ro{UI*CX7jG2Efv_W3&3rc9PKk#|7#yl4BtaWT7NS@=_WYi1Gq(cT%ur$zzC(Dk>NSfUU98MJ~lzILkZs^jV=5p2TLI$&58lBcu~ zU+7ve)LKc~!H6K|GnN%y)9k>Ld~D$gWJ8=@M)%FX*)`{YGd0bx@Fn(-;p-oi9si}` zRkF8t`A_=we*`e+FZKg(21jxM6b0RPB|Vt$4(IK=y0xAxg&?31!trFm-LV(Zl?07K zTFfW%mVew|($a`tQctei_{--y;(4-25E|jK>-N7&-gW1xF7NlHtv{d8+blXE&KK1W zG9t<3naLY|Moqlj5$nxOWI}5#=gls`_OwuhIDL*D90@iS25{u;-Vw3(E@wDDnD>PO z4LD|($#f$0%%^qy>EJ|%dww$R(|2@J*D%4Q6sN#P2`$C-r-Hx-E5aE<_De)^S5Hk- z+4g>4Hd+9wfgLGCS7AkWO+AG-?&ySi9R=SO8N2edMyo7@QO&{|OMBW?eag8gd zl0O$pQo?n)U5zBmO<{8q5H%{Boq1DD1&hMmc!;D1dA@Nz!Ep33@Nr1OC%}QjblZ6IPC6JFoYQJU01U0*#2qt_ zyM@tMGD+MNYtSUY=2B-Bh0=DO2}-kFcq_0duC&)-JxX_s7uaUj=LGzwYTXeJ#3A?s ziV7l>;UHV)sKggYV}xn>T6hxle>)ja9c6maOzJ3@c`tBF$L z5ylJIiZxhOQBw7k#Fb$hzO|!yaznLl8J2#O1ez#@jiTwO22|VL+B7eEXm<}fi+Spm z_{9?Onk*}0YrIb}me|qaV6j0oPoDH<$adu~E75y<^pkoX*}i z2|D_^LyG|&ty8&>U8NajZQ)YM%j&YvZlAgI& zGg9`I3drg$OTQCI2;*3k#8IBSQAID8jyc?H)T_50nu&%Q#~U3U`ytFYbzBRY?HQ)}1OP`o|6-hbM&D>v^TbhK#yDP+ zBB+;(-mzz53PnlTni%b?XMP}|J$y7K(|-m?|Ip7<>%`q_2=|Fv!DKgHC(P})`kR~Y zH~5^7?}R;2E|7+;yfBO9zsiHbYjx<6DDC?56577R-!b~%=z2+74SWo8baGbg4!Z1oOhT$&yG?6Zm*()ADRMZMD7BN)OCYOL zKnV>d_^N^0oa=MG*+TTakCbC|ftG=r_iYD$HvMi9e1%XDu5&sLZvyUcdX+2djqVwLWdc$^iXfc#A=oW+ZJyZB6 zC^~n)D|X$8PFynvX-0Bpj_g=Lo<3hj(p|A+<7HN5+?e2?ymr!Op?)s7w^$;2uq*lb zdsfu;FGtB_V>U~AMV`1-V0_ajxgJsK>8(yi@>}tmY+kk^4SC{@<8N)8TUo!jTE=jC zV6iyGTfC7fOiZ{S$Jm(H1OkjsrW^B7wYsi2TqjXY*xr@zN~fS1*Tl#pl@WIH&)cS+ zdhNes$CRBHK4hMUjw&7FUNMMI?LItr z5X!gwxITA^*hO?kwXRdCapr`tO*St2I1VT7J>)6+&&|K-ei+^bMVwzplky+Gyg2_* zIJo}*iI@KY*ktwfDk)VN2~!(~{~^bWRvB|b5l7{<9s6mCDKI>={5^~iL1LGXUpC2a9GD(|7ZfeW(~xCAM1s_BO6D@^jOy13gRX2B#clFu0{7i zj^aG|z*}|ehs>6vN92xy)*uX+x&$vknsLF5j~U3YZma&gHmIRXMstw@@8le$=1Kw*v4t7WM}~O>T*8FAV`T6Kb5;?OO-T& z@7U`=Y3oL52^l+OlVoBZx-{L_D(M6{EU zip2dMfC1x350Gbvj;UA2o}}jnpm3!1IA(r1T8yeWTCMh29&q&|CeVTDQvg%;DYT0s0`5i~1H61X6q-gC z;lWZ8uc%>IR4dUc20AKr)Fs4=RG6-tUi>e*j^Q6Lf9TG{Ix|-r3r(7w_6H6r7H+#W zjC^I#BUKSE0n`!F;hR0OSnZwRfBgW>rhdd}DiUJvjind?H4G4TBS_gj?r&X6 zvhOo7N)p286>3y-j^hmH%ZNccDo@|EHzdH6Qx|7`YleK^;5}e-fZQ6hc1t1LdM6V} zY4>*Vf^R;sdKLu6NMN_pPM!7gkh1NtmmmQ%_Cg~1k&-XBiWeZ1k ziBvwR4lIA-?+FY@*cnlnfaV|y5$eYhg!@PhXW2Vgu(7rWPHmcg3LLVBchL`itmYZw zVtNQQf5(-M&-z}eSdWgFO{QJsur$2rr>U(?%>9JjR>Uiv|Cf0}u&SjxiaMqr-FJw-Fl4mod2H<_!e29&5w0L#)b&QC zIwM=|AZbioGb6Lz*+o0It#iAR?yNnGKliwzHd7}z3HUERUd*j>xS7N2ML5Zw>7RVJ zjyAHNHvKdm&jVkP&jd z!#LT>^90}HovSkQWjer_H_n!`c`h!vOi@i^cBJ5&7JMmwMdLRi^PPTQ zRJ)5~1e#o>Wr{k;=CU#yX0ptp7sy;C2j`DtW#e9;Pp1j};-laV7!1%GVXk8NQ95nW z{yST-u=y7zx&?)lx|jD4)9hGR5Y z?k#1eD#eAdM+&8KH?K4iR5I-85sGLb!BrZ6btdMe&JN#A#jxcnW8zsDmpRz;CbI4RK06pU&tWCxTb9-SaDaX8s11kg0nlR)xo zbQ{&4{Uoy}z~h=RpyxJtmMAB?$4#{f5A^Jk!7s`vrV*w*sACwv|3Gk>B;c~6sqUSv zU71vV$uth2cMiyh^eqHd=1pItLJwab1?g3v)dKv^ZTo(n8@~tsQh^6=R*50so)Fr3 zM#cjhF1L7ut*k_E2q{?sW8!vkm#?SFF25qk4&Nm}fM!WCU&Ux|)R`XqWr)+AVXhg^ zv!Md`jyyuu1jm}%%K#8_{600KZ!o?`b0X}2qq*qoW~qeE2?F?wQL;A~ZLJ0Lr~OT?REm$?=Nh3Mv=oRoJ&l5G}Mi_pywmnJVwR zq7L3BEG`3BlsQ{s$%XjjA$U4lDUL#0m5^U6Q$WwCu zS+oGF(rxeB8L>3K@!|DAne8fU?a?4acMvlPZq#tAV*cF^)?VBZ;VM?H!4!MbI7vqS zrr*#~+g$T0^ho6S8$R2Pua5}i-2pbAVS1rzvf|0J%FGE5-(G>qE2KU}UnVf6vIp;O z_S%&J&pp#;p~^nL^%rFTmwJ~a7ed8TBgEDj2hO=)q4Sb|4N=!5MH*h$L!xsCLbAWXcB6j5zGJiqO51czV~?J`I_he^fFuTz!{R~IwBtq~$I zByhwU1uc`8lK~xYR$GsEufB{OE^f9h`vt=D1v{hO=@dDlDqN;cqS!?e^vAH*qbqT4 z-gVMHc7puvv&S__*>XkIf)8tgb$>Ma%4OHBv`J6#XYTnCB3=2$V2nt&^RGQ;$`w^l z1aGZpqJbpWc+T4N{|di#ix#9Oz`OgpYo_vmr!7G?046oNPU>O=LLO#WiwPZ z(9eHky-*=~Cau11xcvTcyq4(yp6vZQlK*EEvFN{RENt;f;I$=NavKGpp;%-q1W!=} zDM;rfEb0V6^jl?H7)?90<7La9zimDH@hhMr;qfnHSG=cOm(?cCR+O zpzEqGAQRf0C$BEMj@~XgkFqzmK0a>9zqM>r!&l7349d6uZM`sinYh34SY^BWYr~aY zFGkD#O;*@r7?*Xg`NU+G_gz?R6*gC?--$EBbq}&qXR)!NWZZ8JCO7@;&Z&56^q`^I znW9bmx10V$PKy8Ey_zj$Eck$IUT*+t#}6kiP0yFpg$isdE~9#6jz7x6*AC+L zEq%cg10$EbyfE(Kt%mMKOL=sxGq{HXy_l7lRv zj+0t@ej=SkR52EcwhhsHzE{tfCBrCSD7-QuZ-sQNUT(2Ny#HZlfBlHomj%oAWX=&~ zmr%v90f2drtzr-fP-}#~Q1iOc@rP`{w@sUpZ#t6VYfLtgBSG$6sNL1aiC|o+L#POP zu;n7^c8dWtbvG-EC)8Zb)(tJWooQTHd%Li_taf29CZ{#qQX4a&7n_p~%`S!kiQu;R z;MvE?IxAwEzJAtkWr&Xfs?8$Bgvj5Gy9aQw>M}v#*+q}Smoq6%BgxzGyZY8a;L&VZ zT*K69(sexg4eNHGsA=LS#9<~KfxIW{xC3BZc0jz{6=9-ZccgNK=W&RSyO>{YM_Wk^ z9_KppbdLE3tJsU87<8@4kRFOW>Y(u2hrB0&5H2ixVsYQ4`#(IJ>397Y_bg3>SUxZ{ z0qJhNr&y@wQgrq5{Rqi_KObyhr~0|H-oV-L^~?p!!>UgS2I+0fOoScEOlTr(5og4Vz-7#V5Q4=9Aj1|| zm)d5Nc-2bE?3Z&e1#nPN&+rv%yse*--8O=I#&LFBlajsPTcf?`>}b6Jpi|6X!>PBT z>ZRL18n)+!#N1bC0!dW=SHvVR(1SUMU4*sTOp|uoa%R-zb9o!pMq3k~(fP1;a1~u$ zgbN>Y(kq)4alo7FazJ-C41c`6it0P8es|0OI5+UJnbx*~PLsVv8QejSZR&5vG9n-B zj$+0qoNzcOFMXI>{+IURJ7Fl_`Ipi&S%4 z$xgwkAU-3}MvbZbOBnCETSP>vPnozB2fimNrjJ}jv|E8QW;EAI+I$Mx2we5+vE2f> zeV-63MPF33N?fSBa$F1Y8V5~1a(r#|>O^y|0AiRt2e=RJ+3y?kj3RODoplT@fgN=1 zHUu(}cC%AFMP4C}{@#5Jx($1F$n&v4ULz-~`(5z6Ac44dW-u-@wRf|CdD-0sdt>N> z5*Ia!GKx>%KBrG{Pw-UP!vj0!qjEU?SlwiafedX|#>kNxDEhs;TTHdczZzTb0;I`> z6C=VI+&BTVGw?h}i?Q(-ra5$l8v6j|Xcb1g%7Fqr??a5=1vpByR7SK^MAV`#S}iVm z`72`G5UmZ8oUxDMfCGY)2cQUG1Sq3aE%}%y+N*;Tut@L48Pu{ub-h!o zv)lY=L#=ebt~R=BrMfeOs8F+E-Nc|aR(@8PT{~$=fL_Z-cB_zD#-lRSR_$w62ZRdm z?Hugw6yG?wbVfl<`0B`s%tGy=44_5ZOA5cyVKu2=|1~9vHdS(4Kx308Rb0Z0lQP$J z)}X?3eK0So@3)9`dWE9`U^fj(&pq!l$w@Yjdno2J23U-F2=*yLcMuQVA$uXSg+?Ed z;3n37RNhnuaaxx3dI;qs{h8VRH$sgDy-7~utHQwfN1gsZ=(ug{%~`DezcknX0Dt+< z%QXHg{3S^((qCH@?=zciLUvBOIRtHZh=7)1)`rw(cfR`Ud{vHlmdTRMz;%4>o@OF> z9mmcN2*ahQDB`nc&8L8r^+Q1+xhmKBIW;2U>gn~tK5WbRN>*aFGG}F~r0wWU@95P# zYs>TF&r~LOE!HQ}a%`6TrfE_FI5oSqNeoE?c!AEO`NBtW|HvBooTc%MmIDh^fJ?jP za=qy+%CcqR!8KF2eWlJQxw0j7%2-BQc)_eobF>XgtCguWHYjMyPc{Jd2spXEgdBE} zHMtB>Zypi#*v`NL3fiSr2gKLMXz6&<<#5}@>NDtR0eS(lsi{wUM!U0S6BI z!z`rqh#%*3Gm&F`$2|vMu&Wx^5(IbmYDfI^hR$i&r~!Ju7_c!R zU}|u^*vRl9vZ6mp_nrt%XvP6 z<<5M4b){Z0+EP9!d;K zsfx3|7S}{NiQ-+wb2_q5yt*fC5xwkn9Afw8b$V`mNQouumBg9@&0~)#yqYp!Rxvfl zMzAsmF{0+=(sk4?Hv7bqea6X4d!m_O^BY<&gZOD4jW=oyV2h*N2(P$#dw)5F&#*Ji z4q|tO(a2ITI&)g}#Zst4Hgh~@T_>Faar561`|L)#(R(*p@_vqJ)LO6Zbw|8=PFenG` zO8Lwov~csfN5Id3ISqdpb@EmDJo$H>JJk6cg(+73DxmK#WQYYem6avp%LZbes^~2P zBRpG`zhDwH%Kq5CF|X&*RSVW7_Eu$nvZ`5v56iYc=1LI%{D}2+1=scx@_@6(&f*TI z8?>$2J~+kk6a`h3q5Zq-t4a{Bdpshob1!$BQfy1{ zDlEi6Pc!4d+yn`?m**^WGZMwFS~=_BaRKnf{P7b%2(K z%IrbW;UV2FcnLuUKqS|SD2X>3Lz^c}J2t%ldN?hF1=X*;7y4B$<@a9W@M96->2^Fx zA5ebS?Sp@)TsN4l=s(y0(Gz65)o$YYyX)wF_lo^DW&zDK=N|T6etBorzjuUx z8m=V%htl)k^OXOoJqIDu7vLV{65E0eG^9j+$ zZ=0X2pby6rkLXy&lbtm+>CV|%r?7N&)b?vLMw?PtC%EC+TqIvwwOpPrx@x<-J#E}S zd0(A)+mL6TP zAzH+il$W8vf(+{M*-!Klvy&Yy3t#-GQ5xAOJg~3-a<0Nja1M7V zzpKntgds{Qp2ZSHyUfg1Q*tDoOB)-hlk}u1JJ%*hrr@mf#Z+$jZ)59za0Rw$OT}|8Y$4x1$V8)ZDNZvSsKkf*K)?J3@%U{T=5tl$1R`X~;vM4wB=s!0YR=YVDH6@MIPuHM zH>34I?UTP*inWqaKs(gGMSaO}#P6qJLMx%w4 zoF!c#+xJBu0Jlf9(2<%AV29ywvedo#!cobxwiNUS`!36OYVD`PSVbfnTolHfazo=d z;=ImECLf#TNM(4z^aiOY5pl=L9W~yUm6zUHTdKsyZMo{T>{us? zo9~+>tJ119GE?oyVmj_{P$-zIO<}1Uop3RvdLbH(#Xy}?P$G~gj0R<%kIRh9ASHNB z4klXK^f?mvmO^u3ylFG=+Jba`M zKqrcW9u`Goo;bx9WeC^M$~!ldA@sR)!Np*4!9jN*+NFM0*|Py1??##o`iquYpPG#^ zOBUL4Q$5{rk0-Qw>kpkC;~>$E5IXBP>%fsckHAnK%Gz{nW690$l;;A1zl3%T=N+^A z=6s&iK-7sU{uU0TFlO8Q!MobdyCT^nbCMF9EMm@cDNcnCSc7pbkwLFDidElNXl|cfB1Ogm3E94S7ZShDsyhfxkIO;{7KGzqeyK0Ka5AJh^E5 ziLL?#b2si9#3wfCon(TNv8}Qc6h!)-COf~i%>Ju3jdSs8=YP<82qNW)`N90cFO;B4 zr8_-W6-BNj_12mx8OIR!W;Shh?FWZ%e(l$nzfs!EH#qZ&N-R}%DhldFQ!vaaYG04U zS>a}BWIbupRD`pzT4I$J9C|VnkW&OzDv&2amVu*UVcH)Ir_6Hn0;J8ArJLA2(tYN9 z1APb|z0zggN3MCLYh!?W z9mY_4C>x5KeCC9>DeJpw`nGG*Vk>4X%pXghj_5Jc&uCE$NPemYy7B0Pl1-ZM6q?z2 z=Nr7b{h_39*i-ed*JtxeOj0%>YK`WoszI#0WINRBPUY7bjhVXRDv*8|W=E2oYvL2C zeM^X1(ObPso=FvS%~5l%j_7Z^KEDtA^!wCVFZ?BRSALP&_Ek$#m4&Yt2J!d$@+|o# zAPX>PM#ZklNMV|Vy zAx7r2b+x_6$;$`r()CrVl(J5ZKS2u+MN(;Yq{?7-|1#k{t+`+X%j&y)IxVGiN2VU9 z^GmVwtPwo9%wu2?yKq9dHJ zik8~;l2h@lw!@l}e%>HMt_=B#kpf1eZnO1qC^%8f0-w%|EUhe5L=Ar~JA8%=}y`AgTx+K+_aXI761s zbGqdi;0kd61Mt4i2-SlbD`YRj!L8dQwGz$hp-Pu*QYt-56@4JIRHSFCzqdus?hj3U z&#?5GG~LIvjXj;$?Y78epZ^ue8*iaRZd0e)$8XiuC)~yayEV?NNNdA$=oa8RhHYGJ zn&eQI-0@vYrZJT)SS?5zhsCIC1#XNiLy{F>Dv{oC-(!tyU0vm?xk^*t;9pdYdDp}i zccC_9M&_mTMr8-mTuP!fXh(RhgRubW%qoYI)TcQ5@e1Awp4!|-8qCDW}N7;}Etoj>IrEjs)8o(Xl zUUFA9y$@gM=i`3Vf@3k zSF7?jBF48DHCXl<@cCD-hZh$7*or0Duwpw~LGWg0+T~@TJ6n5u7womC?H!bd@14cN%TXN=Cslk6_gVg0 zvYM|jJKF*utmH{_-5VT|PVkjG?A0awp*<*z)XWt;Gy-On-(7c>A9BX_woUa_XE1d2 z#k}Ri6W({z84O`fbh+Hz6(3>GPxqVxzC6#GJshtMq@#6!U0ty1ufRiZ@sPYi>wW$S z6-31~Q~9c`o%YZE3%8uLY+$&#;$E|^mvvL?^XXFX;eZ=YP^jz0l`v}(iU&^Uwl_#K z=NA0DGJ-r`BedO~1F0Fx z63D~zDT0!q=XIoP@mgYEVj5*d@S@*C+uamBRSK+j_VRzWa?}YMx}op7NIc!j75r1g z%Fhb5mMMlTBr@QR_J>-)aC!nCs#v0iKZd{k`P3bT>$5fW&(rZ=@6nRMhmz(Q>gVS4 zVZg1(2dQYexZYEikkV)Ib9~6b%~MEYwesAlPLDff%}@|s64|QYX?3vWq2uhsw;y-j zV0Ia6m(?SCTdR0>K-0G=SgL|6Qrzqh)Wz|e4)wMwPhUS>H$jz?uzgvxy0L1d1vi`p zn4|jnRX)g9iKaC^i)pzGdEHmX+3twyADE3Dc%F658z*k*$L`qoYp^fkHkavwEd}FH z5otGy-*Eeyt@D#-N5!nxAHnMags+bV$>?!h&hX@H1Ur{u@TmG1J?SIG95rq3pz8>l zF~A1_OubgWb9265Q9y5&!Lr2@N9C->8~h^4kdCL7E~jbenp0AEh7Z(Z7Q}~sq0YZa zf?kCS1Tkju)2$89-;uQNm7KO^4nfgSGEckFO%5bdAY0bbA)P<5%^RY=HM+9d=~%Av zkBP@dXqh@IkgFruoIX?EX$;sA$=Xi{4i45AP0X?%;A^j&&_lrkC$mR{3~TxxFFdX` z^EckEWDJJHV-PByjyg6r7lcGtjlfV4OrpI~Aisj9!4?GBZPp&K@f)<>jk<_22r@Dp zW`LSx6kWHRC0@v?btdFL1~E4 zsKI}&@7IJ4Mf}fo^#8KXX*0R)5YQVci$z0}1b2D2j{V!4RuGvnuy6^P1c_L}>+7NH zn`8~C1d&+my;dNJ(f5Bpd_-7$2^9acEl%oxU-{aW_Iuv~gv9rdU_}i&9{#G6H5Qlo z$+&hK$mq;3gyv_1DBN-gtZl;w!ur8wydqVN1II75@AiT`BwCn-+**HiH6jvI`+_V; z@oL}9X;oQ}DKMbavY;?9DldoFPqPCMYOW6kM}#^HlJ}#rN4Tvdb4%j{3X*AJur>Lt zMs6*@$HZwhf3nv5%*S^s`irut{b$?AaA{oJzqYCUXNB1FfJkHPhZkt@YIL{;R&s?3 z4g2(Dr9sO>!CmO>HHgn9GJBw@v+UZFGB~hV@P#oE69a{8 zvk8q)J|gJDv!gq2b=gIfWDQU6&(sBlP2#kGwv1rFlBPG23tY z-RfVxfBPkU0v@zbw^NK0<)S#sX<|Si` zJwXyL%hW%+S}bcz+5D%-k#L4~O+%)rp#mGnYy*8C>Ow`ivzyo7Eb={F<-tSQe#m4{ z`>l2%1+x95lIwrWf=E1^a45gY+l{E{&9^m=I|Cc&r3I zW=qOO)!Oq@S4@MsNN#-ExS+V~1Z#xW+@mS|r&+0oV;jEuF!}-%l=a;?wp?U0hBnlL zYeT_Uo?RVp%S237t5Pq~{IDNVUxa2`m&HNl`N`$wU0zo0pG(Q#uOk*Mb1`f>Rk@&k zGnd$X;DfDA##*zH2tu0LuaCUk(A1H3B!#pv?bEsea_3~vm`RH?7`3~b4a*`mKkp;- ze1kka!!HN*LQJd@dwoT#_1hr<7IiXX<7qEx$}rW!{-loq4HZ%fn|?B~fN~uJPcZN$ z*m-FO1;L`|Dq$G4Wdk+MtjDf60B>CPWwvlu+y>tO$5=7TxRK1AF;oQe-dc z-@Op>C3m|JlWrFwimYkbWWx&qXaPU`9f=ppjI>cR#EG|1elYM7OM+%c|}hS5?vlYQ_LakP0HccDuPzi1SUBr zt0Xofj$R#M?Tmp9J6%|;%;|^Gt*99`D!RUcAeNDplriawub`a@H0{3~Mrd@L9M&@R zI#Z=(E6Qso=IcS4hyejjWtH%Johnw}3NA=JIP)%jnr?RGrypA9tK_gsl~9$@0#n!Do!foyI!j_M>hsb>?d;;ox~ zmLt8j&JneQDebDYGfd1ha~Z|pa~ho<+}4QhtQson-v(he!@b`BwP!ZfjLH@HLe;sNpEPZVb;OSTwy@FrD=OM)q|Z z^=9aWYKjzKsdoOR-G-%l9ZM1yE{VXl#zw1eUQug)!&g@Og+py#g%2}Ldmf)`3T>;1 z<(W|`rv&F5tvU|BB<$M-{fJl;NAp3%zuiOfNi|OYi6@~=E%Y-QJ*r3ihLQ1DvCn6- z#FZlscim6vQT-a)(GG`i1f18*O2_3+jo-G$FQg!I+PG^yfbuyrx@$^XR!OD&82Zw% zm4PPfv|z0)`#g2?homH%ggv#Dx|Vg;9WA!lCO$=)^D z{c5VNkJXRoYuCl$VnUW|^*q;RLw;YBt@x~N+DAs6Bm7D{rg5zfee{(r6!UALkzQB6 zx7bLZp;}Rj=el2SjBi0xqc+JavW`6y5$mwRZMfY^vMGmE&Dd~fsoSYde>wdKEnY~s z#7<%6mb=Dlik{x!34MOPuZMv#()%3&QFiCjh2l9IJ_+1O`o}eVw^-iq8XZNoR^Oog zANOLOVGT7G;lb^&&tNh^8a7#z9n#ixuba2a*66o2GbJ$e%wwIT70h%IQ3DrdP_`tG zGO$~QPX-vPfO=F(MQpbYcnx7CtS2x@+CAjmrfLYJGF95{nAGQ<{Qc`jE;TNe9Tb`> zZ=vR@StDo}KG_{Hz8WTJs9FXnDoDxF&DdoL8^V7@n)yI@CdFZCO|)=iAbX{!ncQB7heb)IIO$j87}+U2M$97VuSQ;@3sgh&f0toV{#!dR#d%&zYJP z08}Ic-2i7%j!?d*XhSV>|3Gl;D5G(`c9nWM<3iNcVTxS%#_&2EX{++GX|rC@RJtQM zimmZQL)N?&NBzvhdEUm4=^?v@1YR)?-6h5c#Uf?am`P7*s%{%yC9~u?um(Nxmk`;# zRuZEC5; z<{FIhRP$03`7$`{i4C5azumSzH|IW8#gBBuZ5;L5y%4zB5&53|oA3S@dXkp3X!Ap* zpiNxtZk?V!Nv-IZ;}Iz}tb@~u4i6*izc2A?mg$|wWq5kMc+QXqx1>Be)RJ4^*PfFN*&u%lVe+*r z+o(QN?=oMzWBnr)jAv+vkge?~0~ejs{u^s=6;#>QWD8dzRk+K>-QC^Y-QC^Y3){FA z?uA?7uyOao-5m-j+#N3GJKYhtBmVE)?vDRqKkSzkvF6H|bL7mCV_fUnj|BR%G;V0@ z4eLaB$NT=?PuKDKEx!Qt5naRJ4vrEo+SSD4j$(VYsBy==<%PShF~U6-&T;ygdJCUN zy~)Ww;>c2M&~vPSB>{`rbXOl;F<6^DWcM0~*IzyDbOOT{u7|j_0)4WrBx4xXuCOCW zbr(v0p^EJ5X+0VEZ1mp7U$MjNo>9svfCk`=A}Wqj*eaFNASU>N+xkOv z#GR}w`NGA7Gd`ocwylO8m(vJd9SF{$9h~8~MQ-yW1blLh2?Zv%$3F0?li^1HyCkDe2V*Af+IDMvwHfh7>?=AX1 z8DvkK;iH$fGEeKC*(83@(vJd)STHP`I7@{b>*u8x=4-o1bnYjYQ8i8S)2b$L4lb6~ zxEYa(o?z!W-LEC}r1xB;aToIFFYOdBAEwy@K2PAg7LLESyAghSo>M)LT9?Q){VI^z z0p#?5l}@XuTt>a|h1(aJJi35H+$PB!wf-f&@h#HP-}h3FG2c63m6>5@*q6*yv?M_{``P-!-sq0s%31JS?f}=l-Adb z=TXz?v1PWP67Q(hFgnNf;9^KNt<3CDNZjM4ky}ORsR{N^FKr)J3GCs+& zc&Cfr8C}ik+7bOZZuj4F1Xsn3`%2Trx}<3$Oa!lXyx9UtYD5uE&=O_c~>I|JZ1Z3U)BL9Z>8ADIKxw470FBAE}-sXDAtObJ_)z z-VC~ZR^by$boO&Z0Zk~SuHd3uY}uS(3`<>TY9H!c!z8*=jtQdH8v^t=L?xyhEjmUh z9y+@#yX=&i$pL;7RaK3d>aGGH|H?{Z9@8Oo3e#2Dx)AE= zk8Fh9FB8H>x+)>l*Zz@rsb5CDuOF)O^bp?n$Iek9BQH{0US4wyy&R@8(S_%PvSZ_m zVpGw~D=Z4yq~mW@Je109>Q%{{4?Ie%+=y4t<{l98CJ;}lIT||jaF;un)u@Aqb)?2_15}I4AD258M8)AVulMiELTfVvq9CN1C)=#jO1HJMCETx0H;W;xCH4Fs!pY3B=@8^ zuLvXoBQoTCGA-5e!3ipQ<58PhXpd zLtDg2zu^2e@v_&m@N)OTLxcLDLI3+|@*f7`?9E*NM@+PTaR2!0QGXSuR`wQR?q>F` ziq2*#X3kbdwpQLofBAr@e$2zVm^(Pz{pYw`cGBvHAuw-cg}e=gkyyJnwD_t6cVnAQ$FYRl zE<=Q0pt0qd(1utyR_5Z(!xvXUv!WBJv)s&SMrnN3-N0R_C?1-?dHaOz zr%d35S^`^^`7qw{ys2P~T9H!nYjkWowbSo(9FX58Y@sE_o{j+;3a13!b|-`GFY}F3 z1Qvu*o=CD7Oh=^z1}0KkqD571xY@xUqi^Kt`h!3JT%!X=@&@bgMb*x zHy1`%U5Nx?sdGb)(7Khe-7g|{3cv2F7v=D{(%{HUZjK+1=a~lW%7Lp?g^tP+5FP+y z8~sFQ$pzcd{W?6TUp&HADnU0a;WM)L*@HeeDS7GBxD20*-FRN!>)Jns~aNzZDI8)2W^x|ZOtoU5$bwl_m0O=JH;AM?NeVZ zpewpZP(EX{HLo5Gbt;%ZO#e%8P-`M9mE}Xbxb;JV;orwR-M=Si{1vGGDHW9Y(5?>Jq)Fgk}#5byYsa$7&Z1NwXhbX!>BnN?6Le>_9uUsw{Hxc zibZ+x)P4=W;_6P8k@}Gs5TzFHvRs~I74Gi|a=ShOhFpL|HshWozJ16=YO^bhv_m(3 ztIWFeF=F;kK8ZeBvj@nGKvxn?&$WwDPy%Yz-m0_v=#3{lo;lzFmD{0fr==-Hqy_^R z&LF37MGUTE#K~sT25O%~l1J>CLl)shfQJUAd>TZme-+LaOhd;jnZ}TSvH+$gWHcT5RUO(3$sL zum-q*6RvNVO@w@_baIQ)_x;l``oNGba%y=d#>!pc@e?uNMps%C;Xr)h>X?H|1#zgx z)<&_NlQ&qanqm#HT^MJT+9mIqbirq-#kP=9XgI_8ti&1P0k?6rFoyKEFCrRxU+% zJlxw|{4<(?ukd4-6~}Ae-wh|I%~Ob|#ZKe%Nc_GFFL900oRIWp4D7TYK*tfy_W!9J zo5`R6#Xdblz?O3;lvQvk?X7(Bv-}Y?%TVYo539iQ6C?8N`et4}LCJRHL}(K-NcDL7 z61TVKQnWbo4$ra;ji)Q`_S5?4$hFVmvvkB8-c9KXe^vY@HSpdjBz~ITsJ+T_SCUC4 zk|@$d`chBs^33OEpXFpz~T zY-Z=+Y9{39_%F{|5nHQ|L*ehe<~C6a)5{2e*m`c%UiXC-Dj~qcq;R5xLO8Q}DXU~E zlcMC$3`X1%iO_;TUyI#+Xdb$D|60?XRx>Bj+1x#-Ry0GgARek{147{nKkvVmpP>KM zYBzx2?;uOZ{+qD3P$}EEz;;-{^^kn;~}%2S7?FNvo?yHor`{D48}HDG=8Q zta$W?x`_{r2csm}0~Ce)YsTDfawjD11e*Zqbi2g5D;Nvv>Sm^&$*ZX@VvJ=Lo z`vlQKCr=G*e}X{T0qRwvtHMaBbdY8AAwh;hj@!h=shlelbEdTXDfYCK51;sxIHf9* zS`~35$z2Y34korc1KQg^FAb6B9qI9SP`i5n>T>ST89Ht;qU4pRa~DPc;&NK7X=EUN z1y9jK;C8B|6CVE#4lAm7s)dSv(a@(ktF%FP%wV<~cGxsgnPXUXJkGss7z@Nu4v`g+ z%*za^T)&IqaW$D{)!XEmBmy55$A%5b!mO$ATFY?cQo7YW;=#j%I$A98B}cd>CrL79 z$jeHc-TfN(Rh!a^NW${PM|MTGU4R`_BfIoCJHLAYiR1MXY2~^oJAHsu7l9qajNSp!JF0&=!X}=1?jq-zd#t`6RM9htZ~38IR~04Yh1|LABtzZkcS{ zx{EkKsWL{1)I-sN4KWlz@!5$QH$}ZdE8tyV=xld(o$s627*hE}pci(CIffR>YjsXmP1lfhg;z7yBR>teC}(9r0~A`<{36(9M3S*V z*SxyG2)9`k8}DU}I&JSvt}?bHa%)A-`4M`rc&*Ado!vStThvN9!HNY4%c`1aFRH7> ze?q z#4PzEm+@V0#(S&vdtMP^JO%B0B`LfS`?T#)P8K!6?YOX z^I=RIE=8er4?gOQPR{YFcCmc(!~W~ru8_MgR$3x+8&ZIj;)^V4PEskMld^k(u2!?q zQ+b5!h_oSgS+h`&iKDVSO5FkVzRey!qhr)GgmNlVt^um!Pk4l;9@mzuZ@p~f8R0Ls zE#$eM{|W%`oiodXj{tc6|33g+oz0Bw{_pITtakJ)YIl zHmti+2nM!b-iq-eqt{@d5jlBc`1(ob`DoZ1q(9w3lHo1xiozZ4d(d63mCv~;5ot&< z7ex!h`NqAE$K(3**{h!qcsJ7vp`&ycN{e*~NpZGj_>m0qdUVk&5Wlt%RccgKy_mS( zdD(sM$W&R|DLunQnHj`ujXmRx1{HWWpvjKGWTH;YTwg=!wql3Gc^Tjo6)p#cPeQ*H zWxq3%4NL|gFC~L+$&R2-Mr^R`Cf13~qKwE`t6N#;i*%rBijfuLO>~lcz&5V@ zJWRinH{?JNOi|D?q$+nnEPWIi>AWeduu&!>zM$ZM5=2>*nl+@+=TOCBlTnE2TFCtP zFYv(tWu|Z8f&qL&)STo~S(Lvew;tF>;NK)h*l>sXsPTJAuvexgpnX(-NO7F9a;<21 zEy<5a4l>C~BVg(NNDeakJl-gf%T#EhfA9dxiv+58>JC7K>%o^ripd1pZ^_7*=q)92H=1LZ1~qxS)$b+Ydbf)-{O6Q*#9D;hl^ zky5UT1pRBV7y#NyD}UB#Rm^I~oI0!lG!a=93dCo()w;uP(LPR9VCAYg*+0y&tYaUJ zm%NIAuww~QiXJy7nwpRdP^{PsW|>%R;{&R3GM-8Uy!!behjXs6V?!KD{DIz)szt`C zWg{aR7v<7fUUEO$iqnH2{}5>pT$lg)LRqLLf~y=FI|>$v-BXk(ZW=^V2pFt8``JM} zrELv%#sD7$unr6?@;#6+Q_m317ChBAgl!GL!pJR1vJ&?mi=<0q=C@a|xLv^KIh)=h zgV#vdv7L#wnl~xd@}uH%*8-&j`)5l#v*&R1iGlthYw=kZU$=J_E332XcbRHcalWjk4e^Xd^FFaM%oJ1SNn~3Q;gxIZJeVs>vu|Vvnp%Au zVv|G?6y`5oK`@Dgdj;sQ>6h-qZ47Z&vcl3#8u~Ug#V^fd2BKxeo?ZGG6Hk<$*vRJ%)CENil4Rfc3WE_A6 z6|X07FDb3C-0ZS|hT{TLW*fPqDhusnsnVsczx$_u7E#qO7bI8@xS(G-6U;r>=jMNH zsX3e2ws||wdClou`)qL}Q!N-MApsSm#0`u5&`EZFWNE=4{-X4^?nXq*E8gh`1f~1O zN$vk0X#5)_sW_O}n7RHZbo`HVRaHj;jS0Y~ch^fFOzQzTaLeB&NzPx2h=c-xFDbcZ z3N7wST@)K?WNrtG_=fr(jJN}tPd;c7kaT%`@*zwFwMEKeuzK!1;juC?X<*O=?)eQ1 zD6yksNRuzV3Y|tX;VWZE?p!(~2xcc|cYQi~rC3duZeW+AC!^J5{6`q9~ zjuqcM<*t|7WpAqHASM~UdrV+_Rin-CplcZ}ko-et&jr3}NI6lax$I@#Q(f(I7_1@m z`4w*7-Pl%zLKr(S#VGA^GFHpL0-$cb&q@8+&J)nD2+0M<@?cS^)k`T7KxyaEm|+l5 z+d6*lg>=aYr=21lFD*>9TL~ttUE5P)4zhlYy^2u*=OF%&Q zm82MfISU~#XY;Rfzvml%BhyEPMD`&h@b7`&|2#DR^ZwxP(5zHH)<81@ym!>p)kR|} zcDIve?4JeMYimJkeJib~poB$BS!R5OA=!nS7^7Bquk~5(cmsAme4c=w;w`DpnJszC zm+$g0$G~(KqT?FtY&y7K+dS}ke>#X0_c6e!K z(sQPRcwLqsa23l$^!nLKGO>a)r27oLhO8HVJ<(|n<|ogZN1+cThi7L=+r4Pjd+E2~ z1?8w$uv)31TgaVAXfLN?Oqi-0-oWBDvDe6)T2~+1#CyG2{A0AKcIFreZ4qp;MqM?O zg%+{Zl&bEWHDxtC4fPdHq<9*`RIAK4qQDhXYt24yR&pefMBsdBg#ll9Re&pI_s1F&x)XW-Q*2d0-0DQL2rXD2MM*2YC%iI?PF0IU_0Y(OeDs zDoWBLDW52NNw%cEx(JSYX<{}Qbk0pk>|71an!mOoT~qzun%>n(v7|m>)k%o4J4u-$ zRiGV>HJStuiD|R)y_vs~NmY)j2hSO0YWn#(}1zkqY$8_Dq13_~R>pV%xlC5QrLI4^>O4sGRk znU7YMZDQ4N^Ve1NU9|HielDt0Fj$egy6!@15b;LC6YB)!9k@*VYXN4_w!kN@(s&WD z3O@>7(_#u5qC!7B2g()XnL3m^ssYFuHC4J*EL@N5ilLUao#ET<+0|ycCPb;u|`Q;_*>^o?lFgl7?twCnAXUq~KTIcSp~exMl2j86jKWaGI2@<)E^>*6v9T!BbH_Mkq5cooS4IZ3nkXc+o`(YjLY|^w(Z@ zvS|H*E>0Y|OTC3i*-0C6ffr*f-|Ot%qc1x1oMzzEIDKy6L0A9TcNL`H;0u3V9y=9y zpRbIU#$l?k1cB$m+a)`3i-a|A1W!c{u%Oh=zQ4mOQMu@meCFnxS2PUz>buWkR#sy_(=idvsXl;xW;l8I9RM*qpu{WyRelA3Wn$b zkevtRU!44Xzd~L=S(*|CC(M%rmQgvY$bb$MZ*Sf6iEEg+nKRc*@%FYaJ{aRix6c;S z+~BvEedN+GRtzph`e6q%E=v>VRQ{6}yYKZauFtqR0_pM|j<+*-7wPO_Ia;{#?-LA5 z-16fN`!gO1IO#(p#cy1D5m-5WS_lq_XW6UGias=o2ZTJQDT2HPkg7@%4#gMPv9}&f z{4@MdInS>ekp6uO&kMRbw&SwjB1}kpfkjLJbOU}267)q0W0R&!f6Cj`Z$WW@ zx2s0XX}hRH?4$m;bED)m^~BW&W2QrJe_sdn+OkJ=LCOoV&dAuzVVxt5)Qw)pNzsG0 z@?IU8i|UF#9T~@kD(Z{O+3CxshbpiQ{-{hM+;_0Q5;X?jUX;K`l75H#r$jCA->T46 zRAm1>jL23U{pdQN@g{DZ&U-8?2;5En5G^6ir=1Y2|+ieK}tGzT=W_h8M=1|I~!T_cO(T9 zKG@yUtLw|()jD&Muyy?K5+g_C0=Hq2WyhU_UMz*|XssYZqzgkU2EgbU04uwjLXwoQ zfard%V}I!Tev&kWDM6Q3=7p!@qNJHkNmQnbM;QIW*fwnZAZyL@Zt>YSuhqk|6rvP< zCj;p^6^2`CcF*(vc8bX;+DmEayU?tTZPdUfPnbYC$HA@}E}LfV%R<}ciXp!RDd!a; zUifr+5YiUK0x81I((PNAa?bo z3?BPhAxQZKRnk!D2ok8xIyxm&KCM|ftyJKUZ7%kKBg)-@G!%*o$|I<4qo$~)B{n5# zK4H4AG#FU=FYvUx+%0N`L{*6|;YElEO>xiP)Q{TX^Zdm3{m=%(uPT@LM4(~p>eSzY zq#=}-NZFfA0;ujRY;JSY1P0dmcbD^hvAk zf58aye}obLtLXf%NFrJFUp+Ct%*-;U^CG(a@5TE&y5TrKipYwTb$V3dkrJqHoorGJ zGgf-o$zISUSrY_z8c_&B)7)fHh*Jv@?|yn5WU;XD{1uq*5Q@DBeJPI<4_lt%>t%RO z*Gr7YYuB{1HK7iky?p3ZN|oy6J>`GWhI#|&WR0d%!3JxXz<5z`ET+EJ#?o*LR?~~! zXD0$pU{^KbO~YsDMQWMROuHJb3G~i%V)e`c_h8$YYd3iJEF!H}Ik{KnpN`^aT?s|4 zSL^6mw~4^xCX7Pb0CE*9LUC$nwN*kr=*!0nd+0NQMeQ})G9m>J8azJT@k<^XP^}4P ztX{)N9$@`4?BoN76qt$N;_7F!l(RmWoy8-}btAess0M-EMkp$K^l=^uqFE>2XE?tn zl!hB?BqvWJbsK7~l+V^|rh5?45MduN@EdELfLurKWIuc`tS6>K`mp{~p;XT45e|*J z$Rhb4)x=b?*#62!ND_zGM`A=R1S@p*x;he#{8#9v>vOTle}r!LKZY*LKPOfdD?3M9 zv%jmdzfI?es5~4+b7xb2eB2T zdpT^h-**LUJZzVo`F!eL{zDx4+t%QTdsGVZ=f=AD-HI#7kW-#NlRm?~m1a{wk+JRP zNn`P<*@}-G4@?oGPh9PyBxba+gSStv9d-+)HCnNfNVOFWDRattraKIu&3z%uhGvDZ zXLp?*s*5CfAL9=y`qf9Pn9pXYRyfnU1Xc(rvGQ27k&ZS!X|b=9L`?E%{n(0G2P zeUr4f2_DWgCO3(KE&`o#%MA03=3^->(X4%dJMT*qs5rpQNL|B02I zh$>liDNvMIW#XS1N9;elP)2#ZKR@@mkI@`HPAI?IM~t`ckuu|9W0*t?XI0fWhS{O} z+~!mK(BW$}x=(rXqO?$h<5tjjj@G|M%V>U1*CfwK`H(X+su>w>P4Od)tVjEOlVLxU zW)wOw0;E2S&bFJ67Zt&!Nl@10M?VprE>s--akJ+m14_5ju#}UBcT3E*MW1o5n}?Iu z=}hzBpe!sdtr6K<+`>&TkRjl%B3f2VOuD>w?2I-bq*;P35HsRlPlUd*8t5P9kdJTmC^5WHnoMNetgORp{XaX@sxHu>x`uL?RdP7X#??s;zaCW0DES3;(5AgPiDBD$ymxQ6c&)<{xOpuoMtR_C-UR=3*@FPP;B3w=zGq^#+Y+u{kf$cLTQ1ZSWT z+sQyDr}R>_(HC-glduGjfz_%a9IZU2^{J@e{CqmYsGOwnmZ7Z`5I z!QAQzgYD2=#s?T2iRm-C&Q^{+QR#^*trf=$kip9NM>NS_tj%eTQPegKI`M3X2gG#n z6>v)CGdj08X^0F^ELwiBeYK)^F6af;S3A<8i=Qc{)v(y9?ApJ2z$kB2OeuEEf|P45 zPw3N1ew?#;b|DRY-P;8V1ts{XPhz^EWNkRK`l-vG*V^VURCBv_ZDsbgdktb^IHPChcx377%skJRZs)t;*aH4LAK}RX@(1$PYrio3sIE>eMEWR;u5)7 z{3UPDV{>i*wqjL8z_vkEqt3VjPTAH=UK=R?_NZwT8UH-Bt(2GzsRxnMarbHN_W(Y52dEZkwfJ>ViAO0mpu2|C|R&G@7n*8&h-5j zmI7teazh}RL3$%Vib(!ZW(>bT)sf9ttP~VdZ7umjzWL%9X0%ulAbuG`Xv};v51z^9 zi@F)PtK^%hCJ3t2?ehr5Cm6V=>~3S+P0bzIOZuZw#%Pu)Xl=G1KB)~Fyps1(^q*zl zXhCLRpq>}qkoK^xEY}Fg--c$oHh+oc*dzZf8tP9~sIhp)^b#a(y4FTd+V*k;$Vsx( zn`PIP%6v4jJ%t*?iZs~e5GL>1UuSdTkK9B}_XEyKZOmLq@ajhiY$>!Gr`Mf5c$0oh z26k;#*PS`^I`RrFjTkt1Q&_OwD7?trJ#(a+gl!-C|Bku@cD8C^{JyDmKv+M_W9zAP zEver7eYgyGlNor1%Ovt!X*+zZ>&a4@cHg9!RMm;~iIa4-fgJT2$ilIYE@K2wX7Nb% z9^%6xpOGgks9Km~MMt+W9+S{XO3(PXY^}5&B0u}Qp!%xB7Mw%WlyJs^&ZsMNOV7a+ z^QJC0u3TSIk!~%Iu3e5Hs)i@RN(dgBU;MlFr-}=@0q=_1Rk!7|n0Q>-Y>2-m(Zt;` zM_10KsOi8QvG>ect_5$OR9VeDiko*9PmT}*pm8za$@YrU9Ie8d%IG&=+^|Z9Hu-t( z^SrYc%Om^D_NpC;3`3TfWChE-bc&vAyl`ylH<^43$FH{f%Q;#-E>;$@Y!`uTHfpkL z)T}Xaxn`M1d?|KlvlD{+9a`RM7;H2@xyAbZh!lSCc}{sUY8*9d(L8oP^*&an(E$ z{%AUJ27R6c8ho#3TxNXC#E=;&Gy0~0GQ11Sh4#wvq$8lU6}g(b)J`eTAEkg#vc7(D zd62L+4`5%M9N-O^^Y*XUZAR&cP_za_A=JY*1`-${FnqgD5szuQVU8UctjxQOK@>gf zj~>im>*F+eB{YsG>eHMC=+AOR4}P6qL#aaKK-@hsfpS|6!$jO(OOf;|jCR|ddj^%k zE+5RsgMP8wDD@E#reh1+P$OdxhDy{hskuO$mYFm+_&{aGZe6MFBHPN-@drhhBw~ZM zd<}wIzvJgy%(WZoY7MHTt71*A_xh_~@u=Jz?=qd_ryNk|Yl_EivY6eZ)E-d&L{ip0 zelYnOyY=O6<-D7YIH~!APc$g=a0_JCU)HKTo}Zi79mM(Nc^yul;2pKd2V8Aa8OL4X z4QXl$S#D`>BfE-kxZN)BNIl~!o*YGokAf{aA^_1A< zM2|6QPYHi}w)rltnjzJY(%taehLf_(Z?Ae z@r<4}uYgdF+orM_32{1a3yETwCKRM<)gW~7-Z>k7Z7yj8@>8Wc{jAVINWmKX_;=aT z2F{gI9=L|`D|Bf>%9rS5WICTggJIu?PE&f#TPGy!k}Uw^iW|mU!~5_vhEtn_ym2S1 znXko@-B;xM=S=}zC_W$ogfR3OU7G^x9Bj3C}Ig z$W7!WxPx4D1Y>%h01Z#1CJz++cYyEHh`2HN28une5&{2N^?Mv`){&LZpHgKa++scK zSzl!TKaCXwPLkfI=B;Z+$A-C!SF+TF)(oGV4BYS9^@nkr_OTfmSBn>EJU zWowTqn4>I)geCiPPBo-aUa?go?kvY+tJ5HueUQDl@~OxoPOYr28soEt!+b@F@+VAr z^xo3Z9k-aNQ3kafWh>9{l`S0d%xp3roP<#4L9s-1jW7=cf7Ob!VtVgLADs|BjDNbx z_y-m8zeqX%0k}UdGXB*G`M)uDjOw|Fj=k_gxJ9$!r}#1k-7j zDg->a_dip*X z1Piut=QkvijODKEzDS5>vOCCqz3;uDLpry1*f~o3sxuTtZ6LMl=;kw2U$B0Y!5wL#{b^IUa@u2((LOc$L1@$N10$C$?}TyIYR5dr1nwUEe*GEFieai zYy;K{aqGW}x-`Tt;Cs>rD-{?~?Hqq>&Lsyf;m zJpfJ|iSTnByD1S9D59<;Gzl%*Dm$%cDG*p#)Y}ONjK`HCCq2q>-Ms(Z$ly03vSO8$ zmwt3Z$MTB&N@X{h3@K8R6*w`6*qU<2waInBGujdG_PTohDRvv7Z~Nw_?|hBv_^>?9 zkr!7bRZ3B@S@x>4GbP(f>ZlW6pPT@o&(pZ0!RQKQ`s1A~WJvXNX-a-wh9r!ad$WUv z-P%f;!ibucbOn6j?7(Y#I-?@yRIiNRA2nIoJ{}=GFbKrTKy~?*PizyJlbi^WVuxz4 z4K}P_YxjCNJU-Ps#e-!lHL_H`ZAh8CD9yK8!&S5m4U}V6%~f-oKQk+ZbB~pYS0oTb z$0mhP)QEy%WmeS!8Lz;>>p~#us5Z14=iiw$TXm&u9KltoZ&X-0pL-F~Be0&jGmXIoihG)GgjY=mzn@R3<)Ko`=NoX6t z8+lnK+X56iCmCThaA8{Vo8)8h98wRTr$k40sa>yjLT`$Rn)>!E0!)B4vv}_S@7{ov z)v`38*AWi|U}Sk4J0FKRqA^f87_M=eY9b~4F%CcIm|#@FA_zot*@!$!Pe>2p7O9+5 z%ZR!nlR>RWDMbem#|0Vojr~etcX5`d_a{qCWu&q`a(?t8psSj@W?ge#z1lUyZV0~I z?iBT9W>1bLOT0|jF3anzg{@^`vgG?IyFIVn4)!N_@V3prkP6)@gEF#QN8T&tldHV+ zR$7_J7p;s**k8N~zq4s8NiRw%rWGjBfWc-vcxtwpnNQMrV_$#d3GuE(^-Zs*8is!^ zCX%oXp9G4zxDb_Cubrwf-79!`C{%?L`A~6j9ZKgA6RyiPdoPI5`7HWw^9Mpp0SiYol*C4}_O9yvz>aOZfI$0FJK>xiy3y z*zqhgOKPMy7z1ZOsm;GSFeL}B{t9d5^8F+ugi*PLc#s_%<%RxZ7<=Fgf zLh*rL8=9&CjF?Ea9LzKow$5xmo*3!8geghSAjKF0Xn6j z?+z&L^=8t*=CYH5_YX#DAb1sn-L{#o5g?LRSZ#lOm?2Gn&=&HHJCeUN%>|Ehn;I8E zK-kU2Zik39-`0pyxllGPo<@V@=Qm!+IzUU);1wc-s7g=cniwOPSMB}MkM#fP9~BW9 z{vWr9{~xT5>~rene(zqX!A zx>;v00C&m}wAF&2jm)rh1zCGB)Qlk@RWN~FVT ztOdh4jDk7_HC(-gi2}(;yk+QjqqC)c)uegBIkByeK1^THu8+;<``%Rl8alAZ;mKVO zakbZ2ixwWa+F?Bn2pL`HFQA_I3=duj`gn+f=Bk3Ptw8%dSJOPR=}>;4k%?L2x%2FP zj@^QpV0*H*Q#L#ILaHbY5=LsimJ;o2~6WC;SG;+JzR(D%Mp)=jVqaD zyGXr}wuNcq48ONb#N=>Sm^WH6K?D?wG`o;GLo&r3(^6n7PR#wGT*8px2?yFUx^Y*h zvKM0Ldn>ux`%VLlX&dpP!f;pUM_1>g35V$17HPxe_{|U|jT)WXxhoc@q5STeRpseB zfub+wDd?Cf)ga%oD9w!0d?e+U0Aov7rd>Xq`5T%wDcC2zO+)_Gp~^T)d{G+~a{qss zP$Ueo3ub;mpZ9-+J~aQGxR-Y@{f|+TWcB60e1zWhFu;x0h^v0|?|he)RJNX1uY^UW zW*3B&j?xR;L-`Vx&YAvcU8Bv4qs_QULVuKt6!)0RF866FEN3?LjjM69BQXttGLV(H zmhRKF+4OSOv{(J^{|Yb2;cvc_nHH^I$E?&R9b*#_H64;?#_UaO?M%UKOh)f)F(vJc z2b>0$&D%5KP2#UqyGFz~s* z%Fx9P;)_H?ub`u9kGbt_{^wOR+mLE3x1~HoRP6zkHZa7D{#kn9Ejp0*g2h(K$)fo~ zCo`t$gWb$qy|3OEkl!`ixJ!idY#V-tCSih>$x)V^Pq<(_4J> zNQbTrFKHAO~ z?!84!#^e1}(_#L_M=*U_o%d`+Ue+;_;vC5{+6XT}5j0fODA~cNu8s&Jzg4*PiuQ|#yI)ZKI@@YCEWEy=ArW0^tLQc~S^k)Z}#>zPYf1mae7DhBhe!;_HfSw-fEfR#vAqm(=$4hmY} z_4y?l-m4mMlP(Wih@_ZEsr|Ma@D8Twm-hfNbrwfiOnQMEcpSiM5<}$V%n|joUCGl$+1|H#;8|L1ZLhB|$XCcXQk2l4lij z$I`DNFl$G*7Ovp+8FthUy>vM?_SnD76~@+-xX&OIFVH(NW=}JBUa0ZBFYsP33EOqB z7sW;?JMrfC{!GJ=unk#!ju$v1SRzb-5dGC*x8c$V=KK8(0;@C-R+Xy!t zR<(&KB}KC`B?avF4p((2Cf0EJ$_jw_B9eq1y$~y0v-j5I^|E!6tVLr26p+c zF6NpQ2QtG)4mSBmis^p~fBe^mdxz#%PnAXVx9U_|E!s>wDCZwyDYatKE5+udIbw6c zh9a;HZUi&+FCQMjUgsl%+%v^_MC)y#XGiR$WmYCwA~KQ^lCvGN9rp<9BsX2>d?UTz z^_mR2{ND;Ie9k}25-c`cUZ)ByCc&GlawC?BWVi2dI4+1YE=m$AGBS+Z6-MW@UvZ!^7k5mZJ#-IzKsf zI6XSEcQ}o@bG>hB^k6?nN18VN@znfnQ#A}uXWd?tz40hZxnz-@jjvX#yQF`&*jfur zX59{&^jEdHM>Z*0A8=$hN|x=nFi9FaTNy68W^q4h>%ximhZrR`)oQ{CHVZZ;Wj*fr zu!%IVf_8Z_$_(vH<>v=SO)n#g%6Odw<3afGZ&w~Pj0P!_+X5axI~b~6TJ>9Bs`;l#=B3eK2_ArfO=LBf?Uhilmi zH@9+koC1Yq5~m+pnijG$8ybu2He!E0&D&dnYw}+|Ohp+*MxiVrSe2VK^reN~=g}_5 z6Yt2?o%}f#=B?}Yb-GGiX$k`Uou-0Z`2%452Et+4KMlnJ0 zG^Jp@p9YD((0ZE_VGG(bpCE3??K7=#GTLnaryT!wvLdowW~HWwT67KQF@=^+kFhy4 z+M(NM3Nug5d8{RPmeI)rDX4MF1Y4aWhE+$7GHc3rD67?JBCA~47#2|e4P|{>8Lk4d zCVJ!qeYp(&IR@qTQjae+bGJ|QI~+Iqs{jN;td!BBbubM~YH9h{Msj$W^>G7!UNu6b z#917b3~P!w=@Tz#3K2VoyT?n`6HHA(2Q%xE%uShUMUMI*S~_->)^0TwAEkA5ITkkC zip#8@J{VCly;O-H?~s;O;0sLPJ(Oi6c=$+nN!P--;ww*#s4!axDnDG!nS9S74yzj3 zS>KPJYW9szsl{y*dPUvAoO@wFQbbGjSd7nynlv78*yQ5II^*g-fgr{0;TZ9PP&Qge z3&jUH#v;(q!zi?cy#$(2Tg35nwe_E&oZryI3xD)|{@E>!B_18d7KT1=w##S=QN`>d#FP>Iv)?F#8J2uZsv}f)>Nuks; zWki&QF=n=u?`bYGr|=N$GTx7lLD^!$*fKe6WBT*B)5br?^QPcFv&MXH?SOWu>X&K{ zh2~C0jyC7 zlNt8xsuR7zjZZ0_y5F6UZbvN9geo=*M)a_#5*QC}xOd$PfBgi`QjdB%vdl?`l=Xdv z8ntlMkhu6}ZRU~aOFJs>GJ9o6DipXWu9d)9Pe^wpoDZgzDuMiRySA#?aF~=ih1)N! zUC0b21>%gAAHahPqmgS8uu&06sWtTzeu0S{uT}Iw!l_Hc$&Q#07vi~% zpOh9Ac3J#MFSIs}zo&BN*WG=E)s;;T{vLF|AIBgGXJA^*RRKlNDZ6N;-sYk)$YV-Y zo!vsuy>@&Dd7sMlSmK?W|}hO(uW&V zTP?%ee?V}^!lmGj0ZZ)~N*mY0S7fy&)cH;zdz{<8mex`Bm|$z|KSs_mn^J~iJoWiw zjydVpNm@IMMD~Z*S(AS3jqUF#u%tA%(o5rm=0? zXl&b7S8SV&ZQE{a+jiR6wi>^y``&ZMxck1RXa7H}uWPLJn||h;&jiDN+x;S+74zYZ z$R>$zr|Nn(p=z%bJwN&;b8^R~rY`>BO>1OtKQ-&yP4l4e;u()5(*SgCo|@EQ7)|td zt_n{`h|_m`C*r_tuea~m7?-{j9I3KK%Cz&>RJ2>gFncB4l3)z*AjuyqCk}$?Ne$VuMEHeV{YvSOlTDu)aAwBrp3xP4i-L>7jI6g)KJ zkVY2NPZZW7_1`{{hcyLU3_Qg{tda>gm(fLnPZFbdJhGm9&Pn|03s=M*swv$kAp%I) zgUewJ?JLYX2TlP_)*&s+TL~k-vkRxi$3(TyGxu? zV~R*z=_qe&YReS@&(U6tQK|Rga?oua@xUWs1T(w3iw>D=rs8dRMpsjC@1H{6nxtY- zINfgG%L;XT6F$I%DP;6SqE&2}KvJ(!_5^WOV{Zq5hz;5?qg!`|)GB<3n`@rJ9>Sws z(I|yklG|LI89NB+VAgih!fMKP4!97eM;TH$P2t&sMbRCs`J&xreis+VqPwcxn#aN& znmpG~D13V?(XRXEXoo(6haoaKbC)5px`6aRvQ8z>7wUoz_%0REq6%PdN3``9LW#|g zsd8z?vxlRJ50l=e^M!6MW~M38d{r+V%1N7f&}E`<{!R(eDgLFM&e1Mx7E*_#VE<*l z$Zj8J@;q^lWm0bQjqb57Wel^*VVxTHtwvgXwUaRNGu>v-`BRXDrzAn-6l>ylimhEK z`|CU8l1-XOn`m9{W(&^b3*#17@8rt|>Eb8vBy*I58`qZ@z5dJi_lPNRyzJ~(HBYQ` z$pg{WyxY#X%Nbb6w@8j1O3!Ib`Yqk4rm%?@-hq8!>smMwXTZ2-A$5%47l-%Oz$!2O zRvX(Y{2o}j&_Wds3!Cj*Ix>W8@Kqa5e|eFW>`{h9>&}nmN8pRwJ84a~fA>qPW2qpc@9VOfvo_ph$f8&#M?PvdWV&=)qN zr+k{O8|Bf0370E!t@hq(Nh<%fa@6by$y5it0{-!jO*W?gP?!I!z4pKR5}C?6a>xQG zJVLn*Qoh#;3Gj#rPHmsml(&T-B|aggv&5?VA>xlaa#cc)S!d$9US|KIXF&`}!^nPB z800$pqACS3ZFq1#&U3KtaFKadwXxy-L46RaFYjj38(*{$zm@g;bR}vkf7s!apQ25( zLRrW}uS7AQ(62Ryk|BsK@trakMaHufjdBEcVL= zk8iti3UsNGN&*nJ_X5YkImsq01QkrJKyNMqB!6V@GaO$)8m&(_cB0HH8NlZnOY8;f z%b}jHV=&J~oF8`yAN~q82To=ePq;$xD+vbIk1gC#or!+kW^I@SM&}C0-%UXmstFTZ z-0~p8c;e;6r(Y4myoUITmt9W0k?m)f=bCRG%IYM_Egq8{`<3VNae_7~O_*8ouWD_j zEt5w)RcDaJDrdCgSjuN!L5>R!pp|fiIqfHa%!n(O3>aj3IM6-Z5M26e^G=FS0wrmo zrgW1FjylIu-8e_5`CSC9kx!a_TLKO)k$6~G9Vg6BaHcv%Yb;2&;D!}SFq#{&UQS_K z1`*ytZ)Up~ge>+!mVT!pDk;1JcXX$H`%fWRBvFm)T9_5lOkh<;{YXVW+bJy-O)i89UK8O|IByiiPUmFCvWXLe4( z_q4+LcDEVK$}f?j$*WglH8=bJYA4HCcX5UR5vY?tB2fQS)Bktzlc{X+m!{8wKuZbe zLP0?JMV~cRZ-OEs?3R)ZU|5Jx%k??aP#d9}BnQ8T!l#K#uw0dg@{PI{>qt=smZhIg zo_4rQay(3~K0cnDxO~`gos6kxtANk4*=s)qZ)&398uHqxp;ZG@<;;}yxKD!6h16pA z5H$Y^a}}*C6vNhUX3AKMsb3DP)pETn2+IwB>Cv!0>eNF;_ga?YfGN+c{7 z(jA$|)Wr0jtz%7_4A&MD<=X~>V_BeTRGWsyV>cR?WLeM{3IA0I%MiqCHd16RHV>!5 zz3PwVa8>iee4-zUm;5or2%kwDdP+vmFW6Nvn7gJ5Q|Rb>Ae*n_b1Z`AuHLHVXbBe2Xih(bYm z7Eu)5wRpsZLzcz(Ol#;T-uy0Stkl}HA=6iwyLpAHmC5F=oE@dZBFVsW^Z>L%yV3C- zst$ij){&ik^Efh5y!?H(hzfFKH*WU9T|~|h<6{P+I6%^R;343nH(0*1^mK-G5Q0Za zOk!1fNwRlNV$9Q0bd6^KsS#xuK)q+qRzQqUBd14NUYZg81^jpO!5Kn3A|Gf1q<_5Y z{-26}HwWOY#Q*K-6IGwpki~$_2a??e-VjlkygXDHkhC(|hMu1wabe&Bp?NtCQndjK zF_CT90h-VC7e9Y4^47y^J?FstloXRLx zs!AEbDxLZ4B$LKiV^Tb^jvZ-cQr*!cBV~Ehxw#Pp{c0_;a}a79mw{FAb||t}uzpP? zF}eE+Qs|`rGp6TN{B{b)NXQSz0y(u2NDV#4<&x-! zq(3?DN#Pou9A&i(tkK(Hq*ycgNtGEX2L>QXtC%e_s5^BPmPlDGMq@A1%ycZm7a=0; zMR7*OGj~R$c}WY07d{Bx$#PJiv|(8GOangh(%f|W?!jQAZI6ed;?3)~d=pVW6-5OB zN$MW)sX(emVSQOL2mef{==9M-<^~qVTW0pArBg!yN_~p7>=MC;x4U=Ry2az-+ol$W421>Fa|=Q^iT17E z4KtTzRtvRB!){4;c93DTLZEH{?Rr_GXnk|K_4@D&#Dyr)^Oc_=>odqe?)CBcK3qYa z8CtW*PIKt>LCWX(n22JLk`FqkmxZAKq!?J(@mohn14_|9w;%Qh1SJyde@Tp$TsNpK zJF?@TRxp57rR(=6Y2YRVZ4V}~4Z#oStBX>NoxH)TAbxShDeU9Z8V(gG!`b`pC72wd z={zdi_HD;?(BFVvpd(k2T{dLia}r^I(ooE{I&(*gXs-w1*QhO7RV0M?O%Zbd;+#-$ z$`Z*(at?sIZJ4;#_X4aSvOHM22qp;aFmmHAcF8!XFZLriLa6BSnA{}OGGhGFbB)&4 z2ar3C2J1p<{sn0b>N@MbVH}tc3eop)R~oT(7E}z`dOC&odQy{ZwYya537q4^w54lA zJ>``5a{0*9NP90dSqCt@V%EmDK;~J)W!}%|_QrgTbdo}yyF;PLm`T#X1_dLbYNZ_r zG|YNcS9Gp;RZ4oD@R7(ivpfkq0_Q1p4&wu)782bnu0!EXz=UY&x^HeN_}jyH`jOYi zNaL!vZ&V@=@<-lRYOPQqjQCqfQ!_)x07_LIEbZ7iD7?C(LtdrK)yrh=9%U8Tjy2 zZiTt^+yc|f1S}?89+&Kl$uM`_!pM%BxGP^>Lv^uK`)RHj-w$O1Q+zM{byUq}=c$b7 zhf-6pmwfJ)7{olR5h{av47ZsDKggC3(W|LEk>4(@=J7g06O~G!p93i8gRPX*9s1;r zUv%^-AI)|ptra!J-m#?-ZAaCK1bVwgj%|p=$%HzKK!~Xb#4KG;QkI5T# zw8ss$Vu9ZfY!TMKHGT7a+yBPj4ei?aZEGK7_Xh8a+eNlSb6%wc&6X?^&cJR5G#i99 zbY>m&Aq$isY<4I2H&7PUxn;8!f}GfrKASEOo9?Z#+3$Rtrk#OvFx(ngUZ!7+$Dh*K zF`z#bDt}>q&yOWGZszp2qgD#9uvGm~sg;`5?SK|yP_HCnP^EIsj_J|!5O3LPDdD#$92<1HtE#YAd3;nAg6s-#75>=!5r{Ur)Iq`1xk&jm>%V*l6 z0arUJ_Ht?m1wH$oCR+NU`voG(u0gh>SFG>^xXEz+?xo9$hBIOY?#<)NGR%y(O5x?y z<2w;!?`SEbV;M)fuw&zl#`nLdX>{`{4}F1=t^JSpgz^7pbXX8K*jEedI0}FZsOMruenF0O3zD_`2-`>dC4B%+<-^4~-cQ#AB;Najw;Lf7p z6}vF6y)XK&885d5{kxX0yBYo4+vA3>e*JNA^LgA}Lj?tS^R?ssaW6#9;G&}7zTf+6 zgT)2oMaRTSf0l*Tnent>Z>lk5f}7 zo@Fd4vYj>m5n(aU>T<62tV0tB5;^J}NtUX^7Sm`WbN9+n0o!}{X95P-+T#+ZFke!P zO8KG0mlSb}CKVV~k7mv_)zd z3wfahv15qbD}|+jZJ&Tk1xMt{AC&riMMP?}#gDJ8I9TRDl8niH# zX+L!lxezYFm*w3cTRkm9P=G^Z- z#N5Icf;(ans()J4AZ$ET_PcDI!(n~e7U7B=o1P2&kr%DyM=^1mT^X@SMe-JDhYQ{SmD*QggJqvk!9*tU9n(+l(^6WM zF>#8bpKhx{6&-&B1RJ1YblU~}9OIn>k!1*Jza2vhdP*C+fNTTeNrA-PC4GF(UR2Uok0CBQweR8=7js8_i|a^#~McH;(tq`rWpcN$ehx zptO}x2_B@#_U2F}EQ+Hobz#e_UA2wg304cn#ArIxJx`fc z0E20OmTK0SF#gefKL+Z~Yd#d_^@CoeR%0C~bKxOWgW!4SFJa1uKu~l+eHnXY+VD- z7b~}T)X6AP*IR3>u-^X2UA)83+{2$?7Ok!-W_Q0Qr_Y8)-AiOKZC#2#_`e%)~Oa^ zKBa6K?-tPl!5?#I=EZyiJ%_gcg+3p5!BVDlZ36*6PK;EN-IvSY1;RGBgkv2!o*Sxt zE-jM8fTF>l5%P@mI;j-i)`RPKk=n}>o8$2@l<6hP1DmJ5vu+0anoa=D4fKIFCt41M z1&WYxSEKvY)3J62{hBsc8}4zR(Q$C1=>2sM1aODEO;Fh|SFHBI%i)$Omp*@^<9cfO z^>ZWQDou}y+pHlZJwLTjc6@`--UCXwb9=buepWoZOqHq%xM(w z-Kj!D*)Q&bcwxMnLGYUnP0~9HW*Jtuqo92Gqpu$rWyZ<_D2GXbOxKYn9D~(igE7gj z8H0!(k8U_`u*jh4uH2`t2u?Sy5e|b(;8{6}d_2L-_TnjhH(&I`?mZ!FHU}_!AFzbP z){wxD(fCBt?wiZ3?V!Bh7+~er^!-;BHX+^p&M9#sOO<_g@kI?@=$32MUA{A#kI) z{6udD@l-kBYlUTjCo$0U5|kVBpP0~Q0UcX#EJ~x&o=vB%*iK5FggBI zz5~#Wtdv@q96MKW1JqeXRL0oW72+)6S-eb~$f4(CJV`MQEwGFUBVo8|MxU-&>zy~b20@bA+D3I6_lX2A0gA4nEpWh7^9 z>Gpr}pFsJs-&~zMbHO!?KNrOoenzIpv21RR2ExZwg6O0BS&$#46b*)w8O&5&p&u9d zLGyJ-BiWP@iS%Hm^mPEy;Hk`}hh()6ZKjN;pFq9S4Y_3n^}y7)Lqw89K6W8$jwxSR z<7J0g{7|~;tGOt)M}f>N0LKurq7d~P5)5oVfH%s4MZx5J7oRLiz}$x;LOmi5$~()@ zVqmbz3xM*c?4%|YTH$?6buO9{4}6}yn2#u(%J3Bl`oxsWvylAIAr%yN#*r0BWlokP zPYz$BoQo&TgHYqQkfCl+V(8-iB@tk{ob@my4t=sbJjN!`oPJB%sE`9Ip6K1eFHSwv zCZdoTgP6oM#gH9?e+_;TZk;cVZra+A37G`16)2{>rh3$ynZqdHa2i$2^9v}5&k*6V zFjI6uq4fPxFkJsoFmlHKmAU;*e5`OZY zkLf3=kG??tQ7KMS#REvQmG=^;Rr!L?z(p|*FN)Ltm!t6t-#8QniV78owf%cL zBK^+miVV%DsEsie74a`q`#~;CfCOO!w4c0{Q3@m15|FV8Ca@ z4$a}}swn+LsEKFENmoG)pyhINmKGp+3+{7R1%{@Lj+n*j@a=IGv+S=G)LaG;qXzB1 zTMibU-?zfFyzI46keR0h$a zn?P3HnPwZ5<#CUw3Ek+ynd?>SIHhU5iQ_Nf74a)V3EwzK{*ApX zl5`nOvRNXp%Ujn=E?{SpI-jkIU|D<)jun8#4_i|@8GVSpO!w$4}gZ1Km7Y=rd5 z#PJ{F87HZ8!}dLiA1S{agjvjshpOAy`1D;fS{vO|o=$6=NteN$Aq&|0qqHRePsDq2HqL4~8$VcD;rfP*gCN_Xb%j8x zkMZbrv<7KI5l?d2FK%A3EnlB6UoPfFdVz{RM796@6H&-}M4f9-0@?S>Pk??%rOR(K}@#;4N)8$B+cbNX?Gz> z^~~axuiEEylWk8I-=6y6JCDACrn|8(6V0nVXi(ViymVsH<(|@+4fT8({UTX{5VacU z-oz)rJ`2e{+|wA_OGh{tWsL&IG2H!~Wf&&&!7D24dw*I**Vk7!s2IknF_lG>@-}({&%?~ zDqAT5sdc^Sz`g_w=tGrMB%zj(r3au|REP}dgF%w%V}}XqIsWJfYDiye_5fYz+N8g1 zV}31TCQWc2yo%2}iZ~XW)BAw&*<@I=d=Qk6MZ2q3 zU$YA%$s#D%0FzY-0?&0&Md`BrqT=eC@TZ6#*I zlofjoFt<5PQudK;FNX;h?YVM{`V-egXc$m5+*w8a)GL2;l#p*I4@6g>*7JcoSdU-8 zcT1l0b~yCoa+wo#m1m$?eKDR|-z<2jTBq0i;c%353Fy@D%MS$vE5R{aA*={6M4kE3 zw3F4OU8qXt%U6--x-{F#a5j`|Q?~d6!!gMr20ZJB7g51+j!L9#d8GxJya)BtO7**x*$% z;xnSRsPh);&$NvB_hweu*Bk1pv3{NGhmGYIbPWd3U^S@VC$?y8XXF+ct#@l{!DgMcG_sp87IfnXy*!_8FRQpjyF( zSMOs4=INCp1Rb%qvRgrkj~A^kY4^~AHzZoMa2SM)bD&D8pAT5Q@V`3HAJdE+Xs=lO zLiSFgTm`WIIKQuFe#8r}Eu&WMX}58}Atw~AYlzoPBaMNVi93{Y2Tb4kPYZT9jtc5ZCsy>i2c0`4=uy)*+(KcJ>bG$;Z^M*0G)+*K>=Br!V(~dk zGdLs>+&DO%8>A-eY9iE4*557|L{}dw0O)>`{@9WG1Fh!2Y+S_J!O7l8#MQva_VK^?TFVn{I_-UPjlD>em-}$F-mV__UN*Qe(nc!%ZYxNbk0j%EIL} zt(7qxK9TotdcU^O8RAS|@NT(W zAhmMI#H}|?b&CXH21}JX77fKAPViqCXV9LHAVx43)D3y+ED>VLpF(A@Fa}8_*d=(* zLnB&Q1|Gv!J#TZ{>yg9`8X*fc_kM*{zSZ{V^fe2LP0q5kw4E|3fseM{uekas zW~7I${Bp>^)n(!H59qu(4h$r*d47{8!3lW9rh8q)P9ZfDBcY(uUL$)Cc6Ye5kI~I7 z?jhs*AB~rwpr4yp0-NOy5G;Y`08SYvlp+)|Cacgo0cDq{Kbpk*AE2HozIVRAGB++6 zT%ZlT{Z)BX{hHZi0|uapKVHW8!xe}BQBYUM-{&g~l}+t!Tmbr(M)LMHu5N!z7l4(a zEC?eCkCE#z1aCLK?Pp#lyB+X8K|_EbQRr~zIEzqCqd_r&cM^5v@1l@t9g}tD)AH_p z5zoP@gZ&1d?#73VoRMkR;+_r(P@`=~cpHEDE0#n+jO{_df`HFaK$I{`n&wS6xg<=5 z2Jd}@E`(G76h_|>AG4}CPtbMh{HzmZyQ+t_5Tp^lh%!c*{t->rW)!n_12}W%rtdZ< zTxDh=CvUbCD&z|0_e)u13F#+H4ZN^UBp1Q9)vh@_W}K?n*GP|@g0ipi0QyWhW6@*6 zD>rGxT1(dXt>+Rzcy6kCtSvP-+2rP%AI?Z=1KswXjeXYlW#-s!Ua0z@Q`fIQR1dAE zEs{C&bva!J2bE+g@}SXfg7dA~7{4?de)_fz%Ujv-gkqK8nBqV z5cO=~q=GXTb(y*i0UUP9xOS#kMKR?4$LkH9$t7m``0F-#DgzAFE-jj>C-UH6vf0i z>5Hw!QoUcQeJ8%aSRzJw6SF!R8O18|AiD2|$-W1$Wx@(=iozVf$LD#vN!cji4Rf+z=|FM*b_mOdTA;`ZYBAAlTbOB%cM z+>$CVRBRn058^zNg1r3Y_E>k-xqkyL?0*!;KQJn3GwXkARIyxgeGEXUkOn5ifY2s9 zU_%zdkAT#mqUQF>mv(>92iW^V`o{2^1L=ccs}qLg85uA05oG7Qc-BpuzqD;ChE1EWE}^##p`N=DeFyVa3OH8(jJS+% zNLtA!fR$@9ai^m}W~zGLEzIT)Lz08+$aRl6s(Kc@I~X`t*3fOIz45~wN-xR2L1}$= ze5bST-mqj+3hbn-If_?s6p_i=CSFQ5rOrNBPf?}cd)TUGFZAY62AT5qp{M@?;2J$Y z$}s~k()IvI%hxNrqJk`h@g+teDdr8LLL5nVIFENiOjcP%$eksORzt-nAOyM||P znzbb`>;HCTp43_@QVV?+v{8u1a`lz_IX^;clb=QSfq|ZRqdj%R+q?aY>sCUs8BQ(ck|s&qry3Mu#vRBds;flpkp6jGp#1^v)EuECIb_WVc~3yE~pKeiIwDb^wN zdn8LyQk*E1#XUtD6?m_8;X2lF3SK+uiIIQi86UtK6=_~3&v3=|WXKA!9rM2EI^Zg4 zp~zDfgbM~+QF8%-jb9$l`ZUTr+)o^@5*at+d4kF%HwHdBZlTSX#%#`)f1T1Jxio#8 zwg@|BTI2NO>yJL4Oxw-&TPP=1J9soep+NspC<6aEnn~Lj04$Y^?3|3O4UA-+tn`ik zk7yKS#A(L-@q@iXoI3&Xk@MEkgy+!A4P^qMjdDeBz7}K zBOodw;)I+yJmC|MY`{N?y z^N)sRdMW_47iFDRtcHdP8M4w*2UVsxbcG5BrFMm+wJ<^NI(~+dTk*9`0$Q$vX~va- zAT_3LziIxQNJvO^VIp6a#dZ$5ec#Y+TAs*U>ye7I!b^Zt9h`X4;448Y#v|2}Q( zm=y472fL1_ts;IdE#r$0&mMA$QrMF~+j|U0gg^cV2Y&E}!EQb4ns(Bu8&hnb!lx9o{Dc zdBY&OTCX+Rpc^49>Hy(BF1DJ%CdfAvztxKv7s&M+OE;YznxR2ZD|Edc_o3|w#fC7#9qrEWxXM2$m7W#WoQ?_!L6GiZzyrB0BLWnC0OiK6=WvNE$ zl`qQxD+@yBEGUtVa+pq}hvQ3CI?FNlg5v#AZ!R@%{!BVpj$sae!C5Yj`B!1#{dlIe zOZM8zn#sjfm-jPhH);xuh=JPk%oXdHna#-{@kF)b1{>_eLf~dr1#7Ye>(KfRUM7%q zn2+|FVPT!5ygl8cF&<m^*f4W1TnmX z$!$s2m-x*xzVzrped9bBs82MLdzWPEiZRetKDs@r3^gtoNS(IYpXzcqiG+SaoJ`2m zvb+@vby}F;1P=&T zXtm`I8sW9%iHrBgF4?OIFv@$W=8aT2zN$R0LTmxa+EBBFzT>vuX3q1+4SCk^%4w`pw67ygoBMZZ(X%!Oc1-W6GvI_(_R}0q8UQp^*ff!RH~-zD6Sr`ZIpkuIpqoM zklQ1$WN3xzgqzujk!L3q>~XO_rTX=@@XA9rXoNz-2va69VK$QqV)6`9rQ4r_OWT24t~+sPspF^$J_Z;X>kE>1j>>M==cMdFltMqQ?WGoU`4)j zDL6u!g-X%)C}&(<`SuqO&=bOm+}b9G`hmG|DYA}s>06BE*A|(veafV6=Zs8O$H=>q zJK6Z#V->TGwc%9-*HpMemAKo!37#wQmOPJbTATrRgBy_N(|B5WyN&s~lVG$Tj1)Y< z%k)kNMt#&&1Mg8_O}-?)e*T?ANsf}oX8=*f=Rcx~|6tHT#>l||VDk6oL1fJTtIZZC~`a&JlT4(Q5~8^_*zjHG(8p%#&3!tH22MKGd!nb=CO`M+*w@ff9%rl#3lbqn`4M19h_&Wmvytt?#B9$}D@N==Ufed0o~KCXxnG0hw> z)0T!*WoW;d79IrF0h&H?x0;>M>>Ut<2WySrl6|^9s8)KxNNm3U<2O*SCf`hX>22*Tc6< z^xIz>MhBD9>L@^ud-%sN`VYWd86!ti8^eE##Yh1w3Sik-_%&D64T4wxzpxmc=AN%G ztqcMhrmM|ZW9nfI1GAS7FR;x$hkniWThUCirO+~$jNu$D%m=`m8=W0|(H|`hGOI0| zmot}4qD*w`Zh}(bE*`An?_3ceHjK!L4qeX{o&33?F0r$?5IWoC1;Fkmt*PVRu zyE(5tKm(XW5}02ngl7lzQRsO~B_ba1vJJ!%TlcX!jRU;VIA;SE^dhKg72H|+mAt7T z+zdvOooEQE2!la<@8i{p5+dju7gf|!l+qVs{fY>KhzQp&e}bgfh7fB*QDjuDE*T~! zN-832MT_%F!=UtLFOdSlnD9h$LkRK(wSw{;4^tH*lYjw$wHpReD(J{}Po_^J{RKsh zRP@tg>Y3`_;D6hX;_iWk9#DvYKZeeK0LJ|8h#LMqcq-`t!FUYs$wP`0D*Rq~JBVMt zI&2i;5$F_bT+{9>Ei8FLR_ zQ#Tn8J4aO;dYvCrhCuovI;=Y2h{m8Zu$uHV8i(?S8!Et)6$3gOCQtOsaem1l##Q(+ zsvq!=T0Mi61QU)~G|02)(D}#YD)R&zv^aRg=04<}wAqK|4pFpE=jO@z`$a^txHF3r zj>R|xXs_M1cNDj+I_S0PQ%`09M%YhEOSUu<%{SRAFTS$`(xXE!;I8i`4S5Z@lL=kV ztsIG8%QHzk>YudTr9r6qS5NMZVr#J!VE>{5$9&qMS!IaB4vhx%9}1T3Fa@!WdISJU zkSl&EvfH(ZVm@JUM}WDNFzxsR35pD#J8ZeITUslNUPmfYfy}L({3Bw!j+mYzCX6fwS5wN!U=Dv2idfm z1%5qXOm_8sa3f>8p8r>oL8=#6#uQwCQ;S2fvRlp3BMs&UmLPcCT?CXabu1X0VKU^g0 zb~G9SMgn6zsI3Gjr_yf!s>&{h$&R-dcaP7u0Xlxjyv6XXIi<4tgBKKX8VcgF%*GMJ zs2$Tk?zoqtX=DeK*N$JZFiRJN%N2K3w|o(B-Vv|UZ71hx5~(!mxWFP~m1iR$Gpc=% zbE1Oa(eZqTd>p}c7=AM350hkya!Od9YEUL%-sgX!#*|5wJWL!pdye@aV~L0pU~$T% z3(+Zn_vVroocV$F7q9stLNhWC@^VvT_%S=dg3sw%oz9YK8`QDC8cTLEh+?W*vz0{! z)16;&n3F8+s%{TYIMp&1j(5(h-?<`)=U>A;as(<*NI>T>@kcNJ2U_BPA+^8;h%Inv z{_j1INT7c}RzToUYSj5jw+t_Tf*uyOLR+1)?T-;x)MHAM5D?H`Y^-6k7}%=iQWg2C z#yUgAi;=|u^bW;(1r-$BrjMeXYiI2e=ku34x!Rta7Of9#k5EG)@>9p%QO3R+2^?_t0vh?+M3A zz%uia!ydT7?MoIoYCI%G2y$L-J%~h#bAabLc<%T4!V`}GOrCePSa4V+NMVKw!Z7s= z7fRR>JguOdpB;V>*zS+`v;j^_o*MVK!H{g&z40d|Bt(XvdzJN2T*_AxkIN^P;+v(X z=|{`Asmgo2oHB^MRuufAc%TX}IzQv1F>pP9!m1>X?Su8RyJAOea&Lv>{84)xaLd00 zKUr^&vP_SbL&_g?5eU_c{!iZ!V*XP_SW6 z*v6v)KYAK>N7l|I#LD-X!9x2jur!5Vek}fVpbRFb{^2l@wK~ka#IMLT zQ+w6iXufG%f;zu2T|C82D?99 zR|7xz{DnhfLLf{+0xkaik0Uz&0EbpIvILsAvyrmd|DDlM03Py^N8p(waoSlI#7dh* zfy(8#!zl?I4k{{BCPEXArBYCyDYU4>N$!WcSLqL~-l7i^9y9m|;p~aRuoNX62y#m| zm^H-VV7&hv9i9DQb$~PX=q>|YVf&W&z56bUOLs#iuG=A~QjrNRbEx*B>?=t&80e3v z-q;8Z%Wn{qJ~3zGe4j=U_t{HW)bdt)V)${RD9_+m0V{Xzaq{PQt;9=5ZMhexW$X~I zXaIL+2+#(RVU0T;Um|H_H(;YZDx3e~oQU*R`!`?AS2j6@_U~MPvEw%p8zz_xv9;lc zmYKd-7?pBfiEmD-&Aw0qznE|x*s$Y8T)^n`&CtS2u0t{wF)(l36Ff`rogq$CU-huw zOKc#udyOWV1goc_m~C0(9|%HJAncKTumV4@mn5h#D34A_JC zzLgZ3UJYTfSo$*AlY2{cuCxh)Ce5qpA7djnMPiY%?e9l>OPPz0A7=$ua4~TY=RsWx zKfZE7aQbN+H{WoManwc;!fe~_XpV8lcn35Ia^?O_^vzser71rWWW{`o85*fMnCyndj_)Qgv*vsVIC5B=|) zrl_*Ja~tTgjQ^-flK(k&DB9RK3IUuPj6}`s9UT8BjQsz#a}$+ilzua;FBMs7LS3s6 zNTQ-N$Uq?~&!b`1Y%izg!BlXg3lTzyKZaqmF$YR@y#cmPx*2y0H+HEM%e;|QgELlZZjrSiFV(1_Cx#5>+{dNZ zSXnYF56%x^>Pv!S5TXD&q4CK;+8M^llXk=Cr-m;f)i``H`6J1^Dcmbbu8T8~Sq!o{ z$po!F?$h{u1(gs_h<7aT2)pl7Nc{*7$#Rgkn7JPUpo@+Ehc~?-)yZDYag^8HcaSHA5VAFG(#PqxHyUa!CON8f>h2tu&&MPDi459L;c zaGxR8M8-qg$AK9^dyUY-c$*Tno(SV@(-QaM=t=dO^h0;@Czr`){=16=XuD}xm@-qnO*i%fAGCOJ)(c;`;`W$udd{+*IB5S zD%afd)ns5@Vudmn+0k~PVQt!pqZ(ojCbzOsaxrCt8O(Vb>nWgL!ZkNE&6nvkOmIrJ z*ngTCFOo#p63;4iy_?JPE1rDmU00S-;^l^GSO1A(JrD%3TqPH-o<2X}XOIJmoOu!Fn1ySux)yMnM<&Z!lVCPalF&(5 zpEXukLJ+>thhPo~0g(V66VCZ|`~&8?uqNkskNC(xDXxV3$eX|qn?sN8_D8C0W^Oqj z#Bs3gv!~7N=7;-ELX9UY6fFcL+Dmp}sDy4?Ev|hgkr3exF0ygLx9|);1?)&^vgbr@ zu~>3jk{^8O>?S_K!7+z$qI%+}cFJ>%PO?JWl&r8u>}<~xB44B6u#46Qzx3J-RP0}r z{*EY|xN?W{y6R}?C5c_O zQ4{>KYlh_effOzytO*jUs`QKU?%;1kL*V=xW7#9SC2@Msoze1bT`vfolG)-A63id% zuDzd1mTE{)Zm>23B9YOsXlQG#^?8iDkn z&;QhlgSMHQ_U|u4Td2QHasCGxUK!wEYV0I!Y-8$VCJ1nR?_m7KJN@ou{BKa6_s2>! zstT5mtm&G0aPOJVL=`M8#z5oxkqdY&bGZ+hkV`Kpmv~Y*h?qulhyuF zM-Y)|I&X6oo-W0^OOr`>z>c$YwKJE1VB8JcKz6k=1lOg&e&hC0HH${J?)QD68Py)F zx#rXLrlVD#{)#1=D~}R>1IiB4w=NocNLsHVLa=%)6jPmT_|I?-TbdgNG1uW*IEoxO zg1{mH0j3}Dv;ivs)%xh zs1NMivg1hF{b@$OiKHRDX&FtHUgZ7P`?m?jQJ9}N;9!9+gTht{lDV%*~a z3*QzKN|K4X=v>JxSkoqj!qMQE5KfW5aqwo(?RT@@ToZ+{M#p9@mzm&;1MGN%o5aeO&jng zZ}sGt{Hb#7lQ{n}mcgJl3IVgxwIPeQYO)mZHzs>LlUpx%wSjQ;VTxP%CD7nq%0@}Z zP&qx#4it|Y`?dMRBKP=LlTi}Ua?O?g-oBk|273YnsJGFPL(eeGST00H@5)OO@}D_+ zOs_q?!71%*tlhyAwnHGp)EavsK6X4x_q5av^vF|Fqu2jDTtJAS_`ku5~g~cdj2|_vyM0DE5ljZ z@DrT5cbsaNOh7Q%^~yaWhT{A?zk(c6Nu8jjgxaT7DvCSOFEbm#G|5UH&vYg~3GQ-# zNC0NzJ;rhyq!L)jwo87Z1nz6;6w!o|>0ktj=oWkM8Ms24k~pOg$mHGifmL8Ywh+>q zMu@d@B(C;?<6&dZ4ZllSo{3EVw6nJeK*P;alc0wox_%kpb9pFyDQz_KgAmTSGJYKgI!Q5Pk&T2GPVfevbo&0wnT3M&1`%B^hiQv>#o} zg^MB%)$@(D6n^5+cS3w(y6Iw1{b#obDz0m7o#n{txfVOQ|_!&4L)Y_88^ra?nY99XIk~{lDh{!suctk3017H!2f!{mNtN zqv3*-JlH@fUArVZven2bXBVBRi4UH)kkp?!4W{@o_p`D>eq@4tU<{rd~+-*&qHf3@a+uu0&H zLXQ8PP2wdcBJcTnpddpzdY~gA`X|8S7MUd{htPV(

-(apu|ZYzl7vzqF8&U5c| z$aR?IczE=d_2r{J#4GL0%x3zE=>h7O`eLb*F0R?k`RfNO*F3#?>rEyUyw0Rny_2z{ z^mme{Ue$T58CqFzB5<4Z%5%=ik-a+6X%6S?o{l8i(%ZDX1D(pr^fWCcyi8EyeK0{J zd55-H!+V?4=K3Nc1~Gye2Z%|wN+&j3CDu+g+!+)Iu5>B!QEIue$lwn`!1PSYaV+!BtHoD>g~Lm6vXo z=_6FZ^hdYCP$O0GV;_8$M~bmkgH1TJp3IxOLs-c$xg}*odu(&EtTewfce&j=($#8D+=kbme?A%E8lov^K0c&p{=$6ra8|B z_s9oZ%`eJdI*cwzGRzUt#!HN$r3{f3_2QW&F`5I;nZj&9Ha8+8!0l-~(JKTL>GZ~P z8IXhYnIMovkQ@%65d2 z4{zAcKL)tn73he@)ieyZf3Ag1<3FpI_CeaLU}MT6LGgP`TU|z=SmFFBK9oYDa(*-o zqs?<5UT~;LqeI_rT7mKA2yS*gDAF^>8G zFt4GD*BZDk1Uj^GtW3S3E|ArE>ZvZwq%FM=wlIeR+`9SY#BABB&rLrxcseI4uYFR7 zyjNwqY=UY^2bYDRN z^=c?z6v^Beg>CAuPnSIxn4=l zU%hfIt5aDs%7r;C8H@=WDflStgpNFHjw+7!mTFRMvrW|`i`htB8!6aXZIjNv>Qp2= zQCtc`MD4;FvaNHK5RYf`TX?uuue2&rNX~ zL&9|H9L2%b(akM0)mLD;LF+;u65*aKPr&q_O>;4@69os9qP*U*<>>lI0fc#|z*9(as851EHS7I_dd~)avi?wX8+@+HFt|_6lO0kJ~Rq8UtlbC*zYvWtc_=o&L?_J-~23reqE>JrJY^JiEVA??|$Ge-3X znyx1;4R?qpz23@$u&xk`=4+C?h-HjRTgEZuZyz_dzfcPy)onr&zFj$nT>EldOTJP^ zY3D{{OFzF*h=p?uBSf~=5>14MDuoPq71w+VtoMs){%pJBcxf;6Ema*keC{e--XM0c zxW))6^NQF;TFmAk|L0{&3mJ+lSt4UM$@{Nl55XKdn`@oYsJbBRki`OtaayYw>(cl{ zHgtu{+riE{@+!|k&&zN{ali0{!JlizclYY;SM&N8wNbw@=xP9OIf5FKkm-mLU8ZfUQ2-PjqL0~;U{0@Ya8K==kG6YD+BwX z9?~GMssy-autJ=(20-6zM3cuc!J`S;a01z5Jx3R`AdD!t&fhRN2p0Rz!R zHvdXjjRXT8ZU-#RwUzCf$m3NWnIK#wK!p1ksk`fuXgRr!I10bGyE*Qa%YKF^cyhz= z8#xojX9|O>w&N0CsOaJB z9tr<-jBrQofg?(D&f%8$d{}YeapSQJOQ=U2L6uzUxH=A;5}3`o_y3pJl-iT4*k`jV z`H&I4oV`(t(pP5z?qOLsBz)W;J7%Kf8|+B6C+6ZSxcFvb-9wyY^)BYTKAiJXntky{ zcb$yZ7w_b8g6rUX0{-Ij~{pL zS;5OdgB1iu3H=?ah}2bH84e`PTf#0nZ$fA zsDJAbQ2*Cesr)}2Y0?09TW6<#p$n6ty*{bn4g1oY*T*~Mo_#LN6QNO+R@ASBfFY$N zPnXf!lrccj)Lh_P^wuuYeKTPn z?HDDk_lff&?`D6y_kO#7dpmqHk>zn4&IG~l*TiBwkSY~wN@qIzo|46vGM3(Ug7dHt zbMD?(Tld(YbBCf2w`|;B)I_3~n3id=UEZGO>F1t#sv5CSRiQ(JqsqukL{n|)iPrpk1A&yVgV=CpaVy z5U0|@^%^)^E+I$H;d4^W*(Kn?t~!YIG~ngK5Ttk`4AheO<w9{`>;J+oC(4Q(a;orpths{Je5Mkf17styl9Qf8Z0-VEu? zEKoMJAgVAjgcH;6?ds-d^ zb38^b5Un3uk`3jSG_O$c&O`vQ>QSGwYQtppCZ7QN;*MD>1Q*6h#$pf-s`TKK>lsILuxq z5bkVfwkBX_E@cxAR_Q(hn$aR5pnXlG)#& znIpxe7*p}V8HWY@TLT95gx!NWtp)jlhGffTRxDv@OAc`zCg2au$!~6&>@tIsOhKE? zi~6WE#XIs|!4uHcMwrBA3(%TluQKo|ea5WPL(5`IHNxOlX_ApyPHP8B(2LbOM^`02 z7S+flrYII0F%Z{Qf;#0pt#Ikz*;bPgkZcmJ=;cwe=F*>Q)LGM4s_D$ya#S_{fT7Q)+mA6f@kvyh$=j;v1gg#E zDLKq8&-5a@63e>xQHS*9jdw=nT2t37ofP6{>YYX^8zuY7DT;rO8JlFuyA0D`Hwxk*}?qMbRpN^cO z^B;>ATJAt@1Fqd?G6UkSc7Bn^-N=C5*ydws*qh}?u~+W60Hq9|gq(Llb}3c3Ar92N zqGP6aLUQUA?oV?thp9Xb$tP#*{CCC*5tcfv*JR7oaK@AI)>#t*PIv3(AXwkGg{>kF z;lc&c_T%^DW|93}?v8-Zt3;9c;@O4I(y;Rl6s%rZJ7sPQy4###cM!*nh9-&Bhv7~$ zY$yd~A>X|;*xZiKlZq{WQ46VYQ>!sY=Xqy#jLDs#mD#fGsiaxub8P3O$R)wKU-}m3 zrd&`xd<`nNh!qnNEB1I55W+trT&J9hrj#{o(!ff(yNw5aU(k9#<0Yakzu>H7agiRY ziFHV;p~**tM;_&V>Ez@*gcmnbyJN^l=!Kuj^M&&XPsr79V9?@B*TN$%IlZ!(PuS_u zY!8L?zPK&fy!-rht|mEracldybycan`w4eyGLQ8aB5_iL!Ds=Whukx!5N8qlQVy5t z;mnCM+CAUGwsbPv%XWx|_T`Xx@puS_GP2Q8log8v(h-~i|%lvQ>Yw{7mO9$ zVXVy`UQg?5Fl4&+sTJoOR*@^XPPcDErLTV&T1PDl^Tn|TINFN9@?F>+7GZPGW!IJk z)37hlE-%q)aj|a(iA{c+?SlTY!h529V?IJQ<8=+rIa)2#Y`BU1;5llqy#@Z5tk+we z)@vA@UybcqaE^GC`D`CH1-u0zP`tGhj|Se__*CZI2i>AR#G}6?#NfjoffA@WQ57Ht zHjL7Ws0ps^WaUu^dW7j!|0oW+W&Tx<_L33P<;N#COAmE~d6kalEhXNa(5*dN4R@p# ze5yBYt8$Ag_$Wj4g7L~G(oIsZJ-D6!{Ca zujFj@PPWpmgpcH`-giBP+vQ*EXx?eQTC>~x+iJIn57Fo^O0SM0Z*gy$v-g+V)Q|Vi zydrP0ZyK|{`@U+oV9(iMuk5}ICCdyI02xP;yCOwfk;%6|T_Kg^-8ssSARsGff6Kpw z|8@R#G`2D}e21C+Uy+plWz+ZH&wKAG{pN5{`q%mYr1nTzsoxu58ER|5YfPG!4=|s@ zX$7qGv3rRr+*lEp2M35pM?fopL%6g3l zmt}?dm!FwPQ*3Z*=>gT{RDeK6Rd#Gt@)S@o3@{s0-f^#w?S!Xf_fSv&fX$R{8w=Op z?>g=OwGs92w9Shj8BMPeH5(q|?4X{dINL8;pk1+wL5r8A%cR?Z)`<`rq zO!*DrAiuY0`!EYXfHOnVRUBcAxu3q7=NsV@?6P4?1MX1nnxS3hgXD$~Fl-lptz@Sz zh}sI59K({qE|C+~XfeF}39H25zzc1|JZjvwL56SXtm)*p2-Gh=_|!wLvmd?lyc85eX1o zIrbItjOdi>?+MtL39M5|vBCIp4wV_LJ^``P0@wWqYm>YGq`&=cM7V!l%>48hw>CF% z`oD7Nzra!*f1mYl{QRPT-_gQd#qpgCMAFs)VDpb-S1RgA;l4|=u#*oJgyL9QuBUw5 zW@&=+KMTMGtyC|O$wfl*%CH)mG+WUyrD%Epd*Q)=5rlpD@S;%Yy2vjsogT(@dXC3& z=#$~;^YZ$N+JiwInCv5#k*e+_GZXh(dfCnt)ktsPeL8SLsR+&wetP@8yvE*E+l3mfY z%@}c{@{n~E5gMLq?{YQ93Ms0exCSB-80}eq!e9uu!pELK9`kdMq2m_sw(K*+yRFzO z3%ozsJz^stXQ7(K#r~Y-@nqYcIxv~XpYlb;yKl~o8DheaC>RX`x=>sb<5xawY+coK zJqm^>kX|1e5%rmAXOXsFrgUqUJ4~IZz*R;I*+B*`aPE#~SWlFl$tF^`I^IY&7ey?j z=$X4_sQY-i$h>t*2ZeWY`}}o$Q{B*=Sv(7^+luv-Z{G~toVQ2Y`Q{;9YOhNdkfpOT zM!0wN4N?Q((?|RAuAK1*Unuj+-8K*(PBccXRF$9l2k^*1=#8B7Zd4!sYE=K7A^a;O z{h8wmn>!jhm|L6M{0A3xqSE%eatYFFl3+C-0&JqH$Y438w$|xUfE*cV2sc(4H&R;6 zuewf~=>P|{i>88CwG>KWnFV&#H_BbBRza$P1<#h$OoHtRullE_>E#QMtR1R;$EVD@ zEyT*E3zimd{Z(sxV3l={jg%&C7lnvi*SB1=E+-)_J4BsmDZZH=tgR(c#~1z#vMP2# zY&$JoNzG0azLG`zN;TGPd+q5}Zj`KwDiv(%x8N#398pta>u^lv*$s(JW9y+h7Zahf zztp;Ef5%QRu^)KA78>oA^*E=kD}<2O;+=M@D3-~)t^+(z5S29Z9v-81=uBP&tK+j@ z*m9#$RC*O4sVI*(K>>VL^LSl2PUBe(mE=kVkDW1D6ypnU?w31`4WpT|UhFV~sV;L= z6jzGe4%_*$xPX)a=zXY)<548BlzKlM;{R~N8{HsK) zNJeaxmDAl1z1(>k2~meKr!ZWCT;3uW(R0vItWoU;*lRe7mV1wVOq4=7bq?JxQGEpR zmGzg>ff(cDA7%5Sb2Hop(+E=^frFi=yGk@~AqEqUU&CFLgGO|?gGW%l`iCTsW!KKw zx|(E`B@z45T~kQyXOCok>kuiI6FmL1T{y8*p)d5lQ~r{=KcGLmI6{MlLL#BUVGgBNaU}?9n0ku#b@~eWLXi7^589a;ATajQ z(yWg}Zj_n&;=O&teR1P+dsuC|{b3@vkD=JM{K87D(JH^}sJ+a_yvp*p%+dzh+1mUn z_27Cf?&vtG)pY57!hnL+zrHA&adyc(Be;kjRTR!9|FH4GAlt93SFr{JEJf~n>tYs4 zh5~-Rt&j<06SqHqC8}@BKeH?=T!eQP;uw&0a)`7wmyxovP>p9E7&qBOOYjmNwHurQ7H1=!#VimtPCtZ0$KZFkaa^}-1UHT zhg@g^JxwSOb#rb1qpmH~d==jz1{pCRLx5>>zY~}v3r}?jo9Iij%SNu)5+nhfU0&yA z@9IMwa*WJDYwaxh?4Xk6*ecEs5I1XFtJ__ff(TsL1`VSs8)4~BkZW0Bg2QB-j#K3O zqHCyMaEx%!Q8zVzD-W;Mp@6I0*2H-Z`RZevwgy?feb(??iTB}qC&IL4sZHGDS{4&T{#834d*gd&R`~&2V=TG3_b6NCR z`Y{0O$B!sM(4u9w+Wo66v zby*}H%*UEsYTMGVFhp@JDd8S5t@6gNVJay{PyyR>w~An7p%VIQ+26ZouxaxrI35=X z_FI|}YYP)*8JS0A*gWquc-lREpP#SMd*HH|q%CX{nv3!iCJb~Jo6su@IHRhlqPmW# zzjzd|sw*B zzNhE%wHKb3j#ZT>qX8rsNY|xDPbEOUG8J-HQu2EHotAjV3PI zHY5VyH%K;#j<0ExSZx-aPff8nrMaxvoqM0L5*PyYk$f^>az2v4)xY&@MLWWQS>(=W z!on=cM9A(-K`97v&;#Hw#f@yxu#(=A3k2H$=@%)U&wLEtcmu}T$kG&8q~SMbiO(3z zC1=3>OM-9Cmc${JEp#2W48n407zXK0G-J9>w`d|X4(x`SiHVac>kTbus=6f@=3C%p zi;2>KD5AnS!q^Axxh(zkvm>c4`-ws^u#xy+Kyxo*= zx-au-KmrL1Q42dD@`IVV$mfE~8brj)5F-AyeVmUo`ci&4V)BH=m=X&*>CA3SCVm)4 z_cfewr6lRE$1#22GIbvlcs7ypWllgl?+8KYJLhvnrbX)DW~jY7V!bn7LF^UIIi#w- z-*b3SA+?GiFf`Og@5o_Aik7vgyXxd=eG8%7ZCO}p5XSP+-0izL_GkzjO|HF&*(O4H zg8Xt$G(OpK4>FG%8;u3;UelPvJVFn-8IXf+Wuiq*0 z%*X_f5bPei{Iqt_1|s+M&svI=f#k#KyB9V6buHyD2=zae?r$%8FK+*>;Qd!m`ZtK? zy}q5FqoWmhK)cdXIKr%g;uR3L(26&Jg=S5;4T4)g;w+q4+NA1+A-EOrM;u~D^-Z{v z)nf5t$xWZw*vxdC=5aijy5Rebp&7CSM%>K4?m@VWJKncC>T}WJgU{81t-?{KCKzs`O&)zZp!tWamaYNuDu%wl+^5%Q{gMyb`DEY^oiK!2_=MK?ynOP?xe} z^^GprfGVil3p0$x*ai8}BZ}la0MY?e?%rgjGQd6OSqzl7a23x%@o^JSb~{J7-4y*4 zs6e`ro~!*_Wo=L12Oo{;?#`@$szR61kO-)9TLI0DBPUF3g*(JTMi`n#&l#xwZLcHM+$x&qaeq&9$wy@;#R=bXTmR zsQATdDvT(C&5}W20hqJSnB0DEc z#%M14z!0c zoFnb1JQKO_N1H6llvW`Y`uSy25mClCUV&37Oa_C!`{ZIOTH)ET41>5GN6a4SH^L1F z>AMfJP6y!4p5WDHfi?arVL&tBP(^^&fb`N`Dkc<45r^0WA{Os=rrE>I}o)zP-dEhVbod4B= z|2)s$%XJfTQ|CWaLjRa@rs|W@Z!r}c!Ic=ACgHFWWvxbQaevD*r2sQ1ssdneL6brG zU0rKnkTLt_rhcjI8{8WV=PnWna}?i`*q5w!Xj*d=f71Ha>YHC(j#E78zOOGg^dQMs zpZit3bv%vQ)6A3ATDwY*$X#`WmbDEh=fiFd)%Vw%`YS7}E3x;>`gztBda!Q$!poXS zqL$JRs#2_!xGvQh8@zhyk|mg%X=&(r5=~lMh$&zmu^uVl$1jVps)k{4z0xhoo5wU~ z9mPLyS{EN<7qLx$KDuhBe#{j{5=^#7!T@aM)w> zHPwJ70_1&%#%d}VbPYJ>{UpGC96>=c4%nq7OS+HWwG@W$mr-d0l{-F4QmGY;KyNRN zV>T*i8(pk?e!sU4#-PA)*^ZMLcj#SySlcbC{iGmApVPmh;-nWt2*yGAF_9X%%l+3Ddq(lP>(F|$@`M3h znAV6=nC(8SE0lx_UA&&zw}*sFb0wqGXEqlkBblosxyZ`bcV$rr6M6g!Q|x0q-s9PxFGjAJYI#PC%3iZ+WO0uNmnVmrRDLWej7OeEjRzWR9P zxffcuA%0jP^;%0OSIp*ZSr0a&xFU#<@8var=20vSK0msPpCeXUW`W^yA^9OR3&f`= z9x6}2YY)nw1&sI!OFJ~PjHu~k{O72vnG(5dIY^{os1ZELsCPuwfNuHDop**#>5euY zW`Nt;LY~dW0#2TSMNphCp|hRzON%>=8G3;|nLsiK13bZyC6=1&E8Xck* zs1}(z0`j87;JS$hT+B6%OLn|Ch*$y8qn{}QgUbYkPj-M$-5cFMR>G8Sl> z?x!TS0znCU^7{Ofe*4jc@U+*=kGy?{iuHlnQybFL12kUgLF@~j;L_%Uc@>^^VSaLC z^P$G$98#Q!Kl0$4DGq=Cc`)gCK8Mo z$J0&AP#O} zMh!#qNcc7qlmi4R*i|Pb)2aOty|ISSA+rIJZRQ(_6LUmvXXF^qBoUgI(b$}6I(6q_ zi2LfzIGHVBax@fG3Y=``*Eu~NXi7_DO7o+0md@6~bxpF5K4GI6()wYy)?0@H?vu%+ zBr@)1rWC6YhD8wb;tVZgKOGGBEZU$_`VTSaB+3#BjZzb+w2<5FD5oYL-Zg;?)?ywO zo0)C*rP4aGDN7nn7u~VAI!j9|nI7(g5H(J6TZ`#rBNd=Wm0AiT;afX~7@U-!(~>Nd z_b!QTG_0Dj9}$+n$Rv~4TYOKe3^2cJF+~4dUbcqy;RvBRzo{`c7; z@l;ES!#76LSuvQ_ABe$1AT}1*OJ)aOKk8gAO=_9ZElg@b`{G#J9+;ZR`pXYwBZqJ|S7pq<967Xfdjpb4D z7X_~ll-j)`s2Q*iTBib@Biot+x6qn`0n?045Y3j$ty;rM#F(Yvi*7@fV`6=Kb&l-M zpxKNQh+RE2{TOX#c9}cuaK%DG0~YmXpPm=_OJacRF=Y}P*5im7KB2E<-NTPxe#Vx1 zeDCc`SBINZI63hSJ)PrqcuhyA;Tc?BP$lFM>Xm@u>DOnK{)PFwY+FC<2~c|veer)q z%KU}j!|^@z{Q@- zfjA~KbU$TQAqty_#1?h7$W53##7hG8l&@r9;sxSxA)%6|&#r*3Z1r6%UpXJD9{U!zHG-6oZcex*)A%o6_Y7pSWD)-5SclwYe0kv zjRGeu6CRxv%K)<|4E~3|b37my{TE>1rDU?x@K^+eR$&qDLn-;oXL$y(HW5Us0QWUY z>$uyF6_Qc^6=Dew#=Umww|1jSR5qzPBd;Pugj%D8;2AjckTJ0kxtwxCGjm7}XSh!P zMKoFqhPb*bXeolZ%f(cHHJWZd&is3?9)3P;zDBmvNW4mX@>#QyLNY^Wv`b93#I)t5 zK?Bct7H7U<-bs6#VOt;x^5DzfX%C0cX2Fdr)&aW_KADq6=74Jgw16bfLFWzUR8H1N zRfoj8lBXp}4S58zy5wWepSLh)7pX7P`%B{BukdWzzo$?U7h@YI0S8kRCv&TRjL|xF z@?F8@oh)cUHnYWC!q*&HzP@Z1Qlp0nT~Wmtximxs1X^8&Jm7?>DZo@QP0SBdzn{1w zj30cZ=36e3;W8BjQ~1M|`z_n^jCW=7dGH=Q4sfp15#K~{JyL<_x@2Bd<*}Ft2c*X{ zRQ&Q67PksPfFIIA)DiR@L?qZ7;39?DxR)?x8+KQIlY(JmD4tp}r5VsScl4}Wm{2Mv zW`3Ra6P)65<1qM5P%~0$PQ)f$-x+8H@Y5G41fX5L3NT?Iw=kzNv-qF!X^KJN%g?GP zU;U)o1w$vV4f+fo$q{NRg>Q*lV&}#pPeLJ)=|&kSG_Q|ku69dan9r01y|gLC?(A%8 zKf`$sSQLe~^j%%TlNcm{#RX6N)O$_gcK){MVj`Xi*AYsKt7b0~z%2af@+I%HL=Aax zgguoWoXFFL_X~}`jBC+wq$&7;z}#U=(3cnURZ2f2-;zUXZ_TC8qskX>`-tv+7}Pc4 zcBnu)@J|;X$F}xpC5=wqQR{v0?e4kCY~{CJfX68jH)AjuwaUs{^T}8qo2jaFKB8ww zV`JD$-6mfYtFVrrg2ZK%bS8 z^6M+3xu!HjWeUGrO!1Km$EHJD`&1Uj_bkh7tauSq&PI&WyW)o$6^NRpjP?dU#S&VWC?OJgqvW-uBY015sp3vE zKzS--nIQbgGm)8{yB%<1N63qO{G^Rr^7R*ExXu{?_pk`!y{e5%ZK`|@G^ace;ewX4 zAr<~QfQ|2L41t|Ar%lR&Bw^^#$5ucvdp*;kTK_YPvj*19fR1&vp>6?M!1(3u3{b639`|969!Ai-?(QzPkA8oeQIPYgdNVw)&~_#E6i>8BT` zP{jIs#`K3D)j1N1G=i)9{{AQv0V(kTdg*HNKoO8$GIazuSCr}=iyqH-H*0@%b;Onr z=^vW)xxRV3Azc!2!~DX^5>LcbECi<~+lp-gukP_(UM;?)smboIdb|2l_iu;TBYu0g zozTBVn!o7U{!V@p{~3Dougv!^zM$zsGOEHtyp&W_NE!?b@<9GFWuF2U!!}0MwC@AG zvVL8fAMw8i3$7repa_0VCeh3E>~h@RVy^~?VkG}G7UaevYZh-xLlC%ds!bGB4$GKI zU*UcrU9M%RyTlm6pnHu9JE=lvQ&$)#6M>MMU49_>Ww@32l;Y@ioYm4wVZS)g?>-~= z){?ICq{r7ZQf!J=$~jl1w5(`9Lu1^sPaFK%eDA7hidKn)&AEm`L|}~`?db|$lv^_*8d`t{+Cz&CTMxr%R?P@Hq;iE z0&S4b>9C-P6+MknR4JR2kryUatkVx5A7WC{ma~*ozod8$V7Kxg0Ifa9M_R5`kb-h5 z;2OSnj=I<&;Oq7QyF|kSHoZk^u>%^e<(eAA~>Z+|jQSN1|9RTRF?PZ1VK&h4Vq&mEgl zCpQ4>yPEh7_fazz-i&aFE0%s&dl7>Cxgl(CmXyeYE!8=#-?FvRtD;>G$eYrCa18yr z)6;1bB{ip;4S4D%!@wcMf_x0(AnFC4=(z2~${Kxg!Q1GO!Ijx~+;tDD2%^Oy<46yq zG&XDVr62J;`-aeDy)mQ%JRaYRAfMER6tU}h%!Y4Ws!eyDVZUymj~;|u+k>FH4{MRVEB=~BF#tWkt`66c+QXrHR)c)Ys}+r*s2}78G_8&09AxZFutF z%K}+SK~{Yn!6aC9Uk~A}bwM#K|B|Iu)!9gX>XkjgV{MBP0g8N(sU4Jgn{+Q@>ZFK; ziqTC>FtHqW6Ym#IZfqggSn+l`5|(}}k0MIRPZ|7C840aOsP9jpdE1^;jCl8mh4-KT z+9Uop6aHU3;y*t2_k{SL4^E7edM6fsFK!wa7c>bfD=);*FwMi^bw2xt!REFggD3BD z44F+VkXpQae*Mr4BPh^2EO{vw8lOhpNS!7^*Z*bvlY@<}uIxbhr{a<+5uV@~#n2`6V2d{Ct zL^3Hn`o$AYDVC`xQ6w}6G@eVNv33ECIGBq)NmW3BzM*@FlR4)p=OLl;>KoU^<^3%D z47H#sDOsv9x<>67{-_vc>g=O*KhyT5cM{5e2_wcln1(eNmWbzV98$9mXqneF9T?P< zQ_+t_P**CgpBeHI>`Nxg^yo7z3Xdzxl{94(>+9vku5osReh5&cnKbWYF=UUz@LzLT*Pcn!7VaA&g=~_;M=cKvMIFm-jXn>!GGNP699YF zAW6dBZ5#iuw*41gwBLE2Sv8Syff*GT$D(7`De!}mp4Z0<07Ha zoGuxU^w*THiafLZ5ej7|iVWfy)IPAkaPK6L1Cg45f=vuBugzmxl_;y1Pi$zC@6&~e zO{3ZMFl^Xumx4V}cf|99x>4LJC@Gj4_^Djyfc)sAwSuSR()D0kikC}3Atq>ayEVEt zE%81!^XXL`&2?_H53IRLhXt58jj>m;wTdwVUMOttZZ-rJDxyI&9aK*a222(>E9o2}JY&(`WxUvw+e(oS$x z7Ok-?R;w1Bip{jLUgOnLlL^65ni~jM7Z)nhIJ>>1sy$HpKm)p#YZgT|8Cm9kX=t%I zLo4*PcNOPxRROfrOk`n06dNjN@I0@M_m%uY3SV+yNylxSF?oh-EKor^;fHO0M7f%( zT0-4^j43irq5eYY)3L6!QdYajEYgu>+<$eP3@`gE(fba{kmMgt*q#roVw0vs_p=i% z9l`3E;vmLCa-%=`5sEG_V?udfT!xjsB!)hGGWte@4LyLBg3OWPuJ@4(Te9N? zk90*vVxk_brRRJSW?rUWdlnBmco*x?1l}5_T+a=ZeAs|PusD|$r>&9L?iXI6)tQ=B z`cH2-y_)A_P*3JTM6hmyZ_sNZyp4b^azl<*Dr<&q0tv2O3kVAb-o;evxwP+sk_1Ir z2FI>U*Is+Olyg7t)@3H0AY3}jqi}Va>1X2YWQVXbB6qn>z#rRWrTT(&6IKbzEp0l@ zs=$y-;tqKr?B{*$@TZ0ZV`vWxd7c8z^g)wP_v4 zD4CD*p)qXBlaNUCMC6efHaD0&^&GAemHTDYlLmTo@l>MU!)YE-4b1MIV*W>Sx|6f&)(3quYg#dP2-0;jkZ5r)ozOWlV$e=C+J zs3-g;5l1ZZa2vQ{0vq{ONt?DZyhQnrMciiPdt4Gz^5&m-ALxgw`G9HMYkl^z;^d4= zeaoY^pki%7qkGN0n&tpb`(%IG3|;yN$THg10=D2$oYjr&5K&b}Ii$8=GdI?IKEZnF z>G_){g46HP(G81H&k&N^UVMaWgBz zTSe=moGquv=Q%^!f(BlT$_{1GcX3tqlN&623VLlKQk%6?z4cA0pmy(YR^}^f$!i7 z-v~x~gngE&@7zN6&%w=6&+71?d<=Gsk?yo!C`C!0sdP7L$U+_gYp%q_u%vt7)k@<{ z{~u-F6kXZ6bz2qNwr$%sR*Z^m+qP{x72CFLClyLRI6|Kin$`2g@*Dw2#)0a1$QlT{^geyCq%! z6o?zg(2zkFw}b>!O453WF-#K>n<(We{3umeyi%?{X&9aJ$gaRa{|iI(SM&JKD}S~+q#NKX zCczesEWHyY;b*WCMzc#=QF?)>ng2cmB+_I6sQ@ui_vEGwn8`sGy8x9+RmXDsQgC~% zo;B+FGzqO{8MN7u_W-VIwN~}Js^_$p2~%RKdD6AvRmXGAeXiq-%ghw9JkJY)pUS?2 zejrG}=nAA;G@@+993LyCc>=>(wPYbH zWT|opj}?UW8gnoZFY+0Lg9+rpw2%K&xq9}2d>)zKdJqoyhp2(?fLHV@NjVnYmHpSzAq`sMJ5@u zDpgS(Te?3C3$*l^%#BLZr$le@Q)ZW~Co(Q#kKwWTtRsR8y{dD1$hayE-1)JrKN(03 z0O$wi2bGk;QWcqbs?DNN6Z~eaTP4x~R2#e@cq<~qTYP&>er0a#7hw4_0x`EF?>iK+ zF7;0@u1-82VLidN3v6R1>(Oj`cZobh3);;D$v#c(lOZha+C0S6I=XYz$w8XWc0s{J z=Y3Nuvp%cOb&(7t>fkCxJ7EgvLI7pEG9zZaW5l>*@AWaR8avggNNVaVJ9Jf+i--G9 zQN8XR)H$e`YF(#;HK=1fy7O&n2KE|TVnA{vA-SZz$MPZ76t|7z=pW9Fd6SEModvR7q5Cd26vU0mAGO&#A% zrS|ibfh^dTVE9Gfy`)~-9%`rGWivVzXl+ikNLe$iDY6cl22XazI$x0}h~jZ^uWg=! zJee^|)^wBuK?mowv8*5rF$^O4mXmpq6!b4`H5{h7{e25|m65cJJS@Y}ngPUg{c2tb zrDG*`Hh(YTiYx2{rXyu!FVyHa2>|XqkfU}*%+U+5Zc(0wxn{`{PS1uS$S;n{D$gM` z!oGvn+b#ms?6_AhsXBH0rj}Q*s|TLHta>)HWFyPL+a-S->a4A+E!?9-Q~4S*U0T7+OAO575n@}CmCCgqSe3!%E`-uSKnGdtv^#-Iso$dOe{W<9%rl;BGVU z2HpYKaiZOEcFWe}=)F(>1mCGcis}|tWHtO5h?e4(XsxF$Wj(I=@xN^x-Gym09o1tu$z474qkL zyUKW_V?$3BhhuN`o*#8_mdWl%j4q>9qgfDDUVJkSHN#hWerElxND};wI6dA;0JHFv zkrCB68=Slk+3KOu0sjI0b?)3ZX$ya#)3f^w6-<2?Z=5|y>ze5po6mBp^ zW)2=Kga-&|Z6u_5oFUi@c&sfKb6J@*0{x0ISY$W$FI=C|v6&Qwt1T3-Vv=&EjOMYn znm>$ulg-HxzJkOk-)Ep`NvosUTICR(3v#w&`lT`VB1?*|q>Ev5qor~d_AQ8f8X!0K zDv=|4Q*hfKG*El3qFkTe_bIm&lo8E+;wHGgHi}7}&(DF%N6 zT|=GEi6P$wHvmy}v=w|pw}*&Rx^w+GwL5sR#Q@?;MfVEG(n2qBbUA5oZRKr#nfIZt z?ZwP>m<{&TxWwxj6&B1a^I@rVVxAuz?!88D}*Ug(+sa zh(qlxFWp&YPcU+vy{#=TIjbPD#GdsmFEKnEP7Q<3d8>1HYlN4H{Utxd7FAfLiFa=}S#rcIesVH{ zeZb@rUt}!_xFk@9_4RRw3Da$0XI~DOIj+HRZ4`3o*|I0nRZYR5;W-8EXzQIUFurRW z@H^l|8--}yyP3m@yY=;XV(zKPa%~}=IMv$8xelTb9M8dr{)qVOL8^6_Yn&1EVbwh_ zXyF5YWdm=UQT%WYM$j}nn1VXI4bgeHC;N0irwhHaZk-mr0~5d7u%Da~!^U~y){(_= zSlv-%xD^=^j@iF>|*dqEmT&~ytT4!vd4fsaP%2XGvW`jVHYno z3lZDq29_RkSX5j$kI5Y%+YIyUQQS-N92!hE#3Y5@Ql<`MJHtI=p4ge)QPYBS<%3Rn+D%MbhOkCq411AtL<58(Fz~QH4W~QFgc|^3Dii!{PmN z0dv|6-|F8?pEHtt@S-ojG0^G+BkSMX(3&(N@7U^=b+P#L&4;v1vd2u(1NeDg(bJ?~ zlT>Mv{AFjig$~kXjedI zPP0bG{mVuTTTD66=i2XUo=<7!ahiK#`XJ+QDn-%?YZW!c1m@9*g??r;V9>h){}(M0 z;@hUM^atrqLxbh?@MOWo0y!2`CifgjV3sU2+CW2tCvUe!2bLU=zh><9`SJUJFKH1H z=HIb@^j~a7%P9jq|-`86Y@WB&_sMb^TL^CQJ;mb|-Rv7EMZvZ&pihd3+VCYg-{4;|d)ljZx?{&=m?Z6%+Z~_Qc6_qEpVm$~Z+B8{fm)$`Rc7PU zqO-=2h|jbgq@=T=Nai*9a-~G>9LptmQe{f&$Nb%SE#+Xq^C--C@~1508&hP(LQ3UM zA(_9`2FzlK862qs-F)>5t0ISZ#VrZ*vqj={fF?YFz`1)Qb3XPffQ}pQTrCgh4*%oX zkoC{2+RX(U*Voo0egyglj=K*ny3+BBCu3KYA78QN}A ztujRISN(~NtjSf4{gF}58PhDUS`@`L3`3g_U*sGfLdA+X#Ziu(u#puXb-2L%oD~M6 z$rDb&oSpZ|xy3L8XW{sumr0#g&Qg3#QD2(SV0(mCeJE0{W?I6;MLa%hG1U!VGZsU2 z6UIfR+74Gh;B#VlR}KbvX!h;RYNnT!&E&*9vbmk{Jb>&WvcpPlMWw39I+ht4&r-P% zE5%}UYKbzlEh#?QlvEdKsv33(pMxpt8dF{M;njK7Mxb?y()5hLSyTa5sIFSNlsy_Q zy?X*QZ*9=c-hc63BB|W!cFNN{RICPY4+`PSL(_5?R~YoV*b9hOUIu_S#{+dGFKrEH+u1=G+F znyzVc=eznjLZbuz@EZUUj|XxG+$Z71no$v&{LIn482DbA75eu zauX5kA_FzON5O%r=1Efd^|NzW`#eU&A`10*o@?Nf0uOed_$4hM`#b{tMjauy_q(V5 zbelJUaax0t2^5#@pDJ*>ZMxZn_6YgCJp#UPdFocjvCeAt0#k<)zW90h2FdaGG&zb@ zHq%qb48pcwE2d5Zv!!k4kYsV+naxY1lgc;76n+j!VqIHgvT8G&K#?t!TBhg3K-P>6 z84duOBE4med2;*FGi5BH0=q?2+iK>{L7Cs*B=DpDNZI}%^$OOnS&9aFq3TF=ZW*oz zymPTF?peNorK`ReQQZU^INGn} zS4DdFZ5YrQmJ4yGOk^^BcEa8E@`&{&{h|@4@$NoUI6bZKO)YiDu$b=yrzX7Pyo&Mz zASivJCP}0itC&l^=mRNiH z75K%P7j4K%SX2#u*Y)wGYv@E{G!x6#f>vjjvl3gDv>`)-LE@bR1@xJ=2ifNR1Ci#^ zH0L=cRM2B}*rG1py8=#-;sqFg6>rgT+Yh$5Z8v%qkimX?5NtI!H9abwb->wXQte(j z#7~Ypi{;L%>BVMZX>`&kw(Yw-+7b2i$865_WQ02M0qyREW&ckuM`ylUR;KI*8rYjQ=ENVraV_q zdUn;*_Lg5c@LB zsE6^hvl63)y?dTx%H`x!v_rh3yd#@eU7Q5AZ zT<|}KOkFsCmN9+4`|K3o(7tq~az(mj+xL8S%JkRvF`Id+c5u)X1S65OS0S{L^{`$y ze|MI$}fTuVp8;4*#T3v(;W*v6oOkb6Dp` z?*x#L=O8wAgJhSH5L2;;xJ!n=zV9irokeg)n6bmnNRq@RVtT1puuk-|*>nQt=Iyhp zNd)9YtxlY0oFCY4!oFuciXPWyhodP435Og$j@upA+t)s>?kj(OUw2@CgWJ6Z3S5`k zryP(vj6M=o;m(}Bt1v!l3{n{$ZGu$}L0EMc^VXC-T-tXq zu(*w?S!3b>YMGprlgY*6_HeS=Tf7)Nbn>ur5!(GEpSP}>Ty12wtjOStUxD_R%VCRN zYSRB+TVg@YMJdbOJnll5>jr32C0jzuo@T#}DXI;~sFMZa+nm1P@U^|QcS}Nf7jqcO z;-%V!grB5_$fN!S8PQuq7RY1+rw5J#%Je(?w3p6bZi+M_j=cZ!qSQo9<^a=~v37+A zFAY7+%gr5A(0?PM!)Xuz-A;NV@FE6a zO6NU=MUeFdVrRT@C^!0*Qf!)D@x;-RSiB4Oz}(vfqop+2#d zWTKX6sw_3!1=QCm$avYZTJ59!V_vqa?92ydR za?!EHqI4`{trktaJsyl9;qN&8BcL|b=yTeN8%TNOcE7|7>}dN(PX{neq2QFk8(N_s zKXSde1H`!?4-0{KtwD^vgakBP#>Nob{I>wsvahuS(PQ86ghRf?b@uW`t0;NWhJa_Z zpvWB9UzLi3?yn3rMQK#*h;G%Br=-9vm@wf``p4g}rdcSqZjeIG@x(Bu<`!WQt0@I5 zMZ+vjV-C4*HJTx|c8m?%N$bWOK&n0!^}-#`js7zKMN=i!H@3b;>2DXAGvDdhxoood z?f9pJh%zV?&uYLayref8mvRrutRmn;oiJ*{E5TljK%m!h@qF_GOQmh2h&op2o2g8LV83(HoxiYz@NCevuL)@q#jYEVow95yJc_}kMGt!BF_o8yzFK?h8_ zFV@V@R}~N3jfwFWK((MFg-KNX7;JmX*x-_~(xnV;#chE$lP6J55_>d< zJ~kW}4OhjZ92hs^n0v}XH{!=JVm9@?%gIbLcv?OazBOHdG5IuAM{PU=&io$a_gDmz$I=hjbQe3cBv|g|E@uU%{=a>rPhY0xpiukPA~WO&S)w^ zSEMGh^GX+B2Y-cD$fAvX6zxIM?vENj8SnVa<^X=i-wkfDK)eM<*&1s8=zKXpcF5OF z9VSGV=rRG&NaUfU5C6`g^1ittrUg6KYT-Ys4(!kG!z_DqGGUh|A5j!RUe1EFp>DRIS9wI?X ztc1$6GVCI?6;`*n-_HwJvDObp*u6W5m4UGhe4K}dpoTHve`?Clc3+2790Nv8SYyTM z2~>svWDeiAZmCSRN3@loB-M7IC6gthl4wb~;^SH(kgKwn7bIVqj?sjS`WxVADLK`I zl~5-}PGcg|a)?&|S*kHN+o$}y=hG?$Di|_<=!nM02Q4#ip*|dHb2d9Y0_B$@~laOeHno2Rjry&7x8vgYO zyuKI3NfEVkuZr7lTcbk<{+M0GoK6E?w4lzpbLheCAURUKcAqJfq$1At1OR59W?b64(jH3HI@FZ$f$H0u}$nbGACE`lX@AZ(bJ6Z!9R_0J6Xz z{n~YU3knJfBB+QYqrE9-JHE@I%&iPexAlU*c^(l=woaB%MlJap`4jn|ZGjSkl*DPy z^O|$#b=np0^15fI8yKV4Fyy8@#>9`$(eMnlr z&C%G?m=$Pvwte!4`W$60K*>cOg+JPjJ}pU z`3S};;3f8sZf!XS+X#ZIMvsHFOLQa2D{T)UUo6YL#Y$Z?SeNTQd@Ns4iYg>ISZ5KAG)aGVUQn$nCNQ3#w96$i)>0T9QKT`R@rEBS$z zjzrP?)Etziow`_-{^{x&ZZ(F9U=s0Zc)r>%cn7uUeH>Q*RH^=gPn}g+#l$i40xQZQ zQniqL$Jk@h*%1WiOOM6?pE5>mKQdv~3Xzm%=8(OI7@*7*qBDpV_cEBka_<^{t2e~P z@nN0fL0QA%!y)!qpJCkSFWQ$0(Lr`_04&?;nD2 zh6&CIDF#2Fh}{qdSR_`=Igh{LF*P1qP1v^`(b+W!wF@ipO~)~VD9P@SBM2s4IX?VB z=@o1oUn+gqYMaf8J{B$=Y$TN1i9KD4ByjgLOvg%CgKexTG-UMY3`yi?TB|*MgL&0g z3dgq(Cc?-*n?!fA6_~0jbgc_%xV={~8e3Kw5^Yyuyg}VUx*sdW7$nUth?bK?Ot}ep zXJTC0;_WVhbAbOyNT{J74z+AOlf<%+Xb;}#xPfJTF)Qij-s>oIb}qE!3phR?&Qb0r z$c|-Ni-ibXE<@bg)hvmCtT5aU^fK}#VjzZm<4Gug#tXQ!7C5_iB0INzEi)Lt55+2f zW8Y{gZi-lISN;8uSh=sMojc9fTv+vQ6$li6kD`?UqW@zYNLG-Q22w=fox#LyqHL-U zVi{d3ixfl`RJR!Zgl-Y+Dfp4VOA4V4u{G4C zebsi7r0->nM(pj&gLjQRk(4oj0*j`gpepOwwjGbIkij4#z*eHKpW}#47 zy1edP;*JCo&|7D7rW-Dxz?91L8zP8Mh)BZ8xzdr3Wn;43d7{~TeYsp%_85sJS@kit z>gu) z7*_YWl|#hf`m3{qM@8o}5IPvAlUs(Q>xe<3H=7WZn1pa=JOg$9Kr=NIP8zD}1d;D| z+3|<1c#4LqRmBwOme#S^N~H11K_av?=k74)7~?q8!a%Bp(_qYO5M_P!QfW7Neif4| zU%%;*{&9f#SrFjchCwBfkSZRlpFWUo+GM{*l!phaeP|Lg)DWj?l`ll{DU(e{uQ#Jw z;U~spRcNz8mWRYv(-_W@3=xAGtI!tLSR-Q$ZFZc+Ey#ps#DQNNhTJE!q{MKc-V@O1*(!28B?tPr&c3^c|6O{|zPuuOpgn zBs&=S)f)~lOjVd9m<-g#7a&k}7Ut++ZF(c9_U620DVP_Jpil7RKpgsyZZ zuj`E>(hWFwUb;E`<~6@y9@iw46xS2xI3Cw7D4W?a6+?{c&ndBUj$N#~u8Xv8 zY0hSsq6EIr+^;?1Oe?iT-nQZtZdTj7MS`2DvIakZW}U46C}KRO$Z2qN?4IQOk&l=y z0T*2!uP(@f*&Ydc+DI^VEZs@v~; z$3D4JmzhFT)O^L4s3+)9OXXbvg|Wn$+hEw-JtAY<)FPvm_jb&AKP(xk!t~qZmiV5U zUJTUIx@nFGeR)VwVA1zw_mh(lKigZ}AH_S&XLHbM->HTw=vu8UxF1W`mG2mD}BeS3n?7u?@-&iv%r`YKV21IwcWQ+tf z5{GQ^7f7wh88a`?=z7+zT38Zd^o}d$IM6A$Z1s`H!`1l8Ekd*zD0SV%@MU zC+5N+{npq?MKS`RCF%cYKvWvup&*^@a6H{hIK|~`jEYA(jltoHnnOAz<~N?p4oebv zK5iYcD**9OhLa^`iFC=I6j*T>vFVo+_yCTikR^Yw6_6G@V(07zN!AIO5hP?r)D|{7 z0Zk*&T(a)cdA>AuEcri*jA2Y8p6e|Y;uiZ08`V*DwxvAo7=&F&pW~1u~srBpf zc-Ta`i8R`A>gb9z*}M~=lQUcyy0w&2>9)Wd{QPp(nSST$36-m$uOo3V5mf=@#adkv zk8=RFTt8irt+J!QYb|S7kT`$osxz#}l}TrKK%$sg#+|Z{gnsjnFhQTR5k&kibU*<2 zcaZ(RI1m1__xul7$X3&GMgEE?kz*b!(vL%ukT&bJW6frXu2yGFmXZVp5!TFXEG9@X zXG-#CQBHsiK<`|7|DY=wP!HPjHneBV{g~_dv*elI8vS z)I#t0HsaeO``v6f7RG;ZZm>^R+%bPlX8!G48;jm05CqND^=m z8sndEsEsligy)f44k*@jmZzq2>uC8qvm-wZzGD-mFw@|wMh6L^C2*1!Gr4)gzMFD( zx}c1e5nC*qCH@4W#Y7e9|LL|FKS4>3so8c9#fGj*CSg$wEt~1EN3fTS!|Iyna7@V}+lRv8s2Evq^@D$Mh(yE{$`b`wr6A?^##ippTSa2}<0fZ`=q{j+h7=&<}=`)3h# zCaz{3+=)w!RUkX0L-0)0+0g@XlmqqOAkQ_ZCadDn>q7Tp)LHN_WklM!J-8Bdcwwf4 zyd8NJtV6t6eL43XygIiSW{}Kw;+LKN5tewNs677vk#t7^4vEha&zmR7CpE#OaS+@SDt8+7!CPK zM&9BZfCR=t;I3rn=x$yEU-B{Pj!#?T2b9WYmDmA>t0aTMu2D~4WNEjR)01h2-K_Yd zb>{%-cJhs;48pcVg4DnhlUDAt|SyIJW?oN6?3_2>+jX@gF&t80BTV6XsTq{3@ zQsxFaO)TkJv6w$tl2I}tgt~?J9a_hv>gOEo9Zq!x!Th?O`f?AFrtR&O#6fxzPinbsMFwYnK<&XJ&*!Y z9=OjjW>lsk1=*QEe`-XhO5|K{9-oilfF09(v)GZx#fnTacQ8;Gg%b_WJ%EuFUGS33KAnC_S+=>fN`i>@s&S z)40zEr_hkDHQ<|_pdy-t-Ve#$P|Uin65i-RH(4CB&Y%{I{Rg+$Phtd`YSmO$h9ji; z19f~mjjw;OEk`JIt69=ZL2f=R8RC6{G;1ikSouV}@e+y5Zrwd(Tc(bweJiNu(4|mv zmdbZ-M|DPHTI>tI!W8FDnN_g^*FK^za7`V}Ovk(4*hWzHtR?-RP3%{LA^G(?!^iAV z$KJT0|Ic626vP!u)5@=2c=Wfu@V{6!|FakVTbz;&kagSud|jJU3WgOW=Lb;|<{OI} zn~lU5Y4?cpi#ceEI3)YZ^QXW>msY9jlcbmwOw<{^5^H?@NSSA4(Tqci@L@1j&tU%e z^ZNSH+SOVKB6&`t%#1#FyKeJ7cRSWToae?if6wZ3{=Q{_(eg2C_wklt?ro%AgBcQI z9CRL2HxKb!ev);i8|x)^yPTF90f@L|GFEngwX40Z(`BNW2-N(0HT+b+E*@xouiNDQ zi`Wtz&VnE{*IN& ze5vJ6FvX4a#?3-fny2Vp@=#C{LDi3sepJo2P$=&uS8#Y~jy&XC^l{TimQ*=?4VV&X z1k3HXv}8(Q^!a2m~Xkz~nT+_K;;F#1lJza)n zwo3ZQe9BqLudWJkq?+D00{ikrX&UX=q|;HRPN_Wga5lVRZw;VR4YVy%*+!M;DKDurzNcTDpio45@)J6L@NL(et_y1;t`0&zQC-N^wG3`k zKGoE-%T9X&MF!)-oCSlcuLX%|vHBP9!?AR=elUZvDN4;qXq2~p(88Sq=-M>GBXrAs zD8oB^KWbW>hj;#}_+j&|!^AIs%<7A@{@<;r|HXI*aCR`T6*ISTGIsdOnfNc`-M@k+ zh54Je=zuJiK>1&1oBgNh6Tw4wz3p*q0V0S#(ZaB$myT4y)QU2zbMn1~Py=;l6j^}#b++fO?g9|cQ7eLlv zL92KopH5z0_EW%u07NTU$8)DyGr>J&z`K+bxU6vqBKanjLU*wOi~O6OaS9o zYNao_tJQI>LTE4p$fZm$^a@nx1lI zWe%XJTN-yw3$TIsySK)(F^(5}67&*BCiNA|+CzN2HN4@tekU(;Q=x=9QLYr;4k&Z~cA5 z7@|18QhJptzmqIV_xCC9h*L2a5GgXIyhrrWZ*dNh!hCG`lxl*j@Qh{?WUtI?KJX4Z z#v`ZgFgC|AATKaCm@G!6-y(0?(38Y4uBjHM+nuxIMjbvj=E(U7Y|9iqzWyXPF7fb0 zgIVAheh@F}f4M>4FPZbHOq}WQ4N{K?@s~WBmIz(d78gE*|LYJNOT%)Teo==sf19z5 z`@fUCPJbQX|F6h4&j0o>5obFqb3=V6V_9QIM}1S{f0oC;y=&I;UqMJdR~Y9ZqVCuM zetBUwsO1p*6JcZZ$*V0_|7ps8ZY;a0R|2wLStwac28p>T^u_wGa%lKKRS8 ztrsVpC!3DBxjo$<-xwlALpTemdR)ENT&C)6tR_OL-@A=R1-Ga>9J+NIXocZln4Z12 z4y99Y?c~21O6W+?1ph&656q{pr7>P*+vXIo#p$v(WqsrT8?iis4)jjY>Rj)ZOlk>j83^3#9w&46f~MvyI! zz8lcN=!ZolY9A;lBm%>xwM80*-^6lew5stWvI!0++(cuX^V`g~r{4TY(%+QRPjxmeg_J>}Lkoju_f8S7=piKivp(e!;21i5 z{a!!F&Kc1%s&wo11E&#Q+R}Z5w9Ja$%glnTWC}3fwPbUfi^;VfOfS!-jCa}ps<3zg z@${On3d8x^IM@GP6z(?q*5-y^2+`Ql%+|{2KZ-)d`mZ!s9~-wd5*k_%ghEthYHNsK zYw0B^1Zhc4GvGym@g;5lk^Wml&0N zT2!ReRC&bcpPg+|;(1q|Y1Ge^-pV!^c!=LJMKy{uI$7O&hp1O_L(Mm%!E_B~qmp+h zE6RqmAqqS2#?-Ha-UAMiHVsql4@J3l zc$(Anp(8&a@*tMjCC02@4ZdL%HYMxmBs_5VIE{#Md@N*?l0Vr77Tncys7e;XRD6J# zf}D54&JZ3`9jbE<`OcJVUj8HCqPsW%*aqRopq^K*H7b50Igzy+X_v8eoRR%oj@2V} z5ZYB?_xrGDc>9Phn2M~{_+%|U>y+>k!R=x>=Tb)v=zd4~Z(j_^9}Gd1EI()tq_v|B z&|1pFcTN=`T`@c&nvcpuj+#?kihmA8>Uvy+N5Rzdrj6)?>?IcWC^O2)!h{D?po#u) zsyt$9Df2@Xd@d4Q>|Idt^vhzX6VWG;s>r0Uvmpg6>{T@95;zQ~=XdgS#3bG(k6I$S zBOz^QjMU*`TDGDUzrU4D`^|($jkFSCykumwYTshmfEHoKxm8LGBlDojcnN!-dsGMy z?@zb{h$#es(aK*aZrY@yN6Q9U>U)tNXn5mUOO4O%M$ zxN2U7lWSJkWE2}u$S0dB1L3q5{kuiHLp)=z!d$C@ceuDlOM%&?4pNlDs<7INm6#Qk zvhSOR%|k-UjPe-qkP2~NIv&shM0~NPKXbqed*+iKR~$d766w5&PTNj=^SI5xqe^rM zQ{Hd`v1=IsLw3JN=>UvE6U9`x-6Hi7i!%uPA@=7W3#~IXW;JR%#{=O)q zAU0A1K|`+kjFzB!;`J{V3NEoh)D(8jb`ov7hTi&7$4Xml@zW} z)hR3+;Zr0lNMAphBNtA7aDWw{OK{=%k^%YqA3+ji#r01@UofEmYnA8!j%S(vTlbbx zQu$Zk7S=a3`&X(;wDMn;bCl1Lt@_3!3BfBORD_MA`hWs~_{gxj5NV|H(;;Z9~j6;heIOeb0SeZabIy@rqU`fajjz)>C8Lnj@^#w`2767ptGSHFk51B zzQ=Cumub|S>MO9Bo;k*+KHEC>4`<-e%>DPRlw@u3$W#~uFArEd`ySgZR^ICg=LU~> z&koF9j)xFG+gKjmcbbaQIb9NxyBUHrF{c<7bN2*;`xWldiwa{X&pPMuORVakFSBn}K$13E+_0H69sKt04P=7}*6UZ3Qk#`7Aah}kVN zV`s**d^yQVt%-e>hc~2wVL`4<#p&0YYTvVW z;xaBdMMPha+f7>(*BU}A#}ftS+C89JKg-_ru z`C%6;&>A7m%9wd#%<~bvqE*zxl6GqCi;z;MlSwcoAXfWni5CfD(0>l35nvLli=x!k zpZ;Sz4d+{$;mlWG_xoGq{5OO5eBSoJIbPrDWej<>&Bknz%GOCtt#teUc93l#O$ zzBKkT^gG{V4AKcJRgzNs6>0R7RIIh;XqN0{WbIuq>J?N0o|zjHB}We2K*Mo=;5V13 zOr|(sP7Nefy(1ECykX7?e!>pbv6VJ!UVw(=Xf&9#JHqIsUnoN&iX1=?56@n-Kv^R8`kDCs_!mG>VB{HWO|n6`G6uesu= z(LSyp&~aB@y%R$*r2uZyJz>q(=TWvgp*7-`p)C&x^2vH!1j8T#b5&cSGCiGe5<_r8 zI5_|ef`UB}MM%Ras)5Kss`31QV!~9>`B87J&-{R&3jJt`L5w%2BBgbbQJ!c-ys);i z|HDKDCFGW#edkCuU)lX2?9ARh((+1Cq1+%+&0=kTvD(Ez-*KosQ|c$0Wv9*M+^k_q z!Xa3fL~fpC2sc8vXkW&-Dmo9Z6be^oZh=P z`S!2B;b**D<_M-<=Zty_+H!^^{?|+d(8&oy)ze0q^z=X~OC&-vdFoBuxNPG6y@Hm3h^(iJD<`V~;JpqGSb!+5-) zsS0?|*lV=)WFYpT<_Ho_YZk#Glc8wId?J4AY9h1R?}5K44l6@t2o$*3PoFuNTx~AI z&a}9G+mK*BT$J8sq_s(#3MtUFUs9lvR%_cjXOr(dj4{)9I?-@PyfRDxn(y?*aLaBz%W& zLSzJ`K$*Q<5nLZdK=uKlr#T$N?9M{JSYYia&8$6!gLV?)^j#h&Dnn7gX8F2JY! zOgM^w^+8~e<6x1UW1vnvUMME5eCc(pJxr8BLZg>n7Hm-GqrwX^ikBoy?5C zY+Ti`3MSke{m=!IZ>DS3k9CB4dd-miL0s2FSXgE84#=oC}G zMHGLJhdE5&MSu=zP1u{9C)KlWoEHdq2$*dk9N(-OUbJ5lJpn=rk%eXR_W}c#4F)bd z4$0s@Qj2RQ41|5ZO>MObWC8k0vT`z`*b{xN~6W;t>`K)NtxfMc$hQG@?I86A!VVZAM z@>RHgs$21>8^I$A+1Tj$xEDg3fN#A;r|Fu8Y2<<_hy zlOX&2d(8!C9&?>>V%cC|GnS2l-0%y0Od7_iTcXDEW3fo@+6Op;)e#VqO?3q&;Ge;t z9(UjMu-yu5De`_wuf?KO6o7{AsIfj|V|OLPe3vWr^M#M57uKoB4GG*a|g zUHUF7Dhmd48!pWNuAxVUG*$}v>Nb(uRif-lWQ#2_<;Zb1xLzx-#;Nt<9P(HAw#+4s zdO3OhDb;F$p08~)RWo=>T92;nWznV=I7jp6xSpa?Ez(}q|%LlvPeP%Bl4`S-0gUaCqe zw>XHrtDD}?S7TM|*mHb9C* zYhz^{mqTPtGOiFJm-jM!&`dqPEsQ1S-Su~&WfZ+RGO=K{qTma{M@>bc_wl#!N9R#L zq+V;<|NafI*#}7ni1GKGPuk|-P&m9x?DmGwh>+P749xPxAJQkaV4^4} z$lmOiGb2DxEz?>yy(|_NLVGvkbN!0o=rH>Y6Mq5ody5+yf_;>)7we)zjRaHg8`BS5 zUg2LESufn!5^31OypH8fKqPNsq@yI5m2}Vif;(MYzt-?T6leBzrKDocdpx0Kag4eS z{R=(0($bg~)ied=ogpU1^d)hc8s5mh1H{hSp^If)7X>cSM2As^!cTTC=r(cmn;Y!D zq_wkiUhv*V_@L+SCt4c)dbym!w`J{h+lO=_nF|t*VQ3ptI;6&1JJ^1@eSV1fXU#$! zL~ak9yYWWUEAKk8)r*|Om)B4q3M856nmFSb4!Cv29svJityLO@i;&zMS( zSEj+0_D^(|iZ4~yiBf1eZ>|)7Kgdh!`Mmo*y1cB@l{$@&v(!yP%NUCoNgf-UjzBmK zcDEpw5!WkF&b&5Of16=}wV0?|NAFCkr0`T0PNtjRsT*na+-W9wYvyyUU5e8BndIJ9 zgm2Up_Kd~)G?pXE&$*Ngyhl+Ql!L!45M+@N7eJ+VAuNN)LOCl&;gpbKht9gYc|>$| zTwkWmquVkYuIcxw1erYEFD{~_J{Q!gXdI{^8^?+oNQvx5R->|%T#7_CWdBrKbshB(1fEw zl`QFl9X^HE@gQFNZJ7h1|Fjk&!JE3YOSw_=0#?}Bx17Yfk)7BWxV`yr(kvu@wqBN1kzX zpJF)U!dB7mqM3a?+U-k%6VGV)I{va(h*wifefu3>Lpr-aCpy>MYT?2xXlUVN2@NV9 z3&EgOJ!kwHZM0i1uDghgc3pcPyo~n1>rf4ZDAoJMaWtMc7E$vVBrr819ZW~2`Zp;% z`v(enxWr^5auP?FiJH-Mn#e2F-?z9ANAim}z>`KHJdg6{PMw|MFfizHS(;ZxrvE5L zRLN9C4~@Im2OYvLke=OmW2bu$zK*^mSLx!VZ2c=-NG#9G&Zn^pw1(CD^J{xQ5K5sR z-4VS|owA?eU8tmdDbsX~tY&XVz68^*CcZF^Xlcs_B91H0A z+_FcCL&jn6JjTfznXgKzJc`3>~G_+p)9o>3n+6YfaAgt)I~(Pw^;^ ztByue-$!G*pHXYc;xWvkArK#;Xm@>o*S>8Vb&#LxT3>mje7Pld2ht7g9z2`E2D;Cm zk{BJlpI63lK5AZNEz&XVPk&DTh8brA3gIiZcec4n>h)~tqtZ%ZslQk;vD{nL_Hp4} zLA8%zZLnsq!;luH-zqr_IyL{bphv+>NteWW2>J&6O}iKaf1xBN!NO zj%z52yF4k2vo$_5KuxiGT5xKlHuOFrVG%PKYg%7Y&|c7K_9V>oM4i3F?782L*WBa5T76GjPX^7{!2cY@CB zamDJXr`~(eN5@oGFN^XXO5L}^pj@3+tKUkBzN}O?`XpeBMtJH|q~K>1a^WfFsddsf z1H&_zUc}~1Q%R()0iNS8UFM3&PxDPXY&XrW(S+``x~G|*c8`(VISlaL+iWuBgVggy z^pgTSq5s)a{O}5aj%Npnzg}X|yF1u)9)9X}zk;>C9+}?+ABM77C<|dt2}ViCwCbSV z;|H@BUKPGEAnuQe+7OPqXuT*FmE|g@|27d14Vk-3QJ}ATgMD!${QTb72l@8+&WFVB zJ;y!Az3P4Twr(|?;`6IP-+N~`RSTg*mG-`>)A;aE+M*9pTNC$(KrOL@pSa{z%!c zhN=`T_@Wbq_+6P|iSH2^UQhStYxr8*+H3O>A^LJ~c4ZE+Bt9!s;)9J!#&VMdje9&T zG>ddlJ-LMuWo)5F>{mNdf>rIW9cksPTT`^HoH+~hE>`i>jj6ZH1k$x=Zrs*-h1;RD z81NZW>Doojc|P+PXRZfLI+`rF1Ipbc&&-xku);9vIe0Jf?eKG1Wgt|#hC?cD&PzXy zzSlotY{BNK{zfE{;^VS(p+8s5Tlh>V6EiR6z6+oEBoy+uLT-nrGNV%(qu`2DS+zW) zlN>Qn30-qR39pvn^v8S#ML@l7SYkL-OC*}CsPR0j!&xv7e;mr)*23fi#12OX>+q0d_&Q|!>!nUh7 zGEDr>iuYI>5fS<;_D5}v$BZu_B%imulWZm$4KWs5+}q}XrdZ{m5*sCyymKOXr61pe zXz%~(8e?pwa;AeFw>2-B`xm(+LJk_q+R88oL+`-6PhV5N)ILnk%zY5sv1lTNX&44k zu`1)gN8LWhI8{P76;X2^Mp1=JiW|*Lx`v#X5%MiZ%`fWV#O$$C`rk&H5%Xi{=H|pnaokwG! zO%j~+XPxVoVtXAjPlf9HmY%G>t&B!ggFqBjeTrKG1v z?8MXCD<7(!vU-UlxmPW1>XxI5Vu9toJMB6j zZDh9PoJ_m0c6HPP`q_xYuT<1_w6OT*_>`;lHikDlq(;yT91vJTtG__`C4Qw!B#~$)^~KvkwYyIy&*wh^ zx4K|bX4zlbTP-vbP+bY;r*7@PnN8xG9x8f`X4Q$Nm;I)Tp(5C|C!CJgiRXIl6*h(h z$xCM&`a7K?%~wB$gnul+xQ|SI#((&XwM0Vw#u*2PNJIv&ySHh`6P}jeI%_|1cIv`R zzM82QnP72Vw<&K^_=VN?wA+D*Zdmq^sUfLxL8lT**0R&pQx!$L6jE;ZqielPpI+{t z&07c^mo~(gvEd8ic$sji*|j4?TmM?{GuyPU7av@1vwute6)CQ*V~xpQn^Uo7(ubNX zJUO4*tL2hNY}OOOpuV=IZ3AOd8weAZLEF%t)(xtUxYjdF{m9u$`1<$=Viz1=Y(=VO z2B~MStPJ+Lyil>s{wkq9T#LO9`eQ9wbgcaV6kC zMYe}2XlcsM1j%elO--n4VL!Zis&tKsts$`S^Y*U%4gW_bEkSm#l{T&tq%iA@3aW41 zyP4;*kiK2m$a*8VUaQsx-@0|`^Tt<*X*(y4qNVA!gqT$47KAKYuGc)-UK@wgBI*H& z(W*pQUK87t*X@)5S2g2L(l6a-t%Vq8WY%cjO5gtK=@q-0hu2{FMvlm{u=bYA{2QM@ zOj|ehCEj;0$+FB)8_4oxW*7>MBx@zFcn=VT?F+iyon+HDZQpCCzGXSgVKA+ipI4I< zV~vwTLAdJ@ojv9lc_XdBQ})ssl#FL*x;=Hq#ARxO{g&nTr#Iu4D24}@a;59A5g8>O z54v-GAx63sLOyfBcaqTX>x{wI%tD>pM97f^%|4@;?lRcSm1+#8&L8*jS9bU227Ro( zy-IgBE!LO7f0vaCQNG-)hv;AKU_LeBb1+xjttHSU0hSXzz&goUpKt}sw``2&zl(~# zxo5A)o`dO^XAONeIR#n|zo?30jg)V4aIR?^r6~y&B*0BR%wGIdtVrzo?gjEk5%Arrn)d*GM4tGI)B>8tyZSEH6br7~ZnJM_yqgjbaGVDfFo900Bsj+9@A))X@ z`wFPNdL$I>*|aFMgsgc(l?^$-79MTIxv&Mv*I`7!Y=V)*S<-Dl6l0S_Ue`E7CFg@< z={jFATl5%NJ!w08CwcS|EtaH`Roo@|K9qai%XZ`0!d~w&&SUiT?njnp=bAq1OEeeK zYZ*0kH8<<#vrzh6N6oS+gTik&bBi2RlN(hq9lzjd!4N;mqba$_uXO3&euZtN#!ELn zU93~mte?`X)^D@md*flPL^6L}Fs!(8ZO!_=bCYS^9#+rrtOCm(Yp?8eVkPg%s+FO+ z1OqdfvtcXDy5vjGZxDE7diiFG7`a=A)d@kbJqzal6uMqq8(6^TX>RP}7#J!jXmglf zg(nn~NB~3mr4xtpWXA_+&fsFEzgmEELT2U=3tSiL1a)(gvoUuvhgg|={5UK>RC`h9 ztPbASONz2&Pjergn}F}9yM5b?@G{Mtr^qCvxQTH11(`-%jn}!(n$i<2*H^fV2ai^? z=vd;L@n`Qzt9&l@iOAmSqD>G@n@N6=wDn)7tJ3LMfJnuLx8wVfI_JhAnc z+L&r=StxCbs=9A&jxjt$>B1}{cN$X`H8kdV$p?6&H$036QSiia8xI=3&Rh% zFyqyxqmw^)A|~KZJm4$d){DBHM6IiIQ{bom9w`iwZBo z!-wPy7d9kyOg_lU;HO9}x3ZlQEV|rEZ#B0&O!W2{-Uae<+-B~V*_J~yJW_mu4=wri zc=3m>zggzjh{)|UxqcoelW$pnY)j!Dr&3R+IrWBe<_wui9-1fdCv9go8_xSN-25M= zyw%0n;us%fCA(?IUw-zE28VnVb@gGiSlOc>f{E_RiR_YG+E#gKQBgunRq0vAT*j8p zSHw75litd1H<5#y+5-5DDKAOhD+=Z)q&Jp$zQoASsNiAYH))1&K?_%H=s^oIY7A~r zeqX;oE{=t~ie4|xj2Tv#g9HVmfd0cuY^KJvyz6RyckHh;a&E-6q_HJq+eO`Nw6-W` z?5}+gL?wLZ86SJc<8(#*I#a${mj<1C_!7y3({P(^?)bR(2o2jgj330me?BV{82YHH zRxZexQK8u4O3oMEs~x)5+~=I!iYE*kSPV!`PH&@Y3 z()n${HmWk0p1gz}npGZ^YDuU*&Z2k_L_w}m!awxMQt&e$l?flG38*@VkJ=m z{Y~cQgw`jWJ;QcvZd4{ z7p3#8R;OD08jH*&25MhgnYu>H62pA!Pw{-8pQC#YIEYoQGF@P$^wIvZOQ%IL?;0OY zQXD1n=?rR&y++uzXQc2~TavW0Y);{;J>wx=Y#w%^yZht@{U}K=R{2LvtJi4I0gr)D z*GD5gRcjP2`+_;kyc{!(}_&FupmYaD$J+bV0I31+S zX0gkY9lRZe)ndDL$xB)lw?p_fSsa%;6Qzup%n9v@q2k5qnU}My4$?Hao;fkS-_?Hp)bOHr7*gF z7sUHx%GaX79&!w*YOg3f-v&>CvVJ;ko%<<%nXT#vQVYg@IP2@B{6eMEOeA#~?uiUg z6lZUWFZ1M=+SUmbdal`Tyvf^t4G~nWUD&Z6F219^@5nlFciir+ zN#o&e2QOJYG9<9uq2|P_!lmCht?!OT18M~|0!M3s!#kYJjl{tk@gE-NzLuq9pETa3 zV5OP!h`1G0F)}n`-qK1EsXXTTb`Nh0U|vVPu#wqLDkB-^SC+M%y@BMkEzdZi$jy4g z$R8w{4Tb`tHK+VctjxE@>cSm+>OSv|H|(F{2!#4O&INgoZ#oYbuo2JY+Pw8&xtw*C zFs@+UKxXxBTC24U>L4?UgzlWw^Bg;sQ$|Gfra~M}!*;p5Q?D+)Qp1K2ZLnrrI8F+n z&!erF`y@hAhFDD!M!FNnwHKerYE$RcHbtD@@Rv{XC4OGq%CbnSQ87g%enkq;lW0nd z4P0!S6`ixCOcORrMAXU_!XcR{Xl^5DiBO?Gdv$ok$)`Q%GP=GgFMBw?f&EZ{V5|a` zQawG(pc+Rf$Jk4z>dfk@lE$_mQf-nYt_v&M&33n;vJly&bQ{*;IjxrZ>xm;<68d+E zxX4+<*%i*U&z&AbM<3%60v8KS$dcVsrDK^!ACh`zV@AJq8^W)D6JhH@pB)d4T}B}O z^Fa$S__Lg3P$DJ&B1V*O`3s}D6ZZIb?foG681E%jtPQ~tASHy}gVP1_Y=~0pj9P3_#rrQKRFvC~m$QX-cV}%n| zOEu!cMBqeO!7Kh?VQ(Ys-&6he34XetV?V+d@6nGqAnv(;XdKh;VG}@H{(NlL_HnOf@0iwfjL! z5BZ&DLUU2;O^F<~9~U$kI{5b)VDj#~Zoq#=KBA@e6bpS9GcRv~!4Sgy+9pWJTBK#% z&b`${QLvJR7P4R%FgJ>tnP#Ik{!A@Oa`9s5IeM8(GZI~dwdPM>euYb@y}ZyMo`>VX z?XjZFTf7xs{#F>hqOHXjJ3v@$%6_$N^^`CzgStf&^Ww70E@PPvk-TY&nCES^su%lV zmq_`pD3e)E%>=hDI?n`E>BwgAK8)v9y0MFHN&yi9&V-D+L2h)&VQPtv9C!;*D52E>zjHO zzrC{-R|WAi7OAJYwQe1a-q5&kYlgAA4707M?9Lk^_qd*3M3>kkj<1qw_~-WzPZ!C7 zHu?>M3B-;Qugewqtp%}jSFw?^F@rjoJAIp`QnWRKe7~qPG@?hL`8wItl*a<`3hOd@ zciEf+7cprTvfPR#d?%Z*1)SXO8+pEmmRck3>A1+953mvQ(cG{hLC142`fSr9+*3O5 z)!;KG43|6|Uj>T1)}9Zdy{R^m?_t^CgLOF~T`&Q?y!P;eKQ@xjf6wl?6bCUs{k zsN=T*Yo@xA3MnVHmxMUkt6uuc4=KxLC6MpPwuzHr%WDSuk5NAgNURxhj>fnwXdoy% zdCmS*t1o3^xcH{O)@8HiOkuaD+|#_a54=2Gy-r_8%ezh9@Z86ug=UnWU>{|R2BNsI z?u$WF&)yI$W{j0l%w@Jf=~a+XB6CZY1d%$%V@h*X_7SFt&k4NI410!;* z%7PQ53vaRzK@83`osk_v2@SnVW7d2%b0;A#jBaI7_q@&SB&{K%ymh*gF2&uV!4(Dk z_U%%RsL6ZNB!Q_EZ-h)xEYD_aGv&t?TZAzYU&Vg+wIwWdIm2F^Z;iQ21odK+%aaCp zR?@q<8lSUiaW?7ZP**ur-jF?;P2!T6bu}tz<|YYFNTc2T5Y9C=8WnN#QBB7KPg8I} z(3oJUh>zE2%EB{DS9m|V#iNxvUMl~Ybtr!Ki8*CP?WhTZ+NZ`- zI3slrDYpdzXuiJw^Z>o!7N_`HaS&KtL$q#T%akBm9AeLRhJlB(loc{+c|SeDC3f8E z-g$NVvZ455>;A+uD?aJuia7F-W$rJ}Oup{c=%gXRztY&osA(5iv{508)R(MhYQjB7 z@JO!-9T2vWL1v9{l?tGE3#M}Y!}CEG$M2R{#s-qVI6J2@_4eXqZpv27hxXQ{ST2H6 zDtyNaYR$OAVinBO%EFKPTBYB=cxBJ_VNt-wc(IjnZXsg7=}JceFN$-jIu0o_{7bB| zcLBAo#YVVS7rCBusVytiSPIaM%uVWYcS0n)#!{Uqx(jnd1`>FQ2Q}P@fFG`?M+Nl ziK6}8@GF!Jhl!6a$ymP+K&8}9RH+kAkNBoi-%fZ3i%Gh3!}aCGmU9RIri1+5Xm3fZ{-_44WG9VFV$dTJ|BEeU%v zgRTLC(RP9_&!<9ju1MunC9;YklNo3X#O9|aytZ<8SJE&*f%u+{Gw2d{+L`$zU!$+I zOF+#-tKhBl(2JzJ#Dbdjyz(qf)VN$C_?9~co=r6+R%S|E)9?x_c!{fYLJh(4)@gE( z?kCQr0`*@_qV~^(v2@SPXRpNBs`Sjwtu7we;LWl-4(jeU6+ z4Y~4^qno2u&)4X)6I}?h>{5{0U?(%z)Ha{L8f|-83xVgb=lI65Ya7(wzazC z%!p2x92=r#Gg98Ou4gdcWz{sAT~%M_D&D82@s>}{@3-_XWGa*{o>!779gX@FQ7N$# zwgT;QOPd`*?y9NGc zJZH$X!qjUDbQGOHoF~;u({MGP+$HroCOwb}Awdc%IVjOZjb>lG9;N6$?6#CAcGuGi zNj4}LA5?VRjm&-h#vG*r`SXKv&J3n3^D2qwZzJT0MFJjQ4tin~?|wOeDxA8;S^FvW zAm8m_t`feU8a?6^`(COSXjjZN)-HkrDoT@dCsqj=mC9Yl^|MLB%cfNXN9jf&qbmq$ zxv7j7$DK-BM4k|tw?6qA^z^iIll5?#w>_`W7+G)yu9UwY6jN)qewE|NC7OO-`c!#q zu{o16jO^E#n{-%6x$y6eM_NddsMMXJoAIy)Vi|+^zP4{7zrM5dLLwM>cGYuQYN9v! z>IM7?n`pHA8xxhC%C3@G`KYYYUvABrP2DOxV<@PY{)oN8WTmbv*|JNAw5!AZ-5z$A zhCH2D_{WTlx-M?=yBs%(1QwRvOz(BySDJ63RatkC*(Z`irs&;pUNpgjygkJbJ-i@S zFFF3|qOwp6oVCi!PwA#aH&ESj`!RiA=?Sbg#GLIA;i$ah_?Sa~=6%P!tj%QfhRH)Q z>$7IbSsDQYh5e*X8Rd42yMh_*Mv~1c@Ol<3yCqh>1Lq6ouT7y=t+qKT63AJfd!o6^ zaNon1l*;(3h_n?;l=~>d-^^fY+aP^RaCc~19{Dl2j^^TN za*HqL)LKr7vY(brI`!sjSJoL3T7Gg%-!XFm_gRyC_{mn}xq8vlErafo>hzGEeS>o= zy7N~q=flskF-r^8a`wftk+co zcV!&Es`G@c$v;dhxHwuFVhz;-Ddul>)mr%yxE`0tyHJiKRI6`*pvf4U>@7M4rm}_D z87kFfRi}n5(^`_~#N??S9Kv`OHYUt{IG-3dIc91Pq?Pr0Axa_26x$UzmtOi+KQxc~ z#ys-PIB0C<*u^YoPt`?Ir|r?AyL&VjZs!OnVZ(bi+YpE9lD%p&Yd&o*PV?wPux>kr z@4(`N*Vi9fh~1SdqHu6$d8LTC6O*Y(pF z->&RlU`aJe^_#u++64Y=-kGfJFb)Cl#YgFoCh2HV5&5TNNu7o1ZX~iV4Z7m0-=PMI zw|F)+YcT3+jwkkEK*71G*>#3=DeJl2$s(HeQp<&=wzfh>?;A@iP?z~*J#`C7r0LjQ zTDqP;?;zhgm9>sMdcSS*@N(v`@iiwF;N)__=lGU5Vfn>jOB`fIoE?8$T?^7CCg!HH zP%FECyq)G{jXqWEedVf*EU|~k)Q@fwEO#N+PGsH`Z+m%<`bFdF#AR75PSvPHvY36m zFZkPjZAeJhZmi1ie_+g+#WfL_qcSZS8nxXTw(VIF8TWxpXtwk>U%$2ga&xo9(wbipe@B4v!Sdus0h~R z_qofBg8BW+jV%l$kOZ{KBp{U*g7qAovlU6}`xn_cGosoQdV>q0uTLS2pWW#fXtA4! zTJIU4J)IW78Iqzh>+vNccs8iWAY09qP~vf0n?)?{a=sfIu~aOCTF=U*lu2l~_+w5m zJ;vyQnmv9UdeD3J51PhyKDw)(7+#h1UY}83osaD<>4>l`-isJ%U2;ax4VXY|iCDCk zSe2fNy&3EJ6w`F#E0zP5Dwl`&SAHlqYfB~L^QyLo9c#QbS1h009C&H`nT9CV%?LfP zw=t*y>E65uDTR(*yx3+HatL}l;Zl^ZQkOZ=Gf8xm5hJ1+^mH@ZkK(Uc&WZ-5-g>ur z+aF!PNS20F{fh1iszaHgdd#M9Jo>XDTIV5SG;ZWt^E1&2>Z#MGBuZYNM+i4lkxN3a zvJ+-YY2qk1bA%4}Qe>CYnH@tUcab}g+at#AN+a&p_e2P{w!FZ3Al2J0 znM7ioc#bEKu&33u@4^d8qfgfvJp*)>AC5%_5vhsxTsyE-1M{TqKDjcLdl$X5TI~U3g*an?_HODN;_Tf;H^#Z1Ao7b_@upix z4qvgu(`&NZaEE){Sn}jby86u1sMC)(P`JlwR9=l5p_Usag`5$nzPmlQ#Einub}Yu~(IpIpQ%p{r@~<=Q40e?8_1m1v;RTa=$*a)ah3m4&&G=-v zioBE7{tsrot0)Fd40`OEbNQHEc9Q5HpNU(Ndqvlb|oQ@U4R-%S+r8==#9(9bceq)mM*2U|(7gMxP>)^xZ63c5|Dtu~{ z=YpL3G$&ay3}Sh|i>rcpWc`U6m#+AOkA2hlgXv5i`M88$_!Q!TD$^k$r|{0}=0z@P zROWgUJ;|lKFRL(Hx$l4Pws(o*@`n8zw9(; z4@O1nG2`=R?h??~FwE^`dWnLe`sxea7x#We!Rxjr6vNzIDn&G2#pXf*1COC^t)#+UN(kK1l?G3lbd}OD@ zLgIBdFo&pahazl*1|!Yer}^)Hj@aza*;BFCPQKK(;~9}YO2nE94Y$kjXTApxNTKxH zKv3+}pv)95gb2LWYsuHO-qpFqY)9eWV|C7AEcFQ%gI$QWKWbrH7Fj4GzvzPC2P#Gi z_j6bCQg?X=*e9O4y&Dh`-eDI0On!|+60CCzbU>#OI?GWI`KH3SlUib&wQBS%cSe@C zTS&?~9@cYWHSfdib9{@w9&U12e$6LB0+z1!pBTj+Yi_^oto*OJy>qzV4EvG}>K%A> z(OD{CRl>$BPJ0IXQ)&{;M!uZ(?sxQqGb745*Bak^GMnGuOBfWDRP+lmJ3}Q)m48mG&my-^*Cm1( z@9W2i{jNtOBjv+kZAH>Ac0QfYOd{blTp!8MmP{1OxTrLyL(@)8M|Dfd|9X{?B4SKC z*$^I%ll2D<ZPhx&*$djc3hc7N9;=Az6v?X-qT=2XHbF?mn=~=hdRw=j=~9KhH(ge~u!?cu z;Xj`0tg;8uujh#wW7^}KCP?i3w+X#e4HV$T@GeE?EfpqRGdGdzPeSB8Q%5JJCwYDM z`k6~%OXZ;jHFGw5h19aL3rHL3X*HC_DqYX-dv;gNzqtQ+B^<0ZG2^iE^$F zd?XJNO)4`j=HfE^&M-eJdte$7hJTQQVFcs+crnGgUcdKgiy7<(Bk;^KMQi?De25|k zEflL!>v?d5IQ)q%bZ|n6l9Z+xtDLelyEViGYQt`1Yt3eA?qud{$mV2gfv>t+_Glk9!wSA9iSf00%e@pW_EZqTuiUXCgaLBsXiTE*%4vVGca6mB&SH;iKZ$ z{7Yob5_>aBsFadE`IF5@Rr8e-3hr%hIa*~aDWGsLU0i$R>G0vwv#P;jIp+d`MizY? z@x*XbN6Sq*DtrUKR!xnINcr!gM!ajNG=!c`mp0a3A+3i#)@H7)UaehUa})O-eNkW2 z8bp7EM1k&fJajvAZ9E(PKn3zL$Od|r3&04 zZ~HMWs)=`Vbt)HqR$x%Mir90{xSy0^4&dv88f-!g4ISf^$iC zuP zn4ZH(*!DIgO6%Sa(H+;DIAlb(gZ3Jqkc!JdGdQK<0xw9h+; zdaUWva8hK;-=5YkY}gm&=0LP?!oam)!n}e}!w5Z_+^Th!F36ZP;FX@BYxG*#ldIR8 z(O5)pv50a}L<*M=k+?5vuBcGF#?oe-WSNukzqjG6od3maK@;O^CPKUsF9{dgQ+n_5 zoz=(h8MROwheNsglfxYSDyF1!^H0q@d}yi}6U?hXkekSc_=I{oQ~<3y!;*{zE8xDd zlFc=vhbDcPexDaGQO7D;#D{y@izTKutEERo)`hFe3S0IQycnb^yt0BNt4^~8&bUTy zhTOK;U)faNHg^jp)J-valt{LmEL`JB-J_}9AXQuv+SRbzJ=v{N00L$!S8%(tS> zp$&4mM%}hcQDKyY0tR zq8phMD^{yKOIZ+FDm^@HK`u)UMBNh(Gf*2_hJkFVKH#IOa0(s|4i63)85xeyd0A3@PyK8$`2YC8hT*{-j1~X;{9{U##FXWvr8G3z zl%)4Ne?>WX=ZA3uC!qZ2*#f`+LHU{d;NSgt?O@>e@52F#^UrJF4CYBMQ~moU_+|U+ z%fDLNli&_E6Wu^I##v_gjZgdI?rXuKoMcck!IaNc~ta)0}R#$&~tvedimcX9bz3u23F>Vzkr%z;o^S+VEI5*g<(KL{v1^7AnpL@Qf@|2 zJ128nn{Qd`lNy8>hU)_uYy4paz(H)kRN?^Zhdv$5T>ksWq5T!GG1!?6mcji(u%#hS z3juvl4>X$ozv$ps{{KcGrfY4b4t2D3b})jfLL3~S4zvdue@CE4P>{AVviwzoM8M`U zOjnq#0Xwh(j)qWxDMu{0zw0j~_@kn~mg8t*2kAAjkATn|sEG^=@mHGvi5OH~%*n|? z@|(bqCJhK_ilGErI0Nb?2}5c^_dk(pI5~iQ_2O2x$I17Ao389{D2Bc*&OQY_vJhP?QaK!|E&!W*nb}Mi@zfT zj>Ov5=9fCm%%N2-1E9M=4`7`UXl66V?=y zfUx4k;{AhZ1vLiZc60*AU;J8VF^iGcQos}=0mC2cJ5%8(7#Xo-$EY|-5oH5HqS#H0PI18 zC-^Ts_?08~mxVuII6AWXx#!}+5Zwli^;7d3**d^ROg|$WY`^;VX+H+xd)DI@RotU4 zwOR&U#RGKugGu*)A3WeYk1ER#B#A@grwVa0`*#ZdXOqI-=p>y5y1FHZM}blL&vRAz zWOT3&&k1U+`p@_d{Brxg9Peim$5fSPM4^+1Ww=UCIA59=yxe zP%F^1TOi(o?eU`;C*z4j9FMVix)NE*cR~3q04^6y88>y0!E|)DG5S%^17KPm+k@ly zj_!Ej{V~@n79ap{O3+VWoxzUPUw|L4 zdvWpS^)3K#58!VZVFZn7do%%9#o-7<{X_eX(Tw|LL2;nmwg8$61~w5`(W5NK_dPX7 z!*vF}M_d7lRt*%54hGK0=|s5WD}FyCQd|*K+5jC64t6Zql2^Tkqk7-64(S-tt$KtlDNAQRLsEv;(om4g%{D~rUc;d036m6 zXWu@#m{LY&w%pVxJkr+{v$qx>9@s|NiB8q6g)sTf*-O<;$S?McB;0m^-AD!{@3hAyzqt|I(o z7Db4=t+SJk1H{e_482YiJ|2E%W11XZZ}LmmjKWw+G5`{81!!Q%_Md0rWFRp^5RpTSoRlEoNKx3cbAPt`Ca5vW zp8@_0V4+|mubhk%3;T~h`R}ooKcl}A8}AMPH6R162y6S`ADxJP66k>(K#30@Slc(A zb2O;g;YvW*WYj?bE6Ku;s|rk$4agN8oEh=&!<>6El7zbvxPe35*~H|yz(Tr+{pkn* zQ~=e7H6(+DCu1wCsGjWel)O0S4&vD@&}Oi`53}fG=zp%y0$WTD6D)`J`)EsO^z5cB z0bqFoj0tQoM^g4176*upqlvA<9}Lf6^RX&x|`11fBHiTlYoH>`xCey#!~9Q$^K*2 z#16TR?ipsd!3n_->U8`;`F{|~*%(8pufyrb~#t z`vVrBM_{X?Bk0`+TU<{fV)be{=K>`53`h)?i2lPL5P^NQ<~Gpp2_5&7h-yb^rVl2l ziGcnd?AHDFLD={MA~~^xRHd}718@iCMn4FT)`FS*g{)#gRSpCQJE8k<^KYm?F3b+3 zCQc^fX5a7u{R2)J5W=cl{nnq50Sa>?bElI;_W%>MF%h&;C@{!8|H=*g+TH#W3Y*{B z#oDUXo4cR_*MP)er$Rr09L!Op{%@WL^38*M+g1(JGICY-uGt6H zu}24!ExdpaRwK5t|A@==cXlBw`y=`yklDdDBG_?EFy5aqfSCIPXZiU(mP{is1YJO@ zVV&hGu%_m>`Ua+rA=W41_cx~rc!Ox37DN=Vo$@2mpWuH>P@ibe0zxj9ae?ATfldi) zIQuC7fZ|&!^~VOQlj=gfQ?ytI`pXhXbHI*TZRq}hNYfn5tvf-i?M~u2=p3Lq4xe-1 zzrTHjGo8c%Hq_g|uGTmh1~Lg&#%}|?=>ZxFn*tmE12l14WB0?@@o3f0(q0`)1K{JJ zys%?T9@gI%Rm#Tr1Z?@5N_cNj?{x5i?N(guzsHudQMH1&|7g;qOV6W~@W30C{_QWN z#|6&uc*XxFXbp(l38mM$Ozm6=l;jNI&x*3l`RCXN=kPlmJDMv`@k~C5a`S;g!kPtS zp+Deof;fO70nnMFrBl-Mf?ov0RSCF1$GEA&C!xzgZNR|}Mj+||+Z3H0AmC`HqX{y+ zpAb`lq89?+18Wz=WKJTGKNxrY7ykG`=|Q*o(Um9<{_xM!22vNtx3CRZee=suj8Zlx zCkp^P10PsBiKqBmumjI^c+811fIeCt2W9(FSc-!`{PU0~orLdbXZ}lBU3)$>9e9ji zhs$Qa#rkHOeluS)%etI*ke!YNW(6!M_|H=Ug0JHxdr(*jF}Z6xVBz?|Sv>~_e>vOP z**YAfg^`qxu-Ji;^aJM#%Y&u%Tb_SZ5X9a(2kF8CdvLVybA;3UxXz(vow*dKhvfL6pwl5pW${gWIle;}24iNx;>@j^=#y{)*sec;&@i zaZFJDD)50dHoI4T2mk%R9|}TWz`((JMJ~wi_@u0$*1&2WOv@iFs^NNj>4V_i8MFkfF7-kG5d6oX zct;bgNp|>R0D@bfQ^1x!8Z3-Ex$_-b`~%;3T&8V~dChu^bu>h3_1wMu!rrFKF66ljFA_tDCb+B`Q9vmA8=3Ty> zT6;9jC&cg#Ti|6pKt>%_Ui_|qOmm#PE{@6|e*$F(cJ(K>fZ+E#@IzPj8%s+k(AhN& z@GSv8Y~e58`W?Qqt(dbD$c6(?f3##oD7q6s;0pHwd|*{I>GofMA3sS-)V;3y6_lP8 zbZ*!rAC>>_2o8ot8o)suqdeE|bbL+$UF-n%K}eU9*u*2-O%3<94I6x_Td8? zJ$QzlMBsdIB=aw+cSDKQ9$;~XfF8o;K{|gA_HVTFUr%vf#Csaf@6Uodbb}9U zh$x%*TX-d?lbNltB-GK!!QAfHDD+AhGglLUe*(-MY^Jq7>9-XB*tp-2Tn}r8s|6&_ zfjYs~W9I%JlW0JlfWTtsdj&RFO~N zZwbCl$Z6Vso4W?;3^JnsoYwVoS9z$i$^bGaaEw4&=f3y9Z(lr5j%NBcIdycotBFu8 zr~%S7kRPChL5nIs3GMh%MRSSe`YIaJ7(_%69UaxX6wOVb2eYcs6PIgcAO%tF z0z5F9_z9Q4<`~>>dv<=)Ne_w$1aSBeegFRU6%3T}sPfuCe@!HCne3VPgSKY{rVw^K z-gg4ZkNF@Cu+|;wbn?`1SL)e)EFe=^5D~z3#hT9J%lQw3hT@-)5S6wy#e>@Sfe&m3 zhaFg%ra1#cH%%>r>PY$MUX{9ERuyA!<`N(Tw3+cWTi9S3N=KAr&_eqwF|Vi7YCIGZ1i z`i@3F5Y`V>g>|`I1IMF-Z7aZ@{Ni#~7~u#4zXc1>$rBe zeWCd-6qraxkaZS=Av7QQe-R!ntc(k}m_dLh4Sbkk=%5q7rIWBSKQ{GKP0UY}1OQJ1 z;lXA)WGDX+7~B(Seyq=JyKfL|2C%n4Q^QU_Nlg77-`2*+*}(x6UgNN7)SW?ZJk~AF zl4#sY1ypjNQ^>){h+yV_rTQki!?k3`^~0B90$Dyl6Y#Kq4#3#v{zuxQbpU7d?EE`W zuY+5BVMkB|?|)0A4z;#*f`TL?)ExAmlQbfYVHFKz5#XqS7{y@3X!_wVX}-1E$(h;m z3y-Dd0bL8|xv;@9`|AHh_f1KT79m6P&4RChhzv{~z>?ki__t(-8#hi8Bwv0$+!hev zflk5>xK_4)OZF$C>kvKmL7yz$JtZ-hik&cj% z1PCT1q)-%)O|nTAmfeuel7!w-Kt2!<5a}HRr767#qM!k(B1kb(RY016sQmBTyBl(L z@64UWf1hWK`9AZ$GiT16IdkUBnZZlejGckO8j4v<r;D&;zEAH)e0aOvGqO}YEFywsR?LG* z4$X&SFs#x+!Z536bePt$)VOpsvNu^cqKPteUBhlZL_j<=L|ne9xb5zY%C1nzb?N@N zGrypB$Dq`dYf&>X*PEtn=XTpk;QZ0SWYj1Oz|P92w((hb7*bq;Xci6A+-{-Er9>)q zDF(bT>X-?lW4GVvI#cBhF-5EiZm%f@yFc4NU7Fkf_HOe4x)24))h0S|y}b@iY=pML znjie)I|Wcz@TC^MQLrv#-tnh4cF{f^{z<#F1+VCT7XMV%R+i=rk z9ZZIu=Pe*?u3=UXmCd*OYEzwByXo9FpkkS)G={M#%sVP&YG{+xFF$H^X^?b+BGLU> z4*n6>SisOTszq zV*!263FH17rLV1ny&C8dzU&>ROQ+;GnGmqF=V=39dZU*6PsiTUa2_fUL^@`FOUx9P z?y%!ti*lpWDL-8?emm;NE$j}>C-5k#SMe1NRC&6pKDh<&h6pypNCG7nt7#iwt%{J?yV=RzN#l1#Yx#q4q?DkJ2plPJ4g+&iK z%8`L03vfla_waWFG%K|eqkA9UdSsNR*|gDd7eODk|Hsq*+JT|`2%&sxWtXOD!{*0y z$y<9`vsOYL%7?lf+cUMX(~RuM!ShxEgK#0$Q~{m;^vMzyW z!jzJ3b6C~K(8vJtSI!#eXaDRA)(iO3jnU}$Wmr4ma=WZFBeKW)wgiu-@q98>j?0Vr zcd=;~A2xK@O1e#kMbl)+yqtT1YrgbhwmJ}WG)UI@0~tCm=H0rtyB*SAgMOVML*><+ zYd@=3d~5Wp3HlX8v~ub!88YwYTiun9+rd;BD#CZ62anBXi`is#@XY>ILD$irAnX_D zX;&2lZnYd;m-nKxSeMw_&c7m>-VS~uO|a^N+7VK~{7jsh-CumEKJ3B)oN3do+OY*< z@X&0laiEe%E%G!Hd-o~MZosjMfDOnf_g*5#ht(NqM9GC@o3^)jv(c~**zLff7*Xnz z-CZGroPjzEI+EWK`T0h67{cn4wk3@pvPMi1p2QB4Go%gJ*sEi1mjDZk0?=VNhhi9_ zF^<48mu|G^^n^7YDx`b@oIlkcVe7>BX-d^akF)FR_n$PjK=LLWAkv7)963NXtx(N@ zlY9SalwTx^9()bep;-`#o2A;DH*5L%?A@Pq`<|UX_(F+jD8%;*DGpUbnI7>;hHf1< zBLDLg6f?~C(5(wsy&!N_u;KGG*jFfE4aTGjObH$Tr#EzXST?$929c(U@F>I0VgP0SHvN<&~kS?c7rLe(yx>x|3{Lj>rk!J2k_(O}V zmoTDPm<)8SIC)hS7k0(SN2VvK1Js0}iywH&W>r?>*4^J<^e_t^9E zY4?h0A*hs373WXqZ^(q#dsKmbO(tNZyTR{`B1ow^NX|TLc8{J3C5ep( z3f6-JH_qbH&FqOq{1S~<01`RL3w{Uh%vy;_dmeqEgEIgX!9?9qGDdo!;Sz?pd@_Xc-FKN!e`a1ZO5@*IQp0o_z~sa#17ssFfU%DcR_-WXNcB-MJTstjEAy!@$t|p41>I zE@sj2#SV-G6?vv5$N+nc)KQ`s&4%&chUc)u$0FAi)fy!4BTITdDLW~wP@8ZSDjOc=nlMm12oS;FEb~E`LqNgg#6TI)os! zVKv4n=ousat$4Z=saI^XdZgLdn!ON=)Yqx+kYi)r8qdy;dcDEjdUzJWw)MMp|eh*;aF-m&@w%*pI%G+U4#tF6aHLe6hXLECpAtBMYCweezjcLna)H8?I>o21O3 z0=G`VBv*seL`~(dll4iI?Tp+GX3!G?h+=48*S-T@;nZ2J{B zCE%F{IpNeF)o=>Kg>hY(br~vW?rOXpJ94GciMHV1AAV>=00dJKj5Kv%@EQrWP%|s= zfDnKn^3%9?>vQP9I&TN<{YFEmUy@8EN=grTSnCm^`uXxoPmF|uXAMwioxhn|B;33?eV z(di~^M))?V@0|L}w!yv@E$_Y@+&}C+tF~==(rL*KmbP~tJ);@$ekTPSuEN_HcmOn& zf8{fL&h^$sFglmf3u?Dl;`WQ?DuJ2dn%a1E(}^CAQcT+I-&5h{xJhU~3#L%p>U);Y z;67WlvFkX#znY6tp9B0?$-KUQPK1rEb5=%hrjh4r_Fns7F4kI&XEz$+LI_VP*gxdq z@{L~j<*{aXJcbZRoXVro&vMv&SuZ)YEwCxDgRo7Z9(e650_=QGg$S3jwN(t~hCs~I z@TCFEFRt_9v67ik>VeggW5@SwW#CJ`(w^Mt${0;{b(czK<_$iD8f$x|joR8W=Xz9` zgTQSJ2beBrC4ZC0=1c#DiK~20qV3qbyWJ*fd`l0Xr66!jn{SDlk>eoonfTVl_t~fS zAAH!nYDLso!rLzt?(+#COF;}Ya_V=N4+}Gk zJMm_t#XLl*0|+HlpJ(A6J2WbG{m>TBR0R#)C)c_sqQNT)=`7z6S^fMY=zeLJR?GnS zHhk%!aP#~6;LvtH^yIaFuc?DJqh^&``fIHReCXIjqh1L&G&OI}P?`Ob_gVTU2N-!x z4$lXNA~FiSd=`JqA`sM>yd?$-OHW4?SOrvD;|@&-SbY-6Yd!j2^O3NLEW1?%y!O*u zAM6A$D}hL-b<|@aa93NJiYqSnaHMIofv>}CSUnuF0eJgMb1_h58^t0@tn8Bv%h}A8 zr&;aVpTR`4mx}zO!=i}Z3o6U?%pE6SqY|)61VM1mK2QGDp^C=Atn)@4?G%5#`{vw> zgV^x{GG5)xSKC5`MdA~Uc}~IH&LgmMV1*cI9{JP45}^Fn_N#Jq$6yF#A->eIoGu{& zEY_sA?(KM^2SkC4bhq_$bxAM4gYAq)dzOuFv$0!6P;>_cT|X0XMk`QORocSRcJ)#W zg*RdCT53d+2VSQ0 zI7|PwX|wmoK&r_At3z;l32|7mEpML}Qf_|9^T0%C)NKV0tR!lig2_J|IoGgK@lH;M zz7}a}Vr4y8ZIwFPx{GB#8u}SJPuKLntLq`UUUAE}qVwc2{`~rS-C&XY5MHO@T|>?1 zpwaG2pNKJ=*vT$CqT{6G90)@U;hq^Npqudk1)-BRD(`$HR| zm9;RIbZc{UZ7G-)ArLvcm;xj6ZIn z3(1n|d2;=7-`!0`0g4X0g+f-hk^`1WO@kaJYog+vagLm>9KO+>E!ONkFB*#riin;g~V3+QVeXn+6!p#0zklo;VXaoZ{wF z^s3zagcS;tfiK^JQ(nRrUy5 zZCO%1-I?u35@BYcN)ifJu{wF?M1dNPpLcfaC1C&M<1X<-$pUP;q&)SIe%>W@k&xkEE_y(R2YU-t|PP zCA1DD!<3gEbadnKq@S)n1_eurq!E$Dcz2F#pu(+#+2b(K?M~b~RMk(-4*w3&$VPON z_5+6in&~v(Z!muU(}wW?%|UzV5LU?22j!fYbV`oh!)gyjh~AplF{nN4;v}bjdDQVs27loUP8AsLj)n(pu zYIFQ}>__uv4DEX`q4X%YKAyhgjI3)=um>_HqWnDU9^#xjPtt8zb#V>5!gmaQ7@g(e zpXxHHB(A-ec2{!hzA!j+I1M_oLuV2gebOQ z^ynsLM24pzO48SE3+938tRbs{GLmpczQ}L61$+_9ve2-IMR@5$Z;-o zQi8`A=Ew18zvO-17viwYY|mqTGVH?t)U$lGP`|h;og(l-=OER_CQDZX}4|Mr5_|1)T=8pME^URdy|nY zhw`<~6FK{rcYo9;QY%Hs@C-Vi_%GQ;~gcSaGnCpHM#$F8wfvZi! z3q3E0z+qcEILsEQyYZovMTiJde9v-+%M!-f*jc7OBtZ9GUrK=GFVEnto}jIp zZ0KC`k=oUhSGa9XR_-2o%*luCA0B6!t8YTK^l+=@RXwZ-JeX?{IT615x>)@Ho(XWe z>`uL|2OgJ-dw;2@VJITVFNrGbmuH{fxCE&g13imv7rv2Jco&+=avNz=BXp3QS(zbr zyHL@JWkmnE4|=f>P8FSn{cnkz>Lh?bY?*A5;HnCgkGG*2TKdVv_2>k9(ur=BX51C? zbdHOR5Iwkc^2o$1W1-!1ASS9R^B#$jjaPNX zwWs;(S@FK8lVO;K1+D{OJ^c57W7Xz+e@E4%Ezq2WaFXdRvVoxp&s|f8;8`!7jyQU% zc2JwD)6Dp3G3eSl7zUc<8{s2O#S-h-f*~UM;q2lWIHWhsK;(lG6)i4D)Dic>$&hLH z$kJ{99Na51RKxV99^Q~razu(X74;=|LFC4=7@y-fl%iX*7?iW(xYJ~Ou#>^{KoLia zrfZMl6vmK%t!)_5xkDAa;efug;c?|Yh$w%b`dfDd!wu|CGCfckUs;aQ_0W-s<-_nJ zL75nzF&^eO)L)XtX3NkQV8x+Jm$w2>J@kh9jRCcEcs!EVwKa{63Z{+%^K zo=aZxskhq=LsPfHzEGE{_$xx7F7XkffM7YFy+`^(Pe;IxP(3|gUx=&BfRI$9HO0ij zB1W7f^6r>7sIaALXSBOAR=Ju^VW>aWHs*3D`1(Sn%TGv4E}q4f@_K)d#o~zR>xpfl zW&a=?Ko{U?dQd&Z3vlb=`{$Q<5jzHKcLGSK>jZHdsj94YuP^UA{r8`cU@?f0YQX4d z9YE&<*T!XS(^k==eYv<=Z&UUo<=F1#<}k_gA-F(B4!cEE+8Dne{trjnj7 zU%CU!Y`F(kx|QB<6tcPuk=*$_gr4tnBuNNuS6-;_P`2SmbH~jA$_0FB2+iLlgQva} z=L!*t9yn`md96_*e4vJ~7@_&vjro`CJ(K$0m1}v>)}lhWw^FBr5xI_T{?Egd=VcT< zf%e|Ef2!VOLk_#uf%Nc^`8oJ>pN!i#s@fJ-c)2!gB^|qXn+%^SL;Bor)-DwI?#1n<>RaUn_DcrZ(B!zO9;e1=(H?vKB+0 zgG}7B6JdRxzQ{b|3ho=kyEx$&m?AZRq7IWfWZJ#Sy*zH56}`dw<+f}lzAHoEdig`d z(cquAuB-yS0c#VrY|W5gA?ifFx8t;%KmF_GLG#f3r+}xs!Z>ObKv)fzz!S#hYw`t5yJ`N?W~kt^}}HWumNmT2F#VenZP?uERG=#o(^7 z6zl)sV!fv<1%7QfLKJ`F3ORgn`};0ge|GZifFs?p@Fv< zpK-yFprH9~NzaFokB0*4V|-~WI9DGmI3Xe3G}z2{Hm59JFkuGd@Dk)ecPKkH=r$Dv zKTxe1=}34qLRcte-{xLNcccA*Sn}u&a`RSw7WLdyhhlQq7mhXr{C<4t4*%3PISRJl zj1p|kPV#k-Z2(sNP^!UIY-JUr8aW+0W0xQ@z zp~N`!>_ZQ$k+@HnhNac%;D7q)*rgWe0uHv^oQ+Oj>Eef3?I`wWQ%qLzlyKXM7Ap@C1f{ z-V9!HN}nM#L1()DcqkNWVq6^y5rbSPpjUmNfa;Ej+G-Pe>mCqa>s zYD<#T<8?(%t(Z|`*J$X3JpYp}6En(sWzwSj!{*topO7({kMj1D{MGp5@!@+2v^tvfTyys&r)L|7hEm3D8&O^fVQVPax%iKdDw6X!pDi}RVZ%49Y2AMVEr;S@ldsnhb74w7rXE?FV# zyPrSl7lJk;5!j6=v81@kPT4EdS)v}4afG22i$sLNJkpDlrG3Rjk)a{7B$k9OkADZr z=P*+A;NxG^ndI1DrA`^E4kbFg^KTP>gYAlN1nK6fgqG7s#{R)IF4{U;Y+mD~aTtQB zCEOP&AC!C5YdGNl^U2+pmH9jxRj1Bf+dH-g8q7|$X*jG@6(P{GV1%|LTJNqkvIzuz z6>AN3b9VWQfm!?^8YRz+?AV1xJG2Sb9;ndg1f~|d(M1E0(E&mNIKJ%yhoeevBv zr7r>cJ+z%>h>k#jj5msqZg~E~BJE~3c$B%4x%(S{PvcA5>x!|dH=&Kb-{)vM_C`uq zw46HPe)WXt>e(Kvi=^(6wBes#%!!$T#-GHO4r=rIQt;187-){i?$~jd-`>Aya zXy7FQ|K!ZHyY|&R=s_@usJB|Cp*)HB#A)!5C_^?n;h9p}EKr`Kdz7}A)-)d8id|iv z<1x%H;FU9hf~v!;9@TX>n=-ZGH!hx@8wU$krjq;AN^hnMk4dY{Fm33!FBIB*7~V{0 z+{34V;2J^F&^)p9^&N6M3g88BvQ49_opHi15DPIkuxyEVYKNOJQ2(=G*$p80?pU0t zj{XxRWPy90IDnPFGKE=81C`@s#EG=!G@|hOCehGOUySlA(A8(3sj*^`xG=t98!_i= zzv^hVKMrlE^k0t`qRQAFzaQ$QtOfWLfK%h}+1p-#^ILz=yzBA|2;PDrrp9e&f)@ll z?J>Pss!a;S-2lrWwan|2#qf^w1e=;$$}gS51`y!Nho*(t&0O>hhU{@tKRu|^-1We! z0w0F%6!+>ug*wvk>Tk!n;#lo4BJ`NlsxKo(zOn?q?%;n_*fY*Jh7e3%qkqn~)& z>aRJ8?2U?1prS`lBL?ZvM8w29`@ydCbJFh@f7GtuWZ>ieg`3W=%h17BV_zZ}t^YP5 zWF)5PY7kJBoRz5yo}rW>5Wz?8{jtbdz)ynKQ$N_Atp^_(B0|3XVZYECK(3F5)9v_5 zyyhw#T=?g>l}2(V*iU{Jt2;xjziIBI%gb(BmCwtTyc( z^8@ts5OxyuL~spGJUJSrwAF3*&n^|36FVSTmPhsS_Uw{T5czD#hK2%vpRGrgmK|jc zx2B>XAPdhye^74F$SE%R)r9?Dy$_y}=oanL(z#+DXSAU!u4S@#El%xNZQdA%#bnnW z>73A6V{U<}8>pyLF>jujN|}bJgrppl$KoCZdd6`oV&5rmMBcig8+<#uLf@LNL!#at z#?%i^GNy44wWeOYlflkt*5FH*(D0?Y1USfGkwpIbfBIVGZ$8J6vkIFuMt@?N7@et< zL#bb zhpxYasmk{;lD{*f0kSmgP~>a)EKoKqy*Z>CN5*+nTGB@}<$7OiV zZST0Sqy|5OCkS>kh&24tf1%-Ai63%cV2w<$jKsGSVGG>yA3DX@((>JkM?@B%CIy=m NtabwNR2F43{2vO)z+M0V diff --git a/app/libs/slf4j-api-1.7.2.jar b/app/libs/slf4j-api-1.7.2.jar deleted file mode 100644 index 1a8870833b37159321426a67596022b07865973e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26083 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 O><2o}%GW;o>;C{ySDdT> diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index b742138..a7c9cf2 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -7,7 +7,6 @@ import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; -import org.slf4j.LoggerFactory; import android.app.Activity; import android.app.ActivityManager; @@ -45,7 +44,6 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.TextView.BufferType; -import ch.qos.logback.classic.Logger; import com.nightscout.android.BuildConfig; import com.nightscout.android.R; @@ -62,7 +60,6 @@ /* Main activity for the DexcomG4Activity program */ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChangeListener, OnEulaAgreedTo{ - private Logger log = (Logger)LoggerFactory.getLogger(DexcomG4Activity.class.getName()); //CGMs supported private static final String TAG = DexcomG4Activity.class.getSimpleName(); @@ -96,7 +93,6 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan final Context ctx = this; SharedPreferences settings = null; SharedPreferences prefs = null; - private static final boolean ISDEBUG = true; class IncomingHandler extends Handler { @Override @@ -327,14 +323,14 @@ private void displaySensor(MedtronicSensorRecord record, long calDate, DecimalFo Float fBgValue = null; try { fBgValue = (float) Integer.parseInt(record.bGValue); - log.info("mmolxl true --> " + record.bGValue); + Log.i(TAG,"mmolxl true --> " + record.bGValue); record.bGValue = df.format(fBgValue / 18f); - log.info("mmolxl/18 true --> " + record.bGValue); + Log.i(TAG,"mmolxl/18 true --> " + record.bGValue); } catch (Exception e) { } } else - log.info("mmolxl false --> " + record.bGValue); + Log.i(TAG,"mmolxl false --> " + record.bGValue); boolean isCalibrating = record.isCalibrating; String calib = "---"; if (isCalibrating) { @@ -555,7 +551,7 @@ public void onClick(View v) { @Override protected void onPause() { - log.info("ON PAUSE!"); + Log.i(TAG,"ON PAUSE!"); super.onPause(); } @@ -567,7 +563,7 @@ private Record getLastRecord() @Override protected void onResume() { - log.info("ON RESUME!"); + Log.i(TAG, "ON RESUME!"); super.onResume(); // Refresh the status updateSensorDisplay(); @@ -643,14 +639,14 @@ public boolean onOptionsItemSelected(MenuItem item) { case R.id.calibMan:{ - log.debug("Manual Calibration"); + Log.d(TAG, "Manual Calibration"); AlertDialog.Builder alert = new AlertDialog.Builder(ctx); alert.setTitle("Manual Calibration"); alert.setMessage("Insert your glucose value in mg/dl (only natural numbers)"); if (prefs.getBoolean("mmolxl", false)){ alert.setMessage("Insert your glucose value in mmol/l (only 2 decimals)"); - log.debug("mmol/l"); + Log.d(TAG,"mmol/l"); } @@ -662,7 +658,7 @@ public boolean onOptionsItemSelected(MenuItem item) { alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { String value = input.getText().toString(); - log.debug("Manual Calibration send "+value); + Log.d(TAG, "Manual Calibration send "+value); if (mService == null && bService != null) { mService = new Messenger(bService); } @@ -682,9 +678,9 @@ public void onClick(DialogInterface dialog, int whichButton) { sb1.append(st.toString()).append("\n"); } Log.e(TAG, "Error sending Manual Calibration\n "+sb1.toString()); - if (ISDEBUG){ - display.setText(display.getText()+"Error sending Manual Calibration\n", BufferType.EDITABLE); - } + + display.setText(display.getText()+"Error sending Manual Calibration\n", BufferType.EDITABLE); + // In this case the service has crashed before we could even do anything with it } } @@ -701,7 +697,7 @@ public void onClick(DialogInterface dialog, int whichButton) { } break; case R.id.instantCalib:{ - log.debug("Instant Calibration "); + Log.d(TAG, "Instant Calibration "); AlertDialog.Builder alert2 = new AlertDialog.Builder(ctx); alert2.setTitle("Instant Calibration"); @@ -710,7 +706,7 @@ public void onClick(DialogInterface dialog, int whichButton) { .getDefaultSharedPreferences(getBaseContext()); if (prefs.getBoolean("mmolxl", false)){ alert2.setMessage("Insert pump value in mmol/l (only 2 decimals)"); - log.debug("Instant Calibration mmol/l"); + Log.d(TAG, "Instant Calibration mmol/l"); } // Set an EditText view to get user input input = new EditText(ctx); @@ -730,7 +726,7 @@ public void onClick(DialogInterface dialog, int whichButton) { alert2.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { String value = input.getText().toString(); - log.debug("Instant Calibration send "+value); + Log.d(TAG, "Instant Calibration send "+value); if (mService != null){ try { Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_SEND_INSTANT_CALIB_VALUE); @@ -747,9 +743,9 @@ public void onClick(DialogInterface dialog, int whichButton) { sb1.append(st.toString()).append("\n"); } Log.e(TAG, "Error sending Instant Calibration\n "+sb1.toString()); - if (ISDEBUG){ - display.setText(display.getText()+"Error sending Instant Calibration\n", BufferType.EDITABLE); - } + + display.setText(display.getText()+"Error sending Instant Calibration\n", BufferType.EDITABLE); + } } @@ -796,7 +792,7 @@ private boolean isServiceAlive(String name){ @Override protected void onDestroy() { Log.i(TAG, "onDestroy called"); - log.info("onDestroy called"); + PreferenceManager.getDefaultSharedPreferences(getBaseContext()).unregisterOnSharedPreferenceChangeListener(this); unregisterReceiver(mArrow); synchronized (mHandlerActiveLock) { diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index 2b23702..16df22d 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -40,7 +40,6 @@ import org.json.JSONArray; import org.json.JSONException; -import org.slf4j.LoggerFactory; import java.io.File; import java.io.FileInputStream; @@ -53,8 +52,6 @@ import java.util.List; import java.util.Map; -import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; /** * This class is the service responsible of manage correctly the interface with the enlite. diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 76a4c55..597a353 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -10,7 +10,6 @@ import java.util.List; import java.util.Locale; -import org.slf4j.LoggerFactory; import android.content.Context; import android.content.SharedPreferences; @@ -24,8 +23,6 @@ import android.text.TextUtils; import android.util.Log; -import ch.qos.logback.classic.Logger; - import com.nightscout.android.dexcom.USB.HexDump; import com.nightscout.android.upload.GlucometerRecord; import com.nightscout.android.upload.MedtronicPumpRecord; @@ -45,8 +42,6 @@ * */ public class MedtronicReader { - private Logger log = (Logger) LoggerFactory.getLogger(MedtronicReader.class - .getName()); private static final String TAG = MedtronicReader.class.getSimpleName(); private Context context; @@ -151,7 +146,7 @@ else if ("2".equalsIgnoreCase(type)) { while (sensorID != null && sensorID.length() > 6) { sensorID = sensorID.substring(1); } - log.debug("SensorID inserted " + Log.d(TAG, "SensorID inserted " + prefs.getString("sensor_cgm_id", "0") + " transformed to " + sensorID); knownDevices.add(sensorID); @@ -242,7 +237,7 @@ public List getKnownDevices() private boolean isMessageFromMyDevices(byte[] readData) { int initByte = firstByteOfDeviceId(readData); if (initByte < 0 || readData.length < initByte){ - log.error("Error checking initByte and received length, I can't check If is from 'My devices'"); + Log.e(TAG, "Error checking initByte and received length, I can't check If is from 'My devices'"); return false; } for (String knownDevice : knownDevices) { @@ -251,7 +246,7 @@ private boolean isMessageFromMyDevices(byte[] readData) { nBytes++; } if (readData.length < (nBytes + initByte)){ - log.error("Error checking received length, I can't check If is from 'My devices'"); + Log.e(TAG, "Error checking received length, I can't check If is from 'My devices'"); return false; } String deviceCode = HexDump.toHexString(readData, initByte, nBytes); @@ -259,7 +254,7 @@ private boolean isMessageFromMyDevices(byte[] readData) { if (knownDevice.toLowerCase().equals(deviceCode.toLowerCase())) return true; else - log.error("Current Known Device "+knownDevice+" Message Received From "+deviceCode); + Log.e(TAG, "Current Known Device "+knownDevice+" Message Received From "+deviceCode); } Log.i(TAG, "Message received from unknown device: " + HexDump.dumpHexString(readData) + " I am expecting any of: " + TextUtils.join(", ", knownDevices)); return false; @@ -573,7 +568,7 @@ private void processDataAnswer(byte[] readData) break; } Log.i(TAG, "process sensor2"); - log.debug("SENSOR DATA RECEIVED"); + if (prefs.getBoolean("isWarmingUp", false)) { if (lastMedtronicPumpRecord == null) { lastMedtronicPumpRecord = new MedtronicPumpRecord(); @@ -868,7 +863,6 @@ public void approveGlucValueForCalibration(float num, boolean calibrate, boolean else{ sendMessageToUI( "Glucometer Detected!!..Waiting 15 min. to retrieve calibration factor..."); - log.debug("Glucometer Detected!!..Waiting 15 min. to retrieve calibration factor..."); Log.d(TAG,"glucometer handler or glucometer runnable is null"); lastGlucometerRecord = new GlucometerRecord(); lastGlucometerRecord.numGlucometerValue = num; @@ -934,10 +928,10 @@ public void processManualCalibrationDataMessage(float value, if (previousRecord == null) { MedtronicSensorRecord auxRecord = new MedtronicSensorRecord(); auxRecord.isCalibrating = !instant; - log.debug("8"); + } else { previousRecord.isCalibrating = !instant; - log.debug("9"); + } editor.putBoolean("isCalibrating", !instant); editor.commit(); @@ -1005,7 +999,7 @@ private void calibratingCurrentElement(long difference, float isig, record.calibrationStatus = calibrationStatus; lastCalibrationDate = currentTime.getTime(); SharedPreferences.Editor editor = settings.edit(); - log.debug("change lastCalibrationDate"); + editor.putLong("lastCalibrationDate", lastCalibrationDate); editor.commit(); @@ -1188,7 +1182,6 @@ public void processSensorDataMessage(byte[] readData) { } } else { Log.i("Medtronic", "NOT Expected sensor number received!!"); - log.debug("SENSOR MEASURE, NOT Expected sensor measure received!!"); int dataLost = -1; if (previousRecord != null || lastSensorValueDate > 0) { long timeDiff = 0; @@ -1225,8 +1218,6 @@ public void processSensorDataMessage(byte[] readData) { dataLost = 10; added = 8; } - log.debug("SENSOR MEASURE, I am going to retrieve " - + (dataLost) + " previous values"); dataLost *= 2; lastElementsAdded = 0; // I must read ALL THE MEASURES @@ -1879,9 +1870,9 @@ private void writeLocalCSV(MedtronicSensorRecord mostRecentData, // Write EGV Binary of last (most recent) data try { if (mostRecentData == null || mostRecentData.bGValue == null) - log.debug("writeLocalCSV SAVING EMPTY!!"); + Log.d(TAG, "writeLocalCSV SAVING EMPTY!!"); else - log.debug("writeLocalCSV SAVING --> " + mostRecentData.bGValue); + Log.d(TAG, "writeLocalCSV SAVING --> " + mostRecentData.bGValue); ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(new File(context.getFilesDir(), "save.bin"))); // Select where you wish to save the @@ -1892,7 +1883,6 @@ private void writeLocalCSV(MedtronicSensorRecord mostRecentData, oos.close();// close the stream } catch (Exception e) { Log.e(TAG, "write to OutputStream failed", e); - log.error("write to OutputStream failed", e); } } diff --git a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java index 3122106..25c0651 100644 --- a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java +++ b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java @@ -19,7 +19,6 @@ import org.json.JSONArray; import org.json.JSONObject; -import org.slf4j.LoggerFactory; import android.content.Context; import android.content.SharedPreferences; @@ -27,7 +26,6 @@ import android.preference.PreferenceManager; import android.util.Log; -import ch.qos.logback.classic.Logger; import com.nightscout.android.dexcom.DexcomG4Activity; import com.nightscout.android.dexcom.EGVRecord; @@ -36,7 +34,7 @@ public class UploadHelper extends AsyncTask { - private Logger log = (Logger) LoggerFactory.getLogger(MedtronicReader.class.getName()); + private static final String TAG = "UploadHelper"; private SharedPreferences settings = null;// common application preferences private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa", Locale.getDefault()); @@ -98,13 +96,11 @@ protected Long doInBackground(Record... records) { long start = System.currentTimeMillis(); Log.i(TAG, String.format("Starting upload of %s record using a REST API", records.length)); - log.info(String.format("Starting upload of %s record using a REST API", records.length)); doRESTUpload(prefs, records); Log.i(TAG, String.format("Finished upload of %s record using a REST API in %s ms", records.length, System.currentTimeMillis() - start)); - log.info(String.format("Finished upload of %s record using a REST API in %s ms", records.length, System.currentTimeMillis() - start)); } catch (Exception e) { - log.error("ERROR uploading data!!!!!", e); + Log.e(TAG,"ERROR uploading data!!!!!", e); } @@ -114,7 +110,6 @@ protected Long doInBackground(Record... records) { protected void onPostExecute(Long result) { super.onPostExecute(result); Log.i(TAG, "Post execute, Result: " + result + ", Status: FINISHED"); - log.info("Post execute, Result: " + result + ", Status: FINISHED"); } @@ -130,7 +125,6 @@ private void doRESTUpload(SharedPreferences prefs, Record... records) { } } catch (Exception e) { Log.e(TAG, "Unable to process API Base URL setting: " + baseURLSettings, e); - log.error("Unable to process API Base URL setting: " + baseURLSettings, e); return; } @@ -139,8 +133,7 @@ private void doRESTUpload(SharedPreferences prefs, Record... records) { doRESTUploadTo(baseURI, records); } catch (Exception e) { Log.e(TAG, "Unable to do REST API Upload to: " + baseURI, e); - log.error("Unable to do REST API Upload to: " + baseURI, e); - } + } } } @@ -251,7 +244,6 @@ private void doRESTUploadTo(String baseURI, Record[] records) throws Exception { postURL += "entries"; } Log.i(TAG, "postURL: " + postURL); - log.info("postURL: " + postURL); HttpPost post = new HttpPost(postURL); @@ -331,7 +323,6 @@ private void doRESTUploadTo(String baseURI, Record[] records) throws Exception { recordsNotUploadedListJson.add(recordsNotUploadedJson.getJSONObject(i)); } } - log.debug("retrieve older json records -->" + recordsNotUploadedJson.length()); } catch (Exception e) { Log.i(TAG, "ERROR RETRIEVING OLDER LISTs, I HAVE LOST THEM"); From cfe2148657c8c0b021771e27bc1bb48b6a725c87 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 20:10:55 +0100 Subject: [PATCH 24/62] tidying up reader of previous record. --- .../nightscout/android/dexcom/DexcomG4Activity.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index a7c9cf2..91f50b8 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -581,20 +581,13 @@ private boolean isMyServiceRunning() { //Deserialize the EGVRecord (most recent) value public Record loadClassFile(File f) { - ObjectInputStream ois = null; - try { - ois = new ObjectInputStream(new FileInputStream(f)); + try { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(f)); Object o = ois.readObject(); ois.close(); return (Record) o; } catch (Exception ex) { Log.w(TAG, " unable to loadEGVRecord"); - try{ - if (ois != null) - ois.close(); - }catch(Exception e){ - Log.e(TAG, " Error closing ObjectInputStream"); - } } return new Record(); } From 3ae3d2b593a8799918c0d793719e31037b4af3e0 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 20:36:01 +0100 Subject: [PATCH 25/62] remove glucometer approval paths, untested and never enabled anyway. --- .../android/dexcom/DexcomG4Activity.java | 66 ------------------- .../medtronic/MedtronicCGMService.java | 17 ----- .../android/medtronic/MedtronicConstants.java | 2 - 3 files changed, 85 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index 91f50b8..9269edf 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -113,10 +113,6 @@ public void handleMessage(Message msg) { mHandler.removeCallbacks(updateDataView); mHandler.post(updateDataView); break; - case MedtronicConstants.MSG_MEDTRONIC_GLUCMEASURE_DETECTED: - Log.i(TAG, "Glucometer measurement detected"); - showUseCalibConfirmation(msg.getData().getFloat("data"), msg.getData().getBoolean("calibrating"), msg.getData().getBoolean("isCalFactorFromPump")); - break; case MedtronicConstants.MSG_MEDTRONIC_CGM_USB_GRANTED: Log.i(TAG, "Message received - USB permission granted"); usbAllowedPermission = true; @@ -144,68 +140,6 @@ public void handleMessage(Message msg) { } } } - private void showUseCalibConfirmation(final float num, final boolean calibrate, final boolean isCalFactorFromPump){ - AlertDialog.Builder alert = new AlertDialog.Builder(ctx); - alert.setTitle("Calibration Detected!!!"); - alert.setMessage("Do you want to use the received glucometer value for calibration?"); - - alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - if (mService != null){ - try { - Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_GLUCMEASURE_APPROVED); - Bundle b = new Bundle(); - b.putBoolean("approved", true); - b.putFloat("data", num); - b.putBoolean("calibrating", calibrate); - b.putBoolean("isCalFactorFromPump", isCalFactorFromPump); - msg.setData(b); - msg.replyTo = mMessenger; - mService.send(msg); - } catch (RemoteException e) { - StringBuffer sb1 = new StringBuffer(""); - sb1.append("EXCEPTION!!!!!! "+ e.getMessage()+" "+e.getCause()); - for (StackTraceElement st : e.getStackTrace()){ - sb1.append(st.toString()).append("\n"); - } - Log.e(TAG, "Error approving gluc. value \n "+sb1.toString()); - - display.setText(display.getText()+"Error approving gluc. value\n", BufferType.EDITABLE); - - } - } - } - }); - - alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - if (mService != null){ - try { - Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_GLUCMEASURE_APPROVED); - Bundle b = new Bundle(); - - b.putBoolean("approved", false); - - msg.setData(b); - msg.replyTo = mMessenger; - mService.send(msg); - } catch (RemoteException e) { - StringBuffer sb1 = new StringBuffer(""); - sb1.append("EXCEPTION!!!!!! "+ e.getMessage()+" "+e.getCause()); - for (StackTraceElement st : e.getStackTrace()){ - sb1.append(st.toString()).append("\n"); - } - Log.e(TAG, "Error approving gluc. value \n "+sb1.toString()); - - display.setText(display.getText()+"Error approving gluc. value\n", BufferType.EDITABLE); - - } - } - } - }); - - alert.show(); - } private ServiceConnection mConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index 16df22d..53b5056 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -114,24 +114,7 @@ public void handleMessage(Message msg) { case MedtronicConstants.MSG_UNREGISTER_CLIENT: mClients.remove(msg.replyTo); break; - case MedtronicConstants.MSG_MEDTRONIC_GLUCMEASURE_APPROVED: - if (msg.getData().getBoolean("approved")) - medtronicReader.approveGlucValueForCalibration(msg.getData().getFloat("data"), msg.getData().getBoolean("calibrating"), msg.getData().getBoolean("isCalFactorFromPump")); - else { - medtronicReader.lastGlucometerRecord = new GlucometerRecord(); - medtronicReader.lastGlucometerRecord.numGlucometerValue = msg.getData().getFloat("data"); - medtronicReader.lastGlucometerValue = msg.getData().getFloat("data"); - Date d = new Date(); - medtronicReader.lastGlucometerRecord.lastDate = d.getTime(); - medtronicReader.lastGlucometerDate = d.getTime(); - medtronicReader.calculateDate(medtronicReader.lastGlucometerRecord, d, 0); - SharedPreferences.Editor editor = settings.edit(); - editor.putFloat("lastGlucometerValue", medtronicReader.lastGlucometerValue); - editor.putLong("glucometerLastDate", d.getTime()); - editor.commit(); - } - break; case MedtronicConstants.MSG_MEDTRONIC_SEND_MANUAL_CALIB_VALUE: String value = msg.getData().getString("sgv"); if (value == null || value.equals("")) { diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java index 8632cc6..f2a78f7 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicConstants.java @@ -79,8 +79,6 @@ public class MedtronicConstants { public static final int MSG_MEDTRONIC_SEND_MANUAL_CALIB_VALUE = 9; public static final int MSG_MEDTRONIC_SEND_INSTANT_CALIB_VALUE = 12; public static final int MSG_MEDTRONIC_CALIBRATION_DONE = 14; - public static final int MSG_MEDTRONIC_GLUCMEASURE_DETECTED = 15; - public static final int MSG_MEDTRONIC_GLUCMEASURE_APPROVED = 16; public static final int MSG_MEDTRONIC_FAKE = 17; From 297f837e6a8e8a739e0ec3a1849078137ffa0678 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 20:58:09 +0100 Subject: [PATCH 26/62] fix some lint/analyzer bugs --- .../java/com/nightscout/android/dexcom/DexcomG4Activity.java | 3 +-- .../nightscout/android/medtronic/MedtronicCGMService.java | 5 ++--- .../com/nightscout/android/medtronic/MedtronicReader.java | 2 +- .../java/com/nightscout/android/upload/UploadHelper.java | 1 - .../main/java/com/nightscout/android/widget/CGMWidget.java | 2 +- app/src/main/res/layout/adb.xml | 2 +- 6 files changed, 6 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index 9269edf..9c0790c 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -435,8 +435,7 @@ public void onClick(View v) { mService.send(msg); } catch (RemoteException re) { - - + Log.e(TAG, "Remote exception sending fake message"); } } }); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index 53b5056..a6fc74c 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -33,7 +33,6 @@ import com.felhr.usbserial.UsbSerialDevice; import com.felhr.usbserial.UsbSerialInterface; import com.nightscout.android.dexcom.USB.HexDump; -import com.nightscout.android.upload.GlucometerRecord; import com.nightscout.android.upload.MedtronicSensorRecord; import com.nightscout.android.upload.Record; import com.nightscout.android.upload.UploadHelper; @@ -749,7 +748,7 @@ private void openUsbSerial() { device = entry.getValue(); int deviceVID = device.getVendorId(); int devicePID = device.getProductId(); - if (deviceVID != 0x1d6b || (devicePID != 0x0001 || devicePID != 0x0002 || devicePID != 0x0003)) { + if (deviceVID != 0x1d6b && devicePID != 0x0001 && devicePID != 0x0002 && devicePID != 0x0003) { // Excludes USB hubs Log.d(TAG, "Device: vendor " + deviceVID + " - ID " + devicePID); connection = usbManager.openDevice(device); @@ -935,7 +934,7 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, if (prefs.getString("sensor_cgm_id", "").length() > 0) { String sensorID = HexDump.toHexString(Integer.parseInt(prefs .getString("sensor_cgm_id", "0"))); - while (sensorID != null && sensorID.length() > 6) { + while (sensorID.length() > 6) { sensorID = sensorID.substring(1); } if (!medtronicReader.knownDevices.contains(sensorID)){ diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 597a353..504ee7c 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -143,7 +143,7 @@ else if ("2".equalsIgnoreCase(type)) { try { String sensorID = HexDump.toHexString(Integer.parseInt(prefs .getString("sensor_cgm_id", "0"))); - while (sensorID != null && sensorID.length() > 6) { + while (sensorID.length() > 6) { sensorID = sensorID.substring(1); } Log.d(TAG, "SensorID inserted " diff --git a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java index 25c0651..ae65ae9 100644 --- a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java +++ b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java @@ -30,7 +30,6 @@ import com.nightscout.android.dexcom.DexcomG4Activity; import com.nightscout.android.dexcom.EGVRecord; import com.nightscout.android.medtronic.MedtronicConstants; -import com.nightscout.android.medtronic.MedtronicReader; public class UploadHelper extends AsyncTask { diff --git a/app/src/main/java/com/nightscout/android/widget/CGMWidget.java b/app/src/main/java/com/nightscout/android/widget/CGMWidget.java index 98f92d7..27c4ed0 100644 --- a/app/src/main/java/com/nightscout/android/widget/CGMWidget.java +++ b/app/src/main/java/com/nightscout/android/widget/CGMWidget.java @@ -70,7 +70,7 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] a service = PendingIntent.getService(context, 0, in, PendingIntent.FLAG_CANCEL_CURRENT); } - m.setRepeating(AlarmManager.RTC, TIME.getTime().getTime(), 1000 * 30, service); + m.setRepeating(AlarmManager.RTC, TIME.getTime().getTime(), 1000 * 60, service); } } @Override diff --git a/app/src/main/res/layout/adb.xml b/app/src/main/res/layout/adb.xml index 441b8c4..099860c 100644 --- a/app/src/main/res/layout/adb.xml +++ b/app/src/main/res/layout/adb.xml @@ -32,7 +32,7 @@ From e21a25ca7ced8982116120b6443a66e1d754bb66 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 21:22:54 +0100 Subject: [PATCH 27/62] fix some lint/analyzer bugs --- .../com/nightscout/android/dexcom/DexcomG4Activity.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index 9c0790c..323e21c 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -183,8 +183,6 @@ private void updateSensorDisplay() { if (settings.contains("lastCalibrationDate")) { calDate = settings.getLong("lastCalibrationDate", -1); } - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getBaseContext()); DecimalFormat df = new DecimalFormat("#.##"); @@ -628,8 +626,7 @@ public void onClick(DialogInterface dialog, int whichButton) { alert2.setTitle("Instant Calibration"); alert2.setMessage("Insert pump value in mg/dl (only natural numbers)"); - prefs = PreferenceManager - .getDefaultSharedPreferences(getBaseContext()); + if (prefs.getBoolean("mmolxl", false)){ alert2.setMessage("Insert pump value in mmol/l (only 2 decimals)"); Log.d(TAG, "Instant Calibration mmol/l"); @@ -658,7 +655,7 @@ public void onClick(DialogInterface dialog, int whichButton) { Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_SEND_INSTANT_CALIB_VALUE); Bundle b = new Bundle(); b.putString("sgv", value); - prefs.edit().putString("instant_sgv", value).commit(); + prefs.edit().putString("instant_sgv", value).apply(); msg.setData(b); msg.replyTo = mMessenger; mService.send(msg); From a790b023f02cd37bf21d5565681d41f2200cd8bf Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 21:28:39 +0100 Subject: [PATCH 28/62] remove unnecessary assignment of prefs, is already initialized --- .../com/nightscout/android/dexcom/DexcomG4Activity.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index 323e21c..c30fc29 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -529,8 +529,6 @@ public boolean onCreateOptionsMenu(Menu menu) { this.menu = menu; inflater.inflate(R.menu.menu, menu); - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getBaseContext()); if (prefs.contains("calibrationType")) { String type = prefs.getString("calibrationType", "3"); if ("3".equalsIgnoreCase(type)) @@ -727,10 +725,7 @@ protected void onDestroy() { startService(service); } mHandlerActive = false; - SharedPreferences.Editor editor = getBaseContext().getSharedPreferences(MedtronicConstants.PREFS_NAME, 0).edit(); - editor.putLong("lastDestroy", System.currentTimeMillis()); - editor.commit(); - super.onDestroy(); + super.onDestroy(); } } From 58b9d6927a2128cdea9b4b6c3bd901f9b1dd8857 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 21:29:53 +0100 Subject: [PATCH 29/62] use commit instead of apply for prefs --- .../java/com/nightscout/android/dexcom/DexcomG4Activity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index c30fc29..b6bfffa 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -589,7 +589,7 @@ public void onClick(DialogInterface dialog, int whichButton) { Message msg = Message.obtain(null, MedtronicConstants.MSG_MEDTRONIC_SEND_MANUAL_CALIB_VALUE); Bundle b = new Bundle(); b.putString("sgv", value); - prefs.edit().putString("manual_sgv", value).commit(); + prefs.edit().putString("manual_sgv", value).apply(); msg.setData(b); msg.replyTo = mMessenger; mService.send(msg); From dd847dd454e34c06dbf4414f0249f2957b36f5d5 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 21:49:29 +0100 Subject: [PATCH 30/62] Don't store last read in persistent settings. Has never been used (due to a bug) - but it doesn't look like a good idea anyway. --- .../android/medtronic/MedtronicReader.java | 23 +++---------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 504ee7c..f3089a5 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -154,8 +154,6 @@ else if ("2".equalsIgnoreCase(type)) { catch(NumberFormatException nfe){ sendErrorMessageToUI("Sensor ID is incorrect - needs to be a number. Ignored."); } - - } } @@ -211,16 +209,6 @@ else if ("2".equalsIgnoreCase(type)) { } } checkCalibrationOutOfTime(); - if (settings.contains("last_read")) { - String lastRead = settings.getString("lastRead", ""); - if (lastRead.length() > 0) { - byte[] last_read = HexDump.hexStringToByteArray(lastRead); - ArrayList bufferedMessages = parseMessageData( - last_read, last_read.length); - if (bufferedMessages != null && bufferedMessages.size() > 0) - processBufferedMessages(bufferedMessages); - } - } } public List getKnownDevices() @@ -372,7 +360,7 @@ private void checkCalibrationOutOfTime() { calibrationStatus = MedtronicConstants.CALIBRATION_MORE_THAN_12H_OLD; SharedPreferences.Editor editor = settings.edit(); editor.putInt("calibrationStatus", calibrationStatus); - editor.commit(); + editor.apply(); } } @@ -654,9 +642,7 @@ public void processBufferedMessages(ArrayList bufferedMessages) { } catch (Exception ex2) { sendErrorMessageToUI(ex2.toString()); } - SharedPreferences.Editor editor = settings.edit(); - editor.remove("last_read"); - editor.commit(); + } /** @@ -683,10 +669,7 @@ private ArrayList parseMessageData(byte[] readData, int read) { } notFinishedRead = null; } - SharedPreferences.Editor editor = settings.edit(); - editor.putString("last_read", HexDump.toHexString(Arrays.copyOfRange( - readBuffer, 0, readBuffer.length))); - editor.commit(); + int i = 0; if (crcErrorBytesToDiscard > 0) i = crcErrorBytesToDiscard; From b6d696c8f1ebff13b6363afdab24cb22e1525fdc Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 22:00:10 +0100 Subject: [PATCH 31/62] use apply instead of commit for settings, is better behaviour. --- .../android/medtronic/MedtronicReader.java | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index f3089a5..50fa8d5 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -374,9 +374,6 @@ public ArrayList readFromReceiver(byte[] readFromDevice) { ArrayList bufferedMessages = null; Log.d(TAG, "READ " + readFromDevice.length + " bytes: " + HexDump.dumpHexString(readFromDevice)); - SharedPreferences.Editor editor = settings.edit(); - editor.putLong("lastDestroy", System.currentTimeMillis()); - editor.commit(); try { bufferedMessages = parseMessageData( Arrays.copyOfRange(readFromDevice, 0, readFromDevice.length), readFromDevice.length); @@ -427,7 +424,7 @@ private void processDataAnswer(byte[] readData) editor.putString( "lastGlucometerMessage", HexDump.toHexString(lastGlucometerMessage)); - editor.commit(); + editor.apply(); } else { boolean isEqual = Arrays .equals(lastGlucometerMessage, @@ -468,7 +465,7 @@ private void processDataAnswer(byte[] readData) sendMessageToUI("isCalibrating"); sendMessageToUI("glucometer data received"); - editor.commit(); + editor.apply(); } } @@ -526,7 +523,7 @@ private void processDataAnswer(byte[] readData) writeLocalCSV(previousRecord, context); } sendMessageToUI("sensor data wUp."); - editor.commit(); + editor.apply(); break; } case MedtronicConstants.MEDTRONIC_SENSOR2: @@ -550,7 +547,7 @@ private void processDataAnswer(byte[] readData) SharedPreferences.Editor editor1 = prefs .edit(); editor1.putBoolean("isWarmingUp", false); - editor1.commit(); + editor1.apply(); } Log.d(TAG,"Sensor value received, but value is took only by pump logs"); break; @@ -570,7 +567,7 @@ private void processDataAnswer(byte[] readData) SharedPreferences.Editor editor = prefs .edit(); editor.remove("isWarmingUp"); - editor.commit(); + editor.apply(); } boolean calculateCalibration = false; if (isCalibrating) { @@ -583,7 +580,7 @@ private void processDataAnswer(byte[] readData) SharedPreferences.Editor editor = settings .edit(); editor.putBoolean("isCalibrating", false); - editor.commit(); + editor.apply(); } sendMessageToUI("sensor data value received"); break; @@ -857,7 +854,7 @@ public void approveGlucValueForCalibration(float num, boolean calibrate, boolean SharedPreferences.Editor editor = settings.edit(); editor.putFloat("lastGlucometerValue", lastGlucometerValue); editor.putLong("glucometerLastDate", d.getTime()); - editor.commit(); + editor.apply(); } } /** @@ -917,9 +914,9 @@ public void processManualCalibrationDataMessage(float value, } editor.putBoolean("isCalibrating", !instant); - editor.commit(); + editor.apply(); } - editor.commit(); + editor.apply(); Log.i(TAG, "Manual calibration:" + num); } @@ -985,7 +982,7 @@ private void calibratingCurrentElement(long difference, float isig, editor.putLong("lastCalibrationDate", lastCalibrationDate); - editor.commit(); + editor.apply(); calibrated = true; } } @@ -1036,7 +1033,7 @@ public void calculateInstantCalibration(float currentMeasure) { editor.putFloat("calibrationFactor", calibrationFactor); editor.putInt("calibrationStatus", calibrationStatus); - editor.commit(); + editor.apply(); } return; } else{ @@ -1274,7 +1271,7 @@ public void processSensorDataMessage(byte[] readData) { editor.putInt("calibrationStatus", calibrationStatus); lastSensorValueDate = d.getTime(); editor.putLong("lastSensorValueDate", lastSensorValueDate); - editor.commit(); + editor.apply(); writeLocalCSV(previousRecord, context); Log.i(TAG, "sensorprocessed end expected " @@ -1417,7 +1414,7 @@ private void calculateCalibration(long difference, float currentMeasure, editor.putFloat("calibrationFactor", calibrationFactor); editor.putInt("calibrationStatus", calibrationStatus); - editor.commit(); + editor.apply(); } else { if (calibrationStatus != MedtronicConstants.WITHOUT_ANY_CALIBRATION && currentIndex != expectedSensorSortNumber) { @@ -1429,7 +1426,7 @@ private void calculateCalibration(long difference, float currentMeasure, SharedPreferences.Editor editor = settings.edit(); editor.remove("expectedSensorSortNumberForCalibration0"); editor.remove("expectedSensorSortNumberForCalibration1"); - editor.commit(); + editor.apply(); } } else if (difference >= MedtronicConstants.TIME_20_MIN_IN_MS) { if (isSensorMeasureInRange(currentIndex, @@ -1443,7 +1440,7 @@ private void calculateCalibration(long difference, float currentMeasure, editor.putFloat("calibrationFactor", calibrationFactor); editor.putInt("calibrationStatus", calibrationStatus); - editor.commit(); + editor.apply(); } else { if (calibrationStatus != MedtronicConstants.WITHOUT_ANY_CALIBRATION) calibrationStatus = MedtronicConstants.LAST_CALIBRATION_FAILED_USING_PREVIOUS; @@ -1453,7 +1450,7 @@ private void calculateCalibration(long difference, float currentMeasure, SharedPreferences.Editor editor = settings.edit(); editor.remove("expectedSensorSortNumberForCalibration0"); editor.remove("expectedSensorSortNumberForCalibration1"); - editor.commit(); + editor.apply(); } isCalibrating = false; } else { @@ -1476,7 +1473,7 @@ private void calculateCalibration(long difference, float currentMeasure, editor.remove("expectedSensorSortNumberForCalibration1"); editor.putInt("calibrationStatus", calibrationStatus); - editor.commit(); + editor.apply(); } } } From 48a8a246ce658cee41e5889d2c80ac47f7158a9e Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 22:27:07 +0100 Subject: [PATCH 32/62] don't store previousValue (raw), it is never read --- .../android/medtronic/MedtronicReader.java | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 50fa8d5..936b115 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -71,7 +71,6 @@ public class MedtronicReader { public Boolean expectedSensorSortNumberLock = false; // expectedSensorSortNumber // Lock for // synchronize - public float previousValue = -1f; // last sensor value read public MedtronicSensorRecord previousRecord = null; // last sensor record public Byte lastCommandSend = null; // last command sent from this public Object sendingCommandLock = new Object(); @@ -174,9 +173,6 @@ else if ("2".equalsIgnoreCase(type)) { this.calibrationFactor); if (settings.contains("lastCalibrationDate")) lastCalibrationDate = settings.getLong("lastCalibrationDate", 0); - if (settings.contains("previousValue")) - previousValue = settings.getFloat("previousValue", - this.previousValue); if (settings.contains("expectedSensorSortNumber") && settings.getString("expectedSensorSortNumber", "").length() > 0) { expectedSensorSortNumber = HexDump.hexStringToByteArray(settings @@ -481,7 +477,6 @@ private void processDataAnswer(byte[] readData) SharedPreferences.Editor editor = settings .edit(); editor.remove("lastGlucometerMessage"); - editor.remove("previousValue"); editor.remove("expectedSensorSortNumber"); editor.remove("isCalibrating"); calibrationStatus = MedtronicConstants.WITHOUT_ANY_CALIBRATION; @@ -1069,7 +1064,6 @@ public void processSensorDataMessage(byte[] readData) { int added = 8; int firstMeasureByte = firstByteAfterDeviceId(readData); - int currentMeasure = -1; float isig = 0; if (firstMeasureByte < 0) @@ -1099,6 +1093,8 @@ public void processSensorDataMessage(byte[] readData) { } lastElementsAdded++; + + int ub = readData[firstMeasureByte + 4 + i] & 0xff; int lb = readData[firstMeasureByte + 5 + i] & 0xff; int num = lb + (ub << 8); @@ -1108,7 +1104,6 @@ public void processSensorDataMessage(byte[] readData) { isig = calculateISIG(num, adjustement); record.setIsig(isig); if (i == 0) { - currentMeasure = num; calibratingCurrentElement(difference, isig, readData, firstMeasureByte + 3, record, num, d); } else { @@ -1145,7 +1140,6 @@ public void processSensorDataMessage(byte[] readData) { isig = calculateISIG(num, adjustement); record.setIsig(isig); record.isCalibrating = isCalibrating; - currentMeasure = num; calibratingCurrentElement(difference, isig, readData, firstMeasureByte + 3, record, num, d); lastRecordsInMemory.add(record); @@ -1221,7 +1215,6 @@ public void processSensorDataMessage(byte[] readData) { isig = calculateISIG(num, adjustement); record.setIsig(isig); if (i == 0) { - currentMeasure = num; calibratingCurrentElement(difference, isig, readData, firstMeasureByte + 3, record, num, d); @@ -1245,7 +1238,6 @@ public void processSensorDataMessage(byte[] readData) { isig = calculateISIG(num, adjustement); record.setIsig(isig); record.isCalibrating = isCalibrating; - currentMeasure = num; calibratingCurrentElement(difference, isig, readData, firstMeasureByte + 3, record, num, d); lastRecordsInMemory.add(record); @@ -1257,7 +1249,7 @@ public void processSensorDataMessage(byte[] readData) { Log.i("Medtronic", "Fill next expected"); expectedSensorSortNumber = readData[firstMeasureByte + 3]; } - previousValue = currentMeasure; + // I must recalculate next message!!!! synchronized (expectedSensorSortNumberLock) { expectedSensorSortNumber = calculateNextSensorSortNameFrom(1, @@ -1265,7 +1257,6 @@ public void processSensorDataMessage(byte[] readData) { } SharedPreferences.Editor editor = settings.edit(); - editor.putFloat("previousValue", previousValue); editor.putString("expectedSensorSortNumber", HexDump.toHexString(expectedSensorSortNumber)); editor.putInt("calibrationStatus", calibrationStatus); From 3f3e38619e527a93c4b3fbb47b63f0bb9ac5d54d Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 22:31:14 +0100 Subject: [PATCH 33/62] Remove unused function for approving glucometer value. --- .../android/medtronic/MedtronicReader.java | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 936b115..1f7e8b3 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -830,28 +830,7 @@ public void processGlucometerDataMessage(byte[] readData) { } - - public void approveGlucValueForCalibration(float num, boolean calibrate, boolean isSensorFactorFromPump){ - if (!isSensorFactorFromPump) { - processManualCalibrationDataMessage(num, false, calibrate); - } - else{ - sendMessageToUI( - "Glucometer Detected!!..Waiting 15 min. to retrieve calibration factor..."); - Log.d(TAG,"glucometer handler or glucometer runnable is null"); - lastGlucometerRecord = new GlucometerRecord(); - lastGlucometerRecord.numGlucometerValue = num; - lastGlucometerValue = num; - Date d = new Date(); - lastGlucometerRecord.lastDate = d.getTime(); - lastGlucometerDate = d.getTime(); - calculateDate(lastGlucometerRecord, d, 0); - SharedPreferences.Editor editor = settings.edit(); - editor.putFloat("lastGlucometerValue", lastGlucometerValue); - editor.putLong("glucometerLastDate", d.getTime()); - editor.apply(); - } - } + /** * This method process the Manual Calibration message * From b5da368f2acee3e3c7a60681b0141543c03f4ca7 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 22:41:14 +0100 Subject: [PATCH 34/62] Don't load a dummy previousValue, when instant-calibrating without any prior sensor reading. --- .../android/medtronic/MedtronicReader.java | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 1f7e8b3..c85cc36 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -1011,21 +1011,9 @@ public void calculateInstantCalibration(float currentMeasure) { } return; } else{ - sendErrorMessageToUI("I can't calibrate, I don't have any ISIG stored yet."); - Log.d(TAG,"I dont have isig"); + sendErrorMessageToUI("I can't calibrate, I don't have any recent stored sensor reading yet. Try again after sensor transmits again."); + Log.d(TAG,"I dont have ISIG from a previous record."); } - if (previousRecord == null) - previousRecord = new MedtronicSensorRecord(); - if (calibrationStatus != MedtronicConstants.WITHOUT_ANY_CALIBRATION - && calibrationFactor != -1f) { - calibrationStatus = MedtronicConstants.LAST_CALIBRATION_FAILED_USING_PREVIOUS; - } else { - calibrationStatus = MedtronicConstants.WITHOUT_ANY_CALIBRATION; - } - previousRecord.calibrationStatus = calibrationStatus; - writeLocalCSV(previousRecord, context); - - Log.d(TAG, "Instant Calibration Failure!! "); } /** From 3418d17b0a0823b5436303592d1b2fe921b04e2d Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 22:46:17 +0100 Subject: [PATCH 35/62] tidy previous commit --- .../android/medtronic/MedtronicReader.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index c85cc36..1c96306 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -984,14 +984,11 @@ private void calibratingCurrentElement(long difference, float isig, } public void calculateInstantCalibration(float currentMeasure) { - Log.d(TAG,"Instant Calibration"); if (previousRecord != null && previousRecord.isig != 0) { - Log.d(TAG, "I have isig " + previousRecord.isig); calibrationFactor = currentMeasure / previousRecord.isig; - Log.d(TAG,"Instant Calibration result " + calibrationFactor); + Log.d(TAG,"Instant Calibration result " + calibrationFactor + "; ISIG is " + previousRecord.isig); if (calibrationFactor > 0) { previousRecord.bGValue = "" + ((int) currentMeasure); - Log.d(TAG,"Instant Calibration Success!! "); calibrationStatus = MedtronicConstants.CALIBRATED; lastCalibrationDate = System.currentTimeMillis(); isCalibrating = false; @@ -1001,16 +998,15 @@ public void calculateInstantCalibration(float currentMeasure) { writeLocalCSV(previousRecord, context); SharedPreferences.Editor editor = settings.edit(); - Log.d(TAG, "change instant lastCalibrationDate"); + editor.putLong("lastCalibrationDate", lastCalibrationDate); - editor.putBoolean("isCalibrating", false); + editor.putBoolean("isCalibrating", isCalibrating); editor.putFloat("calibrationFactor", calibrationFactor); - editor.putInt("calibrationStatus", - calibrationStatus); + editor.putInt("calibrationStatus", calibrationStatus); editor.apply(); } - return; - } else{ + } + else { sendErrorMessageToUI("I can't calibrate, I don't have any recent stored sensor reading yet. Try again after sensor transmits again."); Log.d(TAG,"I dont have ISIG from a previous record."); } From 0379b9d5c92ab3a26cd3349ff8876d67b54bdf0a Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 23:16:24 +0100 Subject: [PATCH 36/62] Store record date properly in the record, not a string or int. --- .../android/dexcom/DexcomG4Activity.java | 14 ++---- .../android/medtronic/MedtronicReader.java | 49 +++++++++---------- .../android/upload/GlucometerRecord.java | 1 - .../android/upload/MedtronicSensorRecord.java | 7 +-- .../com/nightscout/android/upload/Record.java | 17 +++++-- .../android/upload/UploadHelper.java | 2 +- 6 files changed, 45 insertions(+), 45 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index b6bfffa..372c1e8 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -192,10 +192,10 @@ private void updateSensorDisplay() { displaySensor(record, calDate, df); } else { - if (auxRecord == null || auxRecord.displayTime == null) + if (auxRecord == null || auxRecord.getDate() == null) mDumpTextView.setText("\n---\n---\n---\n"); else - mDumpTextView.setText("\n" + auxRecord.displayTime + mDumpTextView.setText("\n" + auxRecord.getDate() + "\n---\n---\n"); } @@ -288,16 +288,12 @@ private void displaySensor(MedtronicSensorRecord record, long calDate, DecimalFo record.trendArrow = "---"; } - if (record.displayDateTime == 0) { - mDumpTextView.setText("\n" + record.displayTime + "\n" + calib + "\n"); - mSensorValue.setText(record.bGValue + " " + record.trendArrow + "\n"); - } else { - mDumpTextView.setText("Last record received:\n" + (System.currentTimeMillis() - record.displayDateTime) / 60000 + " min. ago\nat: " + dateFormat.format(new Date(record.displayDateTime)) + "\n"+ + mDumpTextView.setText("Last record received:\n" + (System.currentTimeMillis() - record.getDate().getTime()) / 60000 + " min. ago\nat: " + dateFormat.format(record.getDate()) + "\n"+ calib + "\n"); - mSensorValue.setText(record.bGValue + " " + record.trendArrow + "\n"); + mSensorValue.setText(record.bGValue + " " + record.trendArrow + "\n"); + - } } private class BatteryReceiver extends BroadcastReceiver { diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 1c96306..44526a8 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -399,7 +399,7 @@ private void processDataAnswer(byte[] readData) ); if (lastMedtronicPumpRecord == null) { lastMedtronicPumpRecord = new MedtronicPumpRecord(); - calculateDate(lastMedtronicPumpRecord, + setRecordDateHistoric(lastMedtronicPumpRecord, new Date(), 0); lastMedtronicPumpRecord.deviceId = prefs .getString("medtronic_cgm_id", ""); @@ -495,7 +495,7 @@ private void processDataAnswer(byte[] readData) if (!prefs.getBoolean("isWarmingUp", false)) { if (lastMedtronicPumpRecord == null) { lastMedtronicPumpRecord = new MedtronicPumpRecord(); - calculateDate(lastMedtronicPumpRecord, + setRecordDateHistoric(lastMedtronicPumpRecord, new Date(), 0); lastMedtronicPumpRecord.deviceId = prefs .getString("medtronic_cgm_id", @@ -509,11 +509,11 @@ private void processDataAnswer(byte[] readData) if (previousRecord == null) { MedtronicSensorRecord auxRecord = new MedtronicSensorRecord(); - calculateDate(auxRecord, new Date(), 0); + setRecordDateHistoric(auxRecord, new Date(), 0); Log.d(TAG, "no previous record - 3"); writeLocalCSV(auxRecord, context); } else { - calculateDate(previousRecord, new Date(), 0); + setRecordDateHistoric(previousRecord, new Date(), 0); Log.d(TAG, "previous record - 4"); writeLocalCSV(previousRecord, context); } @@ -530,7 +530,7 @@ private void processDataAnswer(byte[] readData) if (prefs.getBoolean("isWarmingUp", false)) { if (lastMedtronicPumpRecord == null) { lastMedtronicPumpRecord = new MedtronicPumpRecord(); - calculateDate( + setRecordDateHistoric( lastMedtronicPumpRecord, new Date(), 0); lastMedtronicPumpRecord.deviceId = prefs @@ -552,7 +552,7 @@ private void processDataAnswer(byte[] readData) if (prefs.getBoolean("isWarmingUp", false)) { if (lastMedtronicPumpRecord == null) { lastMedtronicPumpRecord = new MedtronicPumpRecord(); - calculateDate(lastMedtronicPumpRecord, + setRecordDateHistoric(lastMedtronicPumpRecord, new Date(), 0); lastMedtronicPumpRecord.deviceId = prefs .getString("medtronic_cgm_id", @@ -845,9 +845,9 @@ public void processManualCalibrationDataMessage(float value, lastGlucometerRecord.numGlucometerValue = num; lastGlucometerValue = num; Date d = new Date(); - lastGlucometerRecord.lastDate = d.getTime(); + lastGlucometerRecord.setDate(d); lastGlucometerDate = d.getTime(); - calculateDate(lastGlucometerRecord, d, 0); + setRecordDateHistoric(lastGlucometerRecord, d, 0); if (!instant && doCalibration) { if (HexDump.unsignedByte(expectedSensorSortNumber) == HexDump .unsignedByte((byte) 0xff)) { @@ -919,7 +919,7 @@ private void calibratingBackwards(float previousCalibrationFactor, record.calibrationStatus = MedtronicConstants.LAST_CALIBRATION_FAILED_USING_PREVIOUS; } } - calculateDate(record, currentTime, added); + setRecordDateHistoric(record, currentTime, added); } /** @@ -979,10 +979,15 @@ private void calibratingCurrentElement(long difference, float isig, record.calibrationStatus = MedtronicConstants.LAST_CALIBRATION_FAILED_USING_PREVIOUS; } } - calculateDate(record, currentTime, 0); + setRecordDateHistoric(record, currentTime, 0); previousRecord = record; } + /* + + Apply calibration to all upcoming data, immediately. + + */ public void calculateInstantCalibration(float currentMeasure) { if (previousRecord != null && previousRecord.isig != 0) { calibrationFactor = currentMeasure / previousRecord.isig; @@ -1008,7 +1013,7 @@ public void calculateInstantCalibration(float currentMeasure) { } else { sendErrorMessageToUI("I can't calibrate, I don't have any recent stored sensor reading yet. Try again after sensor transmits again."); - Log.d(TAG,"I dont have ISIG from a previous record."); + Log.d(TAG,"Could not instant calibrate. I dont have ISIG from a previous record yet."); } } @@ -1123,7 +1128,7 @@ public void processSensorDataMessage(byte[] readData) { if (previousRecord != null || lastSensorValueDate > 0) { long timeDiff = 0; if (previousRecord != null) - timeDiff = d.getTime() - previousRecord.displayDateTime; + timeDiff = d.getTime() - previousRecord.getDate().getTime(); else timeDiff = d.getTime() - lastSensorValueDate; if (timeDiff > (MedtronicConstants.TIME_30_MIN_IN_MS + MedtronicConstants.TIME_10_MIN_IN_MS)) { @@ -1315,7 +1320,7 @@ private boolean isSensorMeasureInRange(byte measureIndex, byte[] range) { * , index of this reading respectively the initTime reading. * Each increment subtracts 5 minutes to "initTime" */ - public void calculateDate(Record record, Date initTime, int subtract) { + public void setRecordDateHistoric(Record record, Date initTime, int subtract) { long milliseconds = initTime.getTime(); @@ -1337,11 +1342,9 @@ public void calculateDate(Record record, Date initTime, int subtract) { * if (!tz.inDaylightTime(new Date())) timeAdd = timeAdd - 3600000L; */ Date display = new Date(timeAdd); - record.displayTime = new SimpleDateFormat("MM/dd/yyy hh:mm:ss aa", - Locale.getDefault()).format(display); + if (record instanceof MedtronicSensorRecord) { - ((MedtronicSensorRecord) record).displayDateTime = display - .getTime(); + ((MedtronicSensorRecord) record).setDate(display); } } @@ -1463,14 +1466,10 @@ public Float getGlucoseDifferentialIn(int size, CircleList list) { .get(i); Date prevDate = null; Date date = null; - try { - prevDate = formatter.parse(prevRecord.displayTime); - date = formatter.parse(record.displayTime); - dateDif += (prevDate.getTime() - date.getTime()); - Log.d(TAG, "DATE_diff " + dateDif); - } catch (ParseException e1) { - Log.e(TAG, "Bad current or previous value for date", e1); - } + + prevDate = prevRecord.getDate(); + date = record.getDate(); + dateDif += (prevDate.getTime() - date.getTime()); float prevRecordValue = 0; float recordValue = 0; diff --git a/app/src/main/java/com/nightscout/android/upload/GlucometerRecord.java b/app/src/main/java/com/nightscout/android/upload/GlucometerRecord.java index c6cd6bc..0134747 100644 --- a/app/src/main/java/com/nightscout/android/upload/GlucometerRecord.java +++ b/app/src/main/java/com/nightscout/android/upload/GlucometerRecord.java @@ -4,7 +4,6 @@ public class GlucometerRecord extends Record implements Serializable{ public float numGlucometerValue = 0; - public long lastDate = 0; private static final long serialVersionUID = 4654897648L; diff --git a/app/src/main/java/com/nightscout/android/upload/MedtronicSensorRecord.java b/app/src/main/java/com/nightscout/android/upload/MedtronicSensorRecord.java index d933a6f..a31bfc2 100644 --- a/app/src/main/java/com/nightscout/android/upload/MedtronicSensorRecord.java +++ b/app/src/main/java/com/nightscout/android/upload/MedtronicSensorRecord.java @@ -14,8 +14,7 @@ public class MedtronicSensorRecord extends EGVRecord { public int calibrationStatus = MedtronicConstants.WITHOUT_ANY_CALIBRATION; public float unfilteredGlucose = 0; public boolean isCalibrating = false; - public long displayDateTime = 0; - + public void setIsig(float isig) { this.isig = isig; @@ -29,7 +28,5 @@ public void setCalibrationStatus(int calibrationStatus) { public void setUnfilteredGlucose(float unfilteredGlucose) { this.unfilteredGlucose = unfilteredGlucose; } - public long getDisplayDateTime() { - return displayDateTime; - } + } diff --git a/app/src/main/java/com/nightscout/android/upload/Record.java b/app/src/main/java/com/nightscout/android/upload/Record.java index e2d70b7..da6df5b 100644 --- a/app/src/main/java/com/nightscout/android/upload/Record.java +++ b/app/src/main/java/com/nightscout/android/upload/Record.java @@ -1,17 +1,26 @@ package com.nightscout.android.upload; import java.io.Serializable; +import java.util.Date; public class Record implements Serializable { - public String displayTime = "---"; + + private Date date; + + public void setDate(Date d) + { + date = d; + } + + public Date getDate() + { + return date; + } /** * */ private static final long serialVersionUID = -1381174446348390503L; - public void setDisplayTime (String input) { - this.displayTime = input; - } } diff --git a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java index ae65ae9..6ffaaa2 100644 --- a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java +++ b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java @@ -356,7 +356,7 @@ private void postDeviceStatus(String baseURL, DefaultHttpClient httpclient) thro } private void populateV1APIEntry(JSONObject json, Record oRecord) throws Exception { - Date date = DATE_FORMAT.parse(oRecord.displayTime); + Date date = oRecord.getDate(); json.put("date", date.getTime()); if (oRecord instanceof GlucometerRecord) { From 791b3164f93e225b81d0dcc4c091fd08ed3b4e8e Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Thu, 14 Jun 2018 23:37:37 +0100 Subject: [PATCH 37/62] Make BGValue be a float not a string --- .../android/dexcom/DexcomG4Activity.java | 18 +++----- .../nightscout/android/dexcom/EGVRecord.java | 11 +++-- .../medtronic/MedtronicCGMService.java | 43 ++++++------------- .../android/medtronic/MedtronicReader.java | 29 +++++-------- .../android/upload/UploadHelper.java | 2 +- .../nightscout/android/widget/CGMWidget.java | 2 +- .../android/widget/CGMWidgetUpdater.java | 4 +- 7 files changed, 42 insertions(+), 67 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index 372c1e8..929f2dd 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -252,17 +252,13 @@ public void run() { private void displaySensor(MedtronicSensorRecord record, long calDate, DecimalFormat df) { DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); if (prefs.getBoolean("mmolxl", false)) { - Float fBgValue = null; - try { - fBgValue = (float) Integer.parseInt(record.bGValue); - Log.i(TAG,"mmolxl true --> " + record.bGValue); - record.bGValue = df.format(fBgValue / 18f); - Log.i(TAG,"mmolxl/18 true --> " + record.bGValue); - } catch (Exception e) { + float fBgValue = record.getBGValue(); + Log.i(TAG,"mmolxl true --> " + record.getBGValue()); + record.setBGValue(fBgValue / 18f); + Log.i(TAG,"mmolxl/18 true --> " + record.getBGValue()); - } } else - Log.i(TAG,"mmolxl false --> " + record.bGValue); + Log.i(TAG,"mmolxl false --> " + record.getBGValue()); boolean isCalibrating = record.isCalibrating; String calib = "---"; if (isCalibrating) { @@ -284,13 +280,13 @@ private void displaySensor(MedtronicSensorRecord record, long calDate, DecimalFo calib += "\nat: " + dateFormat.format(new Date(calDate)) + "\n"; if (prefs.getBoolean("isWarmingUp", false)) { calib = ""; - record.bGValue = "W_Up"; + record.setBGValue(0); record.trendArrow = "---"; } mDumpTextView.setText("Last record received:\n" + (System.currentTimeMillis() - record.getDate().getTime()) / 60000 + " min. ago\nat: " + dateFormat.format(record.getDate()) + "\n"+ calib + "\n"); - mSensorValue.setText(record.bGValue + " " + record.trendArrow + "\n"); + mSensorValue.setText(record.getBGValue() + " " + record.trendArrow + "\n"); diff --git a/app/src/main/java/com/nightscout/android/dexcom/EGVRecord.java b/app/src/main/java/com/nightscout/android/dexcom/EGVRecord.java index 9b0f08d..a6d4ecf 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/EGVRecord.java +++ b/app/src/main/java/com/nightscout/android/dexcom/EGVRecord.java @@ -5,7 +5,7 @@ import com.nightscout.android.upload.Record; public class EGVRecord extends Record implements Serializable { - public String bGValue = "---"; + private float bGValue = 0; public String trend ="---"; public String trendArrow = "---"; @@ -13,10 +13,15 @@ public class EGVRecord extends Record implements Serializable { private static final long serialVersionUID = 4654897646L; - public void setBGValue (String input) { + public void setBGValue (float input) { this.bGValue = input; } - + + + public float getBGValue () { + return bGValue; + } + public void setTrend (String input) { this.trend = input; } diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index a6fc74c..494f594 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -344,38 +344,19 @@ else if ("2".equalsIgnoreCase(type)){ medtronicReader = new MedtronicReader(getBaseContext(), mClients); - - Record auxRecord = MedtronicCGMService.this.loadClassFile(new File(getBaseContext().getFilesDir(), "save.bin")); - - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getBaseContext()); - - DecimalFormat df = new DecimalFormat("#.##"); - - if (auxRecord instanceof MedtronicSensorRecord){ - - MedtronicSensorRecord record = (MedtronicSensorRecord) auxRecord; - - if (prefs.getBoolean("mmolxl", false)){ - Float fBgValue; - try{ - fBgValue = (float)Integer.parseInt(record.bGValue); - Log.i(TAG, "mmolxl true --> "+record.bGValue); - record.bGValue = df.format(fBgValue/18f); - Log.i(TAG, "mmolxl/18 true --> "+record.bGValue); - }catch (Exception e){ - - } - }else - Log.i(TAG,"mmolxl false --> "+record.bGValue); + Record auxRecord = null; + medtronicReader.previousRecord = null; + try { + auxRecord = MedtronicCGMService.this.loadClassFile(new File(getBaseContext().getFilesDir(), "save.bin")); + } + catch (Exception e) { + Log.e(TAG, "couldn't load last record during onCreate", e); + } - if (prefs.getBoolean("isWarmingUp",false)){ - record.bGValue = "W_Up"; - record.trendArrow="---"; - } - medtronicReader.previousRecord = record; - } + if (auxRecord instanceof MedtronicSensorRecord) { + medtronicReader.previousRecord = (MedtronicSensorRecord) auxRecord; + } checker = medtronicReader.new CalibrationStatusChecker(mHandlerReviewParameters); mHandlerReviewParameters.postDelayed(checker, MedtronicConstants.TIME_5_MIN_IN_MS); @@ -406,7 +387,7 @@ public void onDestroy() { SharedPreferences.Editor editor = settings.edit(); editor.putLong("lastDestroy", System.currentTimeMillis()); - editor.commit(); + editor.apply(); closeUsbSerial(); mHandlerActive = false; unregisterReceiver(mUsbReceiver); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 44526a8..20a0842 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -1,7 +1,6 @@ package com.nightscout.android.medtronic; import java.text.DateFormat; -import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -910,7 +909,7 @@ private void calibratingBackwards(float previousCalibrationFactor, MedtronicSensorRecord record, int added, Date currentTime) { if (previousCalibrationFactor > 0) { record.setUnfilteredGlucose(isig * previousCalibrationFactor); - record.setBGValue((applyFilterToRecord(record)) + ""); + record.setBGValue((applyFilterToRecord(record)) ); record.isCalibrating = false; record.calibrationFactor = previousCalibrationFactor; if (previousCalibrationStatus != MedtronicConstants.WITHOUT_ANY_CALIBRATION) { @@ -946,7 +945,7 @@ private void calibratingCurrentElement(long difference, float isig, if (calibrationStatus != MedtronicConstants.WITHOUT_ANY_CALIBRATION && calibrationStatus != MedtronicConstants.LAST_CALIBRATION_FAILED_USING_PREVIOUS && calibrationStatus != MedtronicConstants.CALIBRATION_MORE_THAN_12H_OLD) { - record.setBGValue(((int) lastGlucometerValue) + ""); + record.setBGValue( lastGlucometerValue ); record.setUnfilteredGlucose(lastGlucometerValue); record.calibrationFactor = calibrationFactor; record.isCalibrating = false; @@ -967,13 +966,13 @@ private void calibratingCurrentElement(long difference, float isig, if (calibrationStatus != MedtronicConstants.WITHOUT_ANY_CALIBRATION) { record.setUnfilteredGlucose(isig * calibrationFactor); - record.setBGValue((applyFilterToRecord(record)) + ""); + record.setBGValue(applyFilterToRecord(record)); record.isCalibrating = false; record.calibrationFactor = calibrationFactor; record.calibrationStatus = calibrationStatus; } else { record.setUnfilteredGlucose(isig * calibrationFactor); - record.setBGValue((applyFilterToRecord(record)) + ""); + record.setBGValue(applyFilterToRecord(record)); record.isCalibrating = false; record.calibrationFactor = calibrationFactor; record.calibrationStatus = MedtronicConstants.LAST_CALIBRATION_FAILED_USING_PREVIOUS; @@ -993,7 +992,7 @@ public void calculateInstantCalibration(float currentMeasure) { calibrationFactor = currentMeasure / previousRecord.isig; Log.d(TAG,"Instant Calibration result " + calibrationFactor + "; ISIG is " + previousRecord.isig); if (calibrationFactor > 0) { - previousRecord.bGValue = "" + ((int) currentMeasure); + previousRecord.setBGValue(currentMeasure); calibrationStatus = MedtronicConstants.CALIBRATED; lastCalibrationDate = System.currentTimeMillis(); isCalibrating = false; @@ -1473,16 +1472,10 @@ public Float getGlucoseDifferentialIn(int size, CircleList list) { float prevRecordValue = 0; float recordValue = 0; - try { - prevRecordValue = Float.parseFloat(prevRecord.bGValue); - } catch (Exception e) { - Log.e(TAG, "Bad previous bGValue: " + prevRecord.bGValue, e); - } - try { - recordValue = Float.parseFloat(record.bGValue); - } catch (Exception e) { - Log.e(TAG, "Bad current bGValue: " + record.bGValue, e); - } + + prevRecordValue = prevRecord.getBGValue(); + recordValue = record.getBGValue(); + if (prevRecordValue > 0 && recordValue <= 0) { Log.d(TAG, "AdjustRecordValue prev " + prevRecordValue @@ -1802,10 +1795,10 @@ private void writeLocalCSV(MedtronicSensorRecord mostRecentData, // Write EGV Binary of last (most recent) data try { - if (mostRecentData == null || mostRecentData.bGValue == null) + if (mostRecentData == null || mostRecentData.getBGValue() == 0) Log.d(TAG, "writeLocalCSV SAVING EMPTY!!"); else - Log.d(TAG, "writeLocalCSV SAVING --> " + mostRecentData.bGValue); + Log.d(TAG, "writeLocalCSV SAVING --> " + mostRecentData.getBGValue()); ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(new File(context.getFilesDir(), "save.bin"))); // Select where you wish to save the diff --git a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java index 6ffaaa2..3773eaa 100644 --- a/app/src/main/java/com/nightscout/android/upload/UploadHelper.java +++ b/app/src/main/java/com/nightscout/android/upload/UploadHelper.java @@ -367,7 +367,7 @@ private void populateV1APIEntry(JSONObject json, Record oRecord) throws Exceptio } else if (oRecord instanceof EGVRecord) { EGVRecord record = (EGVRecord) oRecord; json.put("device", getSelectedDeviceName()); - json.put("sgv", Integer.parseInt(record.bGValue)); + json.put("sgv", (int) record.getBGValue()); json.put("direction", record.trend); if (oRecord instanceof MedtronicSensorRecord) { json.put("isig", ((MedtronicSensorRecord) record).isig); diff --git a/app/src/main/java/com/nightscout/android/widget/CGMWidget.java b/app/src/main/java/com/nightscout/android/widget/CGMWidget.java index 27c4ed0..0ec4dc0 100644 --- a/app/src/main/java/com/nightscout/android/widget/CGMWidget.java +++ b/app/src/main/java/com/nightscout/android/widget/CGMWidget.java @@ -46,7 +46,7 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] a calib = "*"; else calib = MedtronicConstants.getWidgetCalAppend(record.calibrationStatus); - views.setTextViewText(R.id.sgv_id, record.bGValue+calib); + views.setTextViewText(R.id.sgv_id, record.getBGValue()+calib); views.setTextViewText(R.id.arrow_id, record.trendArrow); } else{ diff --git a/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java b/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java index abb87a2..b8e8cfd 100644 --- a/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java +++ b/app/src/main/java/com/nightscout/android/widget/CGMWidgetUpdater.java @@ -74,10 +74,10 @@ private void updateValues(Record auxRecord, RemoteViews views){ calib = MedtronicConstants.getWidgetCalAppend(record.calibrationStatus); if (prefs.getBoolean("isWarmingUp",false)){ calib = ""; - record.bGValue = "W._Up"; + record.setBGValue(0); record.trendArrow="---"; } - views.setTextViewText(R.id.sgv_id, record.bGValue+calib); + views.setTextViewText(R.id.sgv_id, record.getBGValue()+calib); views.setTextViewText(R.id.arrow_id, record.trendArrow); } else{ From c07b174908cd4828afcf28d67c53eea06244a7c1 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Fri, 15 Jun 2018 23:15:25 +0100 Subject: [PATCH 38/62] remove various date setting things, replace with simpler --- .../android/medtronic/MedtronicReader.java | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 20a0842..713f76c 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -398,8 +398,7 @@ private void processDataAnswer(byte[] readData) ); if (lastMedtronicPumpRecord == null) { lastMedtronicPumpRecord = new MedtronicPumpRecord(); - setRecordDateHistoric(lastMedtronicPumpRecord, - new Date(), 0); + lastMedtronicPumpRecord.setDate(new Date()); lastMedtronicPumpRecord.deviceId = prefs .getString("medtronic_cgm_id", ""); } @@ -494,8 +493,7 @@ private void processDataAnswer(byte[] readData) if (!prefs.getBoolean("isWarmingUp", false)) { if (lastMedtronicPumpRecord == null) { lastMedtronicPumpRecord = new MedtronicPumpRecord(); - setRecordDateHistoric(lastMedtronicPumpRecord, - new Date(), 0); + lastMedtronicPumpRecord.setDate(new Date()); lastMedtronicPumpRecord.deviceId = prefs .getString("medtronic_cgm_id", ""); @@ -508,11 +506,11 @@ private void processDataAnswer(byte[] readData) if (previousRecord == null) { MedtronicSensorRecord auxRecord = new MedtronicSensorRecord(); - setRecordDateHistoric(auxRecord, new Date(), 0); + auxRecord.setDate(new Date()); Log.d(TAG, "no previous record - 3"); writeLocalCSV(auxRecord, context); } else { - setRecordDateHistoric(previousRecord, new Date(), 0); + previousRecord.setDate(new Date()); Log.d(TAG, "previous record - 4"); writeLocalCSV(previousRecord, context); } @@ -529,9 +527,7 @@ private void processDataAnswer(byte[] readData) if (prefs.getBoolean("isWarmingUp", false)) { if (lastMedtronicPumpRecord == null) { lastMedtronicPumpRecord = new MedtronicPumpRecord(); - setRecordDateHistoric( - lastMedtronicPumpRecord, - new Date(), 0); + lastMedtronicPumpRecord.setDate(new Date()); lastMedtronicPumpRecord.deviceId = prefs .getString( "medtronic_cgm_id", @@ -551,8 +547,7 @@ private void processDataAnswer(byte[] readData) if (prefs.getBoolean("isWarmingUp", false)) { if (lastMedtronicPumpRecord == null) { lastMedtronicPumpRecord = new MedtronicPumpRecord(); - setRecordDateHistoric(lastMedtronicPumpRecord, - new Date(), 0); + lastMedtronicPumpRecord.setDate(new Date()); lastMedtronicPumpRecord.deviceId = prefs .getString("medtronic_cgm_id", ""); @@ -846,7 +841,7 @@ public void processManualCalibrationDataMessage(float value, Date d = new Date(); lastGlucometerRecord.setDate(d); lastGlucometerDate = d.getTime(); - setRecordDateHistoric(lastGlucometerRecord, d, 0); + if (!instant && doCalibration) { if (HexDump.unsignedByte(expectedSensorSortNumber) == HexDump .unsignedByte((byte) 0xff)) { @@ -978,7 +973,7 @@ private void calibratingCurrentElement(long difference, float isig, record.calibrationStatus = MedtronicConstants.LAST_CALIBRATION_FAILED_USING_PREVIOUS; } } - setRecordDateHistoric(record, currentTime, 0); + record.setDate(currentTime); previousRecord = record; } From 3101dc3dee07aaa0c318274a4a4615c80c60e96a Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sat, 16 Jun 2018 08:13:55 +0100 Subject: [PATCH 39/62] another unused member --- .../com/nightscout/android/medtronic/MedtronicReader.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 713f76c..2200fa8 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -72,7 +72,7 @@ public class MedtronicReader { // synchronize public MedtronicSensorRecord previousRecord = null; // last sensor record public Byte lastCommandSend = null; // last command sent from this - public Object sendingCommandLock = new Object(); + // the receptor is sending a command // and we have no received the ACK @@ -606,8 +606,6 @@ public void processBufferedMessages(ArrayList bufferedMessages) { break; case MedtronicConstants.COMMAND_ANSWER: Log.d(TAG, "ACK Received"); - synchronized (sendingCommandLock) { - } break; case MedtronicConstants.FILTER_COMMAND: if (readData[0] == (byte) 0x13) @@ -622,7 +620,7 @@ public void processBufferedMessages(ArrayList bufferedMessages) { } } } else { - Log.d(TAG, "CRC ERROR!!! " + HexDump.dumpHexString(readData)); + Log.d(TAG, "Invalid message start packet:" + HexDump.dumpHexString(readData)); } } } catch (Exception ex2) { From 8824c28ad51f71efc2beeef8fbcaf5a7207b6d27 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sat, 16 Jun 2018 09:00:57 +0100 Subject: [PATCH 40/62] Remove pump records - we are never reading them (they are encrypted), remove this and logic about pump warming up. --- .../android/dexcom/DexcomG4Activity.java | 6 +- .../medtronic/MedtronicCGMService.java | 8 +- .../android/medtronic/MedtronicReader.java | 124 +----------------- 3 files changed, 9 insertions(+), 129 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index 929f2dd..4c66a91 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -278,11 +278,7 @@ private void displaySensor(MedtronicSensorRecord record, long calDate, DecimalFo } calib += "" + lastCal + tail; calib += "\nat: " + dateFormat.format(new Date(calDate)) + "\n"; - if (prefs.getBoolean("isWarmingUp", false)) { - calib = ""; - record.setBGValue(0); - record.trendArrow = "---"; - } + mDumpTextView.setText("Last record received:\n" + (System.currentTimeMillis() - record.getDate().getTime()) / 60000 + " min. ago\nat: " + dateFormat.format(record.getDate()) + "\n"+ calib + "\n"); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index 494f594..c85dd18 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -319,7 +319,7 @@ public void onCreate() { settings = getSharedPreferences(MedtronicConstants.PREFS_NAME, 0); prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - prefs.edit().remove("isCheckedWUP").commit(); + prefs.registerOnSharedPreferenceChangeListener(this); @@ -603,11 +603,7 @@ public void run() { listToUpload.add(medtronicReader.lastGlucometerRecord); medtronicReader.lastGlucometerRecord = null; } - // upload device info if available - if (medtronicReader.lastMedtronicPumpRecord != null) { - listToUpload.add(medtronicReader.lastMedtronicPumpRecord); - medtronicReader.lastMedtronicPumpRecord = null; - } + Record[] params = new Record[listToUpload.size()]; diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 2200fa8..5c96c0a 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -24,7 +24,6 @@ import com.nightscout.android.dexcom.USB.HexDump; import com.nightscout.android.upload.GlucometerRecord; -import com.nightscout.android.upload.MedtronicPumpRecord; import com.nightscout.android.upload.MedtronicSensorRecord; import com.nightscout.android.upload.Record; import java.io.File; @@ -48,9 +47,7 @@ public class MedtronicReader { protected byte[] idPump = null; protected byte[] notFinishedRead = null; - public MedtronicPumpRecord lastMedtronicPumpRecord = null;// last medtronic - // pump info - // received + public int crcErrorBytesToDiscard = 0; public boolean isCalibrating = false; public int calibrationStatus = MedtronicConstants.WITHOUT_ANY_CALIBRATION; @@ -392,21 +389,10 @@ private void processDataAnswer(byte[] readData) Log.d(TAG, "IS FROM MY DEVICES"); switch (readData[2]) { case MedtronicConstants.MEDTRONIC_PUMP: - Log.d(TAG, "IS A PUMP MESSAGE"); - - processPumpDataMessage(readData - ); - if (lastMedtronicPumpRecord == null) { - lastMedtronicPumpRecord = new MedtronicPumpRecord(); - lastMedtronicPumpRecord.setDate(new Date()); - lastMedtronicPumpRecord.deviceId = prefs - .getString("medtronic_cgm_id", ""); - } - lastMedtronicPumpRecord.isWarmingUp = prefs - .getBoolean("isWarmingUp", false); + Log.d(TAG, "Pump message received"); + processPumpDataMessage(readData); break; case MedtronicConstants.MEDTRONIC_GL: { - //if (calibrationSelectedAux == MedtronicConstants.CALIBRATION_GLUCOMETER) { Log.d(TAG, "GLUCOMETER DATA RECEIVED"); if (lastGlucometerMessage == null || lastGlucometerMessage.length == 0) { @@ -464,114 +450,16 @@ private void processDataAnswer(byte[] readData) } break; - case MedtronicConstants.MEDTRONIC_SENSOR1: { - Log.d(TAG, "SENSOR1 DATA RECEIVED"); - if (prefs.getString("glucSrcTypes", "1") - .equals("2")) { - Log.d(TAG, "Sensor value received, but value is took only by pump logs"); - break; - } - Log.d(TAG, "WARMING_UP"); - SharedPreferences.Editor editor = settings - .edit(); - editor.remove("lastGlucometerMessage"); - editor.remove("expectedSensorSortNumber"); - editor.remove("isCalibrating"); - calibrationStatus = MedtronicConstants.WITHOUT_ANY_CALIBRATION; - editor.putInt( - "calibrationStatus", - MedtronicConstants.WITHOUT_ANY_CALIBRATION); - editor.remove("calibrationFactor"); - Log.d(TAG, "remove lastCalibrationDate"); - editor.remove("lastCalibrationDate"); - editor.remove("lastGlucometerValue"); - editor.remove("lastGlucometerDate"); - editor.remove("expectedSensorSortNumber"); - editor.remove("expectedSensorSortNumberForCalibration0"); - editor.remove("expectedSensorSortNumberForCalibration1"); - editor.remove("isCheckedWUP"); - if (!prefs.getBoolean("isWarmingUp", false)) { - if (lastMedtronicPumpRecord == null) { - lastMedtronicPumpRecord = new MedtronicPumpRecord(); - lastMedtronicPumpRecord.setDate(new Date()); - lastMedtronicPumpRecord.deviceId = prefs - .getString("medtronic_cgm_id", - ""); - } - - editor.putBoolean("isWarmingUp", true); - - lastMedtronicPumpRecord.isWarmingUp = true; - } - - if (previousRecord == null) { - MedtronicSensorRecord auxRecord = new MedtronicSensorRecord(); - auxRecord.setDate(new Date()); - Log.d(TAG, "no previous record - 3"); - writeLocalCSV(auxRecord, context); - } else { - previousRecord.setDate(new Date()); - Log.d(TAG, "previous record - 4"); - writeLocalCSV(previousRecord, context); - } - sendMessageToUI("sensor data wUp."); - editor.apply(); - break; - } + case MedtronicConstants.MEDTRONIC_SENSOR1: case MedtronicConstants.MEDTRONIC_SENSOR2: - Log.d(TAG, "SENSOR2 DATA RECEIVED"); - if (lastMedtronicPumpRecord != null) - lastMedtronicPumpRecord.isWarmingUp = false; + Log.d(TAG, "SENSOR DATA RECEIVED"); if (prefs.getString("glucSrcTypes", "1") .equals("2")) { - if (prefs.getBoolean("isWarmingUp", false)) { - if (lastMedtronicPumpRecord == null) { - lastMedtronicPumpRecord = new MedtronicPumpRecord(); - lastMedtronicPumpRecord.setDate(new Date()); - lastMedtronicPumpRecord.deviceId = prefs - .getString( - "medtronic_cgm_id", - ""); - } - lastMedtronicPumpRecord.isWarmingUp = false; - SharedPreferences.Editor editor1 = prefs - .edit(); - editor1.putBoolean("isWarmingUp", false); - editor1.apply(); - } Log.d(TAG,"Sensor value received, but value is took only by pump logs"); break; } - Log.i(TAG, "process sensor2"); - - if (prefs.getBoolean("isWarmingUp", false)) { - if (lastMedtronicPumpRecord == null) { - lastMedtronicPumpRecord = new MedtronicPumpRecord(); - lastMedtronicPumpRecord.setDate(new Date()); - lastMedtronicPumpRecord.deviceId = prefs - .getString("medtronic_cgm_id", - ""); - } - lastMedtronicPumpRecord.isWarmingUp = false; - SharedPreferences.Editor editor = prefs - .edit(); - editor.remove("isWarmingUp"); - editor.apply(); - } - boolean calculateCalibration = false; - if (isCalibrating) { - calculateCalibration = true; - } - processSensorDataMessage(readData); - - if (calculateCalibration && !isCalibrating) { - SharedPreferences.Editor editor = settings - .edit(); - editor.putBoolean("isCalibrating", false); - editor.apply(); - } - sendMessageToUI("sensor data value received"); + sendMessageToUI("sensor data value processed"); break; default: Log.i(TAG, "No Match"); From 8e9edfc651860598b4cfcf731a455de02ac98884 Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sat, 16 Jun 2018 09:06:36 +0100 Subject: [PATCH 41/62] More automatic clean up. --- .../com/nightscout/android/dexcom/DexcomG4Activity.java | 6 ++---- .../nightscout/android/medtronic/MedtronicCGMService.java | 1 - .../com/nightscout/android/medtronic/MedtronicReader.java | 2 -- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index 4c66a91..e9dc8ac 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -184,12 +184,10 @@ private void updateSensorDisplay() { calDate = settings.getLong("lastCalibrationDate", -1); } - DecimalFormat df = new DecimalFormat("#.##"); - if (auxRecord instanceof MedtronicSensorRecord) { MedtronicSensorRecord record = (MedtronicSensorRecord) auxRecord; - displaySensor(record, calDate, df); + displaySensor(record, calDate); } else { if (auxRecord == null || auxRecord.getDate() == null) @@ -249,7 +247,7 @@ public void run() { }; - private void displaySensor(MedtronicSensorRecord record, long calDate, DecimalFormat df) { + private void displaySensor(MedtronicSensorRecord record, long calDate) { DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); if (prefs.getBoolean("mmolxl", false)) { float fBgValue = record.getBGValue(); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java index c85dd18..d182747 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicCGMService.java @@ -43,7 +43,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.ObjectInputStream; -import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 5c96c0a..4595767 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -1326,8 +1326,6 @@ private void calculateCalibration(long difference, float currentMeasure, */ public Float getGlucoseDifferentialIn(int size, CircleList list) { List auxList = list.getListFromTail(size); - SimpleDateFormat formatter = new SimpleDateFormat( - "MM/dd/yyyy hh:mm:ss a", Locale.getDefault()); if (auxList.size() == size) { Log.d(TAG, "I Have the correct size"); for (int i = 1; i < size; i++) { From 335963324629692c348a0e08dfd18be61dc8707b Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sat, 16 Jun 2018 09:09:48 +0100 Subject: [PATCH 42/62] remove pump request message sent bool --- .../com/nightscout/android/medtronic/MedtronicReader.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 4595767..35236f5 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -7,7 +7,6 @@ import java.util.Collections; import java.util.Date; import java.util.List; -import java.util.Locale; import android.content.Context; @@ -68,8 +67,7 @@ public class MedtronicReader { // Lock for // synchronize public MedtronicSensorRecord previousRecord = null; // last sensor record - public Byte lastCommandSend = null; // last command sent from this - + // the receptor is sending a command // and we have no received the ACK @@ -622,8 +620,6 @@ public void processPumpDataMessage(byte[] readData) { int commandByte = firstByteAfterDeviceId(readData); if (commandByte < 0) return; - if (lastCommandSend == null) - return; switch (readData[commandByte]) { case MedtronicConstants.MEDTRONIC_GET_LAST_PAGE: Log.d(TAG,"Pump get last page command received"); From 6c648726241d021ed867619ff89b5334cbef9a1c Mon Sep 17 00:00:00 2001 From: nightscout-dl Date: Sat, 16 Jun 2018 13:20:49 +0100 Subject: [PATCH 43/62] refactor GUI code, use adb.xml more. --- .../android/dexcom/DexcomG4Activity.java | 132 ++++++------------ .../android/medtronic/MedtronicReader.java | 118 +++++++--------- .../android/upload/GlucometerRecord.java | 3 + app/src/main/res/layout/adb.xml | 86 +++++++++--- app/src/main/res/values/strings.xml | 10 +- 5 files changed, 167 insertions(+), 182 deletions(-) diff --git a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java index e9dc8ac..e00a7fb 100644 --- a/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java +++ b/app/src/main/java/com/nightscout/android/dexcom/DexcomG4Activity.java @@ -75,7 +75,7 @@ public class DexcomG4Activity extends Activity implements OnSharedPreferenceChan private TextView mSensorValue; private TextView mDumpTextView; - private Button b1; + private Button startStopButton; private TextView display; private Menu menu = null; private Intent service = null; @@ -150,14 +150,7 @@ public void onServiceConnected(ComponentName className, IBinder service) { msg.replyTo = mMessenger; mService.send(msg); } catch (RemoteException e) { - - StringBuffer sb1 = new StringBuffer(""); - sb1.append("EXCEPTION!!!!!! "+ e.getMessage()+" "+e.getCause()); - for (StackTraceElement st : e.getStackTrace()){ - sb1.append(st.toString()).append("\n"); - } - Log.e(TAG,"Error Registering Client Service Connection\n"+sb1.toString()); - + Log.e(TAG,"Error Registering Client Service Connection\n", e); display.setText(display.getText()+"Error Registering Client Service Connection\n", BufferType.EDITABLE); // In this case the service has crashed before we could even do anything with it @@ -176,30 +169,27 @@ public void onServiceDisconnected(ComponentName className) { }; private void updateSensorDisplay() { - try { - Record auxRecord = getLastRecord(); - - long calDate = -1; - if (settings.contains("lastCalibrationDate")) { - calDate = settings.getLong("lastCalibrationDate", -1); - } + Record auxRecord = getLastRecord(); - if (auxRecord instanceof MedtronicSensorRecord) { + long calDate = -1; + if (settings.contains("lastCalibrationDate")) { + calDate = settings.getLong("lastCalibrationDate", -1); + } - MedtronicSensorRecord record = (MedtronicSensorRecord) auxRecord; - displaySensor(record, calDate); + if (auxRecord instanceof MedtronicSensorRecord) { - } else { - if (auxRecord == null || auxRecord.getDate() == null) - mDumpTextView.setText("\n---\n---\n---\n"); - else - mDumpTextView.setText("\n" + auxRecord.getDate() - + "\n---\n---\n"); - } + MedtronicSensorRecord record = (MedtronicSensorRecord) auxRecord; + displaySensor(record, calDate); - } catch (Exception e) { - e.printStackTrace(); + } else { + if (auxRecord == null || auxRecord.getDate() == null) + mDumpTextView.setText("\n---\n---\n---\n"); + else + mDumpTextView.setText("\n" + auxRecord.getDate() + + "\n---\n---\n"); } + + } //All I'm really doing here is creating a simple activity to launch and maintain the service @@ -227,12 +217,13 @@ public void run() { if (usbAllowedPermission){ mTitleTextView.setTextColor(Color.GREEN); mTitleTextView.setText("CGM Service Started"); - b1.setText("Stop Uploading CGM Data"); + startStopButton.setText("Stop Uploading CGM Data"); updateSensorDisplay(); }else{ - b1.setText("Start Uploading CGM Data"); + + startStopButton.setText("Start Uploading CGM Data"); mTitleTextView.setTextColor(Color.RED); mTitleTextView.setText("CGM Service Stopped"); } @@ -335,14 +326,11 @@ else if ("2".equalsIgnoreCase(type)){ registerReceiver(mArrow,mIntentFilter); setContentView(R.layout.adb); manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); - mTitleTextView = (TextView) findViewById(R.id.demoTitle); - mDumpTextView = (TextView) findViewById(R.id.demoText); + mTitleTextView = (TextView) findViewById(R.id.status); + mDumpTextView = (TextView) findViewById(R.id.sensorDetail); mSensorValue = (TextView) findViewById(R.id.sensorValue); - LinearLayout lnr = (LinearLayout) findViewById(R.id.container); - LinearLayout lnr2 = new LinearLayout(this); - LinearLayout lnr3 = new LinearLayout(this); - lnr3.setOrientation(LinearLayout.HORIZONTAL); - b1 = new Button(this); + + startStopButton = (Button) findViewById(R.id.buttonStartStop); if (!prefs.getBoolean("IUNDERSTAND", false)){ stopCGMServices(); @@ -358,26 +346,18 @@ else if ("2".equalsIgnoreCase(type)){ mTitleTextView.setTextColor(Color.YELLOW); mTitleTextView.setText("CGM Service Pending"); - b1.setText("Stop Uploading CGM Data"); - lnr.addView(b1); - lnr2.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); - lnr3.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); - Button b2 = new Button(this); - b2.setText("Clear Log"); - b2.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,1.0f)); + startStopButton.setText("Stop Uploading CGM Data"); + + Button clearButton = (Button) findViewById(R.id.buttonClear); - Button b3 = new Button(this); - b3.setText("Send test data"); + Button testButton = (Button) findViewById(R.id.buttonTest); - if (BuildConfig.DEBUG) { - lnr.addView(b3); + if (!BuildConfig.DEBUG) { + testButton.setVisibility(View.GONE); } - // b4 = new Button(this); - // b4.setText("Calibrate"); - // b4.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,1.0f)); - //lnr3.addView(b4); - if (menu != null){ + + if (menu != null){ if (calibrationSelected == MedtronicConstants.CALIBRATION_MANUAL){ menu.getItem(1).setVisible(true); menu.getItem(2).setVisible(false); @@ -387,20 +367,14 @@ else if ("2".equalsIgnoreCase(type)){ } } - lnr3.addView(b2); - lnr.addView(lnr3); - lnr.addView(lnr2); - display = new TextView(this); + + display = (TextView) findViewById(R.id.logView); display.setText("", BufferType.EDITABLE); - display.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); display.setKeyListener(null); - - display.setMovementMethod(new ScrollingMovementMethod()); + display.setMovementMethod(new ScrollingMovementMethod()); display.setMaxLines(10); - - lnr2.addView(display); - b2.setOnClickListener(new OnClickListener() { + clearButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { display.setText("", BufferType.EDITABLE); @@ -409,7 +383,7 @@ public void onClick(View v) { }); - b3.setOnClickListener(new OnClickListener() { + testButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { @@ -424,16 +398,16 @@ public void onClick(View v) { } }); - b1.setOnClickListener(new OnClickListener() { + startStopButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { synchronized (mHandlerActiveLock) { - if (b1.getText() == "Stop Uploading CGM Data") { + if (startStopButton.getText() == "Stop Uploading CGM Data") { mHandlerActive = false; mHandler.removeCallbacks(updateDataView); keepServiceAlive = false; stopCGMServices(); - b1.setText("Start Uploading CGM Data"); + startStopButton.setText("Start Uploading CGM Data"); mTitleTextView.setTextColor(Color.RED); mTitleTextView.setText("CGM Service Stopped"); finish(); @@ -455,7 +429,7 @@ public void onClick(View v) { } } mHandlerActive = true; - b1.setText("Stop Uploading CGM Data"); + startStopButton.setText("Stop Uploading CGM Data"); } } @@ -580,13 +554,7 @@ public void onClick(DialogInterface dialog, int whichButton) { msg.replyTo = mMessenger; mService.send(msg); } catch (RemoteException e) { - StringBuffer sb1 = new StringBuffer(""); - sb1.append("EXCEPTION!!!!!! "+ e.getMessage()+" "+e.getCause()); - for (StackTraceElement st : e.getStackTrace()){ - sb1.append(st.toString()).append("\n"); - } - Log.e(TAG, "Error sending Manual Calibration\n "+sb1.toString()); - + Log.e(TAG, "Error sending Manual Calibration\n ", e); display.setText(display.getText()+"Error sending Manual Calibration\n", BufferType.EDITABLE); // In this case the service has crashed before we could even do anything with it @@ -644,16 +612,8 @@ public void onClick(DialogInterface dialog, int whichButton) { msg.replyTo = mMessenger; mService.send(msg); } catch (RemoteException e) { - StringBuffer sb1 = new StringBuffer(""); - sb1.append("EXCEPTION!!!!!! "+ e.getMessage()+" "+e.getCause()); - for (StackTraceElement st : e.getStackTrace()){ - sb1.append(st.toString()).append("\n"); - } - Log.e(TAG, "Error sending Instant Calibration\n "+sb1.toString()); - + Log.e(TAG, "Error sending Instant Calibration\n ", e); display.setText(display.getText()+"Error sending Instant Calibration\n", BufferType.EDITABLE); - - } } } @@ -779,7 +739,7 @@ else if ("2".equalsIgnoreCase(type)) { mHandler.removeCallbacks(updateDataView); mHandlerActive = false; } - b1.setText("Start Uploading CGM Data"); + startStopButton.setText("Start Uploading CGM Data"); mTitleTextView.setTextColor(Color.RED); mTitleTextView.setText("CGM Service Stopped"); stopCGMServices(); @@ -796,7 +756,7 @@ else if ("2".equalsIgnoreCase(type)) { mHandler.removeCallbacks(updateDataView); mHandlerActive = false; } - b1.setText("Start Uploading CGM Data"); + startStopButton.setText("Start Uploading CGM Data"); mTitleTextView.setTextColor(Color.RED); mTitleTextView.setText("CGM Service Stopped"); stopCGMServices(); diff --git a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java index 35236f5..f30dccc 100644 --- a/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java +++ b/app/src/main/java/com/nightscout/android/medtronic/MedtronicReader.java @@ -67,7 +67,7 @@ public class MedtronicReader { // Lock for // synchronize public MedtronicSensorRecord previousRecord = null; // last sensor record - + // the receptor is sending a command // and we have no received the ACK @@ -84,8 +84,7 @@ public class MedtronicReader { // included). public int lastElementsAdded = 0; // last records read from sensor ArrayList mClients = new ArrayList(); - private byte[] lastGlucometerMessage = null; // last glucometer message - // received + SharedPreferences settings = null; SharedPreferences prefs = null; Integer calibrationSelected = MedtronicConstants.CALIBRATION_GLUCOMETER; @@ -158,10 +157,7 @@ else if ("2".equalsIgnoreCase(type)) { MedtronicConstants.WITHOUT_ANY_CALIBRATION); if (settings.contains("isCalibrating")) isCalibrating = settings.getBoolean("isCalibrating", false); - if (settings.contains("lastGlucometerMessage") - && settings.getString("lastGlucometerMessage", "").length() > 0) - lastGlucometerMessage = HexDump.hexStringToByteArray(settings - .getString("lastGlucometerMessage", "")); + if (settings.contains("calibrationFactor")) calibrationFactor = settings.getFloat("calibrationFactor", this.calibrationFactor); @@ -367,6 +363,7 @@ public ArrayList readFromReceiver(byte[] readFromDevice) { try { bufferedMessages = parseMessageData( Arrays.copyOfRange(readFromDevice, 0, readFromDevice.length), readFromDevice.length); + checkCalibrationOutOfTime(); } catch (Exception e) { @@ -378,11 +375,8 @@ public ArrayList readFromReceiver(byte[] readFromDevice) { private void processDataAnswer(byte[] readData) { - int calibrationSelectedAux; Log.d(TAG, "processDataAnswer"); - calibrationSelectedAux = calibrationSelected; - if (isMessageFromMyDevices(readData)) { Log.d(TAG, "IS FROM MY DEVICES"); switch (readData[2]) { @@ -390,64 +384,10 @@ private void processDataAnswer(byte[] readData) Log.d(TAG, "Pump message received"); processPumpDataMessage(readData); break; - case MedtronicConstants.MEDTRONIC_GL: { + case MedtronicConstants.MEDTRONIC_GL: Log.d(TAG, "GLUCOMETER DATA RECEIVED"); - if (lastGlucometerMessage == null - || lastGlucometerMessage.length == 0) { - lastGlucometerMessage = Arrays - .copyOfRange(readData, 0, - readData.length); - SharedPreferences.Editor editor = settings - .edit(); - editor.putString( - "lastGlucometerMessage", - HexDump.toHexString(lastGlucometerMessage)); - editor.apply(); - } else { - boolean isEqual = Arrays - .equals(lastGlucometerMessage, - readData); - if (isEqual - && (System.currentTimeMillis() - - lastGlucometerDate < MedtronicConstants.TIME_15_MIN_IN_MS)) { - return; - } - lastGlucometerDate = System - .currentTimeMillis(); - lastGlucometerMessage = Arrays - .copyOfRange(readData, 0, - readData.length); - } - processGlucometerDataMessage(readData); - if (lastGlucometerValue > 0) { - isCalibrating = calibrationSelectedAux == MedtronicConstants.CALIBRATION_GLUCOMETER; - if (previousRecord == null) { - MedtronicSensorRecord auxRecord = new MedtronicSensorRecord(); - - auxRecord.isCalibrating = calibrationSelectedAux == MedtronicConstants.CALIBRATION_GLUCOMETER; - writeLocalCSV(auxRecord, context); - Log.d(TAG, "No previous record - 1"); - - } else { - previousRecord.isCalibrating = calibrationSelectedAux == MedtronicConstants.CALIBRATION_GLUCOMETER; - writeLocalCSV(previousRecord, context); - Log.d(TAG, "Has previous record - 2"); - - } - SharedPreferences.Editor editor = settings - .edit(); - - editor.putBoolean("isCalibrating", calibrationSelectedAux == MedtronicConstants.CALIBRATION_GLUCOMETER); - if (calibrationSelectedAux == MedtronicConstants.CALIBRATION_GLUCOMETER) - sendMessageToUI("isCalibrating"); - sendMessageToUI("glucometer data received"); - - editor.apply(); - } - - } - break; + break; case MedtronicConstants.MEDTRONIC_SENSOR1: case MedtronicConstants.MEDTRONIC_SENSOR2: Log.d(TAG, "SENSOR DATA RECEIVED"); @@ -696,13 +636,51 @@ public void processGlucometerDataMessage(byte[] readData) { int ub = readData[firstMeasureByte] & 0xff; int lb = readData[firstMeasureByte + 1] & 0xff; int num = lb + (ub << 8); + + + if (lastGlucometerRecord != null + && num == lastGlucometerRecord.getValue() + && lastGlucometerDate > 0 + && (System.currentTimeMillis() - lastGlucometerDate < MedtronicConstants.TIME_15_MIN_IN_MS)) + { + Log.d(TAG, String.format("Glucometer is a repeat of previous. reading seen: %d / %.2f", num, ((float)num )/18.0)); + return; + } + sendMessageToUI(String.format("Glucometer reading seen: %d / %.2f", num, ((float)num )/18.0)); - if (num < 0 || num > 1535) { + lastGlucometerDate = System.currentTimeMillis(); + + if (num < 0 || num > 1535) { Log.e(TAG, "Glucometer value under 0 or over 0x5ff. Possible ACK or malfunction."); return; } processManualCalibrationDataMessage(num, true, false); + + if (lastGlucometerValue > 0) { + isCalibrating = calibrationSelected == MedtronicConstants.CALIBRATION_GLUCOMETER; + if (previousRecord == null) { + MedtronicSensorRecord auxRecord = new MedtronicSensorRecord(); + + auxRecord.isCalibrating = isCalibrating; + writeLocalCSV(auxRecord, context); + Log.d(TAG, "No previous record - 1"); + + } else { + previousRecord.isCalibrating = isCalibrating; + writeLocalCSV(previousRecord, context); + Log.d(TAG, "Has previous record - 2"); + + } + SharedPreferences.Editor editor = settings + .edit(); + + editor.putBoolean("isCalibrating", isCalibrating); + if (isCalibrating) sendMessageToUI("Glucometer data received - and calibrating from it"); + else sendMessageToUI("Glucometer data received - to use for calibration, go to manual/instant calibration"); + + editor.apply(); + } } @@ -713,10 +691,8 @@ public void processGlucometerDataMessage(byte[] readData) { */ public void processManualCalibrationDataMessage(float value, boolean instant, boolean doCalibration) { - float mult = 1f; - //if (prefs.getBoolean("mmolxl", false)) - //mult = 1f/18f; - float num = value * mult; + + float num = value; lastGlucometerRecord = new GlucometerRecord(); lastGlucometerRecord.numGlucometerValue = num; lastGlucometerValue = num; diff --git a/app/src/main/java/com/nightscout/android/upload/GlucometerRecord.java b/app/src/main/java/com/nightscout/android/upload/GlucometerRecord.java index 0134747..6b64426 100644 --- a/app/src/main/java/com/nightscout/android/upload/GlucometerRecord.java +++ b/app/src/main/java/com/nightscout/android/upload/GlucometerRecord.java @@ -7,4 +7,7 @@ public class GlucometerRecord extends Record implements Serializable{ private static final long serialVersionUID = 4654897648L; + public float getValue() { + return numGlucometerValue; + } } diff --git a/app/src/main/res/layout/adb.xml b/app/src/main/res/layout/adb.xml index 099860c..e050c82 100644 --- a/app/src/main/res/layout/adb.xml +++ b/app/src/main/res/layout/adb.xml @@ -1,48 +1,88 @@ - + android:orientation="vertical"> + + + + android:text="@string/title" + android:textSize="40dp" /> + + + android:text="@string/dummy" + android:textSize="25dp" /> - + + + + android:layout_height="59dp" + android:orientation="horizontal"> +