From 015a3766f9d2d7f716ba1f4092e10ef45329c6ce Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 9 Jan 2021 15:25:19 +0100 Subject: [PATCH 01/11] upgrade to 2.4.9 --- README.md | 4 +-- check_process | 6 ---- conf/app.src | 4 +-- conf/nginx.conf | 2 +- conf/php-fpm.conf | 2 +- manifest.json | 24 ++++++++------ scripts/_common.sh | 16 +++++++++- scripts/backup | 15 ++++----- scripts/change_url | 7 +---- scripts/install | 78 +++++----------------------------------------- scripts/remove | 15 ++------- scripts/restore | 20 +++++------- scripts/upgrade | 48 +++++----------------------- 13 files changed, 67 insertions(+), 174 deletions(-) diff --git a/README.md b/README.md index c56c46e..5b78049 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Halcyon for YunoHost [![Integration level](https://dash.yunohost.org/integration/halcyon.svg)](https://dash.yunohost.org/appci/app/halcyon) ![](https://ci-apps.yunohost.org/ci/badges/halcyon.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/halcyon.maintain.svg) -[![Install Halcyon with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=halcyon) +[![Install Halcyon with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=halcyon) > *This package allows you to install Halcyon quickly and simply on a YunoHost server. If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* @@ -9,7 +9,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview Halcyon is a webclient for Mastodon and Pleroma which looks like Twitter. -**Shipped version:** 2.4.8 +**Shipped version:** 2.4.9 ## Screenshots diff --git a/check_process b/check_process index 8a1010c..fab8d82 100644 --- a/check_process +++ b/check_process @@ -18,14 +18,8 @@ upgrade=1 backup_restore=1 multi_instance=1 - # This test is no longer necessary since the version 2.7 (PR: https://github.com/YunoHost/yunohost/pull/304), you can still do it if your app could be installed with this version. - # incorrect_path=1 port_already_use=0 change_url=0 -;;; Levels - # If the level 5 (Package linter) is forced to 1. Please add justifications here. - Level 5=auto -;;; Options ;;; Options Email=anmol@datamol.org Notification=change diff --git a/conf/app.src b/conf/app.src index aa59415..9f11a3e 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://notabug.org/halcyon-suite/halcyon/archive/2.4.8.tar.gz -SOURCE_SUM=22083d13bb4a349cac888a09bd7f046e9984281d78e793e1342aafe397e38ec6 +SOURCE_URL=https://notabug.org/halcyon-suite/halcyon/archive/2.4.9.tar.gz +SOURCE_SUM=5fa0b6f9bb850b4d94f4d210887559fccf9f230baa898f03f7f167c29f3c8c1e SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/conf/nginx.conf b/conf/nginx.conf index 5a58ef4..5d1fe5d 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -96,5 +96,5 @@ fastcgi_param HTTPS on; fastcgi_buffers 8 256k; fastcgi_buffer_size 128k; fastcgi_intercept_errors on; -fastcgi_pass unix:/var/run/php/php7.0-fpm-__NAME__.sock; +fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; } diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index ab5dca9..ab1a471 100644 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -33,7 +33,7 @@ group = __USER__ ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. -listen = /var/run/php/php7.0-fpm-__NAMETOCHANGE__.sock +listen = /var/run/php/php__PHPVERSION__-fpm-__NAMETOCHANGE__.sock ; Set listen(2) backlog. ; Default Value: 511 (-1 on FreeBSD and OpenBSD) diff --git a/manifest.json b/manifest.json index a9d5d65..e0db8d7 100644 --- a/manifest.json +++ b/manifest.json @@ -3,9 +3,10 @@ "id": "halcyon", "packaging_format": 1, "description": { - "en": "A webclient for Mastodon and Pleroma which looks like Twitter." + "en": "Webclient for Mastodon and Pleroma which looks like Twitter.", + "fr": "Client web pour Mastodon et Pleroma ressemblent à Twitter." }, - "version": "2.4.8~ynh1", + "version": "2.4.9~ynh1", "url": "https://notabug.org/halcyon-suite/halcyon", "license": "AGPL-3.0-only", "maintainer": { @@ -13,12 +14,12 @@ "email": "anmol@datamol.org" }, "requirements": { - "yunohost": ">= 3.0" + "yunohost": ">= 3.8.1" }, "multi_instance": true, "services": [ "nginx", - "php7.0-fpm" + "php7.3-fpm" ], "arguments": { "install" : [ @@ -26,7 +27,8 @@ "name": "domain", "type": "domain", "ask": { - "en": "Choose a domain name for Halcyon" + "en": "Choose a domain name for Halcyon", + "fr": "Choisissez un nom de domaine pour Halcyon" }, "example": "example.com" }, @@ -34,19 +36,21 @@ "name": "is_public", "type": "boolean", "ask": { - "en": "Is it a public application?" + "en": "Is it a public application?", + "fr": "Est-ce une application publique ?" }, "default": true }, { "name": "language", + "type": "string", "ask": { - "en": "Choose the application language" + "en": "Choose the application language", + "fr": "Choisissez la langue de l'application" }, - "choices": ["en_US", "de_DE" , "pt_BR" , "ja_JP" , "ko_KR" , "pl_PL" , "gl_ES" , "fr_FR", "cs_CZ" , "it_IT" ], + "choices": ["en_US", "de_DE", "pt_BR", "ja_JP", "ko_KR", "pl_PL", "gl_ES", "fr_FR", "cs_CZ", "it_IT"], "default": "en_US" - } - + } ] } } diff --git a/scripts/_common.sh b/scripts/_common.sh index 68ac3fa..071a350 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,5 +4,19 @@ # COMMON VARIABLES #================================================= +YNH_PHP_VERSION="7.3" + # dependencies used by the app -pkg_dependencies="php-intl php-mbstring php-curl php-json php-gettext" +extra_php_dependencies="php${YNH_PHP_VERSION}-intl php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-curl php${YNH_PHP_VERSION}-json php${YNH_PHP_VERSION}-gettext" + +#================================================= +# PERSONAL HELPERS +#================================================= + +#================================================= +# EXPERIMENTAL HELPERS +#================================================= + +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= diff --git a/scripts/backup b/scripts/backup index 614e835..0e8f238 100755 --- a/scripts/backup +++ b/scripts/backup @@ -24,38 +24,39 @@ ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." --time --weight=1 +ynh_print_info --message="Loading installation settings..." app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= -# STANDARD BACKUP STEPS +# DECLARE DATA AND CONF FILES TO BACKUP +#================================================= +ynh_print_info --message="Declaring files to be backed up..." + #================================================= # BACKUP THE APP MAIN DIR #================================================= -ynh_script_progression --message="Backing up the main app directory..." --time --weight=1 ynh_backup --src_path="$final_path" #================================================= # BACKUP THE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Backing up nginx web server configuration..." --time --weight=1 ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # BACKUP THE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Backing up php-fpm configuration..." --time --weight=1 -ynh_backup --src_path="/etc/php/7.0/fpm/pool.d/$app.conf" +ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --time --last +ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." diff --git a/scripts/change_url b/scripts/change_url index ee5ad09..8850114 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -29,11 +29,6 @@ ynh_script_progression --message="Loading installation settings..." --time --wei # Needed for helper "ynh_add_nginx_config" final_path=$(ynh_app_setting_get --app=$app --key=final_path) -# Add settings here as needed by your application -#db_name=$(ynh_app_setting_get --app=$app --key=db_name) -#db_user=$db_name -#db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) - #================================================= # CHECK WHICH PARTS SHOULD BE CHANGED #================================================= @@ -112,4 +107,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Change of URL completed for $app" --time --last +ynh_script_progression --message="Change of URL completed for $app" --last diff --git a/scripts/install b/scripts/install index 3ac5e3f..2a99842 100755 --- a/scripts/install +++ b/scripts/install @@ -29,41 +29,19 @@ path_url="/" is_public=$YNH_APP_ARG_IS_PUBLIC language=$YNH_APP_ARG_LANGUAGE - -### If it's a multi-instance app, meaning it can be installed several times independently -### The id of the app as stated in the manifest is available as $YNH_APP_ID -### The instance number is available as $YNH_APP_INSTANCE_NUMBER (equals "1", "2", ...) -### The app instance name is available as $YNH_APP_INSTANCE_NAME -### - the first time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample -### - the second time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample__2 -### - ynhexample__{N} for the subsequent installations, with N=3,4, ... -### The app instance name is probably what interests you most, since this is -### guaranteed to be unique. This is a good unique identifier to define installation path, -### db names, ... app=$YNH_APP_INSTANCE_NAME #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= -### About --weight and --time -### ynh_script_progression will show to your final users the progression of each scripts. -### In order to do that, --weight will represent the relative time of execution compared to the other steps in the script. -### --time is a packager option, it will show you the execution time since the previous call. -### This option should be removed before releasing your app. -### Use the execution time, given by --time, to estimate the weight of a step. -### A common way to do it is to set a weight equal to the execution time in second +1. -### The execution time is given for the duration since the previous call. So the weight should be applied to this previous call. ynh_script_progression --message="Validating installation parameters..." --time --weight=1 -### If the app uses nginx as web server (written in HTML/PHP in most cases), the final path should be "/var/www/$app". -### If the app provides an internal web server (or uses another application server such as uwsgi), the final path should be "/opt/yunohost/$app" final_path=/var/www/$app test ! -e "$final_path" || ynh_die --message="This path already contains a folder" # Register (book) web path ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url - #================================================= # STORE SETTINGS FROM MANIFEST #================================================= @@ -76,32 +54,11 @@ ynh_app_setting_set --app=$app --key=language --value=$language #================================================= # STANDARD MODIFICATIONS -#================================================= - -#================================================= -# INSTALL DEPENDENCIES -#================================================= -ynh_script_progression --message="Installing dependencies..." --time --weight=1 - -### `ynh_install_app_dependencies` allows you to add any "apt" dependencies to the package. -### Those deb packages will be installed as dependencies of this package. -### If you're not using this helper: -### - Remove the section "REMOVE DEPENDENCIES" in the remove script -### - Remove the variable "pkg_dependencies" in _common.sh -### - As well as the section "REINSTALL DEPENDENCIES" in the restore script -### - And the section "UPGRADE DEPENDENCIES" in the upgrade script - -ynh_install_app_dependencies $pkg_dependencies - #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_script_progression --message="Setting up source files..." --time --weight=1 -### `ynh_setup_source` is used to install an app from a zip or tar.gz file, -### downloaded from an upstream source, like a git repository. -### `ynh_setup_source` use the file conf/app.src - ynh_app_setting_set --app=$app --key=final_path --value=$final_path # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$final_path" @@ -109,9 +66,7 @@ ynh_setup_source --dest_dir="$final_path" #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Configuring nginx web server..." --time --weight=1 - -### `ynh_add_nginx_config` will use the file conf/nginx.conf +ynh_script_progression --message="Configuring NGINX web server..." --time --weight=1 # Create a dedicated nginx config ynh_add_nginx_config @@ -127,21 +82,11 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Configuring php-fpm..." --time --weight=1 - -### `ynh_add_fpm_config` is used to set up a PHP config. -### You can remove it if your app doesn't use PHP. -### `ynh_add_fpm_config` will use the files conf/php-fpm.conf -### If you're not using these lines: -### - You can remove these files in conf/. -### - Remove the section "BACKUP THE PHP-FPM CONFIGURATION" in the backup script -### - Remove also the section "REMOVE PHP-FPM CONFIGURATION" in the remove script -### - As well as the section "RESTORE THE PHP-FPM CONFIGURATION" in the restore script -### With the reload at the end of the script. -### - And the section "PHP-FPM CONFIGURATION" in the upgrade script +ynh_script_progression --message="Configuring PHP-FPM..." --time --weight=1 # Create a dedicated php-fpm config -ynh_add_fpm_config +ynh_add_fpm_config --package="$extra_php_dependencies" +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # SPECIFIC SETUP @@ -160,10 +105,6 @@ ynh_replace_string --match_string="en_US" --replace_string="$lan # STORE THE CONFIG FILE CHECKSUM #================================================= -### `ynh_store_file_checksum` is used to store the checksum of a file. -### That way, during the upgrade script, by using `ynh_backup_if_checksum_is_different`, -### you can make a backup of this file before modifying it again if the admin had modified it. - # Calculate and store the config file checksum into the app settings ynh_store_file_checksum --file="$final_path/config/config.ini" @@ -173,10 +114,6 @@ ynh_store_file_checksum --file="$final_path/config/config.ini" # SECURE FILES AND DIRECTORIES #================================================= -### For security reason, any app should set the permissions to root: before anything else. -### Then, if write authorization is needed, any access should be given only to directories -### that really need such authorization. - # Set permissions to app files chown -R $app: $final_path chmod -R 777 $final_path/data @@ -186,11 +123,10 @@ chmod -R 777 $final_path/data #================================================= ynh_script_progression --message="Configuring SSOwat..." --time --weight=1 -# Make app public if necessary +# Make app public if necessary or protect it if [ $is_public -eq 1 ] then - # unprotected_uris allows SSO credentials to be passed anyway. - ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" + ynh_permission_update --permission "main" --add "visitors" fi #================================================= @@ -204,4 +140,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Installation of $app completed" --time --last +ynh_script_progression --message="Installation of $app completed" --last diff --git a/scripts/remove b/scripts/remove index b553ff2..a48de4e 100755 --- a/scripts/remove +++ b/scripts/remove @@ -22,17 +22,6 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) #================================================= # STANDARD REMOVE #================================================= - - -#================================================= -# REMOVE DEPENDENCIES -#================================================= -ynh_script_progression --message="Removing dependencies..." --time --weight=1 - -# Remove metapackage and its dependencies -ynh_remove_app_dependencies - -#================================================= # REMOVE APP MAIN DIR #================================================= ynh_script_progression --message="Removing app main directory..." --time --weight=1 @@ -43,7 +32,7 @@ ynh_secure_remove --file="$final_path" #================================================= # REMOVE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Removing nginx web server configuration..." --time --weight=1 +ynh_script_progression --message="Removing NGINX web server configuration..." --time --weight=1 # Remove the dedicated nginx config ynh_remove_nginx_config @@ -70,4 +59,4 @@ ynh_system_user_delete --username=$app # END OF SCRIPT #================================================= -ynh_script_progression --message="Removal of $app completed" --time --last +ynh_script_progression --message="Removal of $app completed" --last diff --git a/scripts/restore b/scripts/restore index 5dee095..117102d 100755 --- a/scripts/restore +++ b/scripts/restore @@ -31,6 +31,7 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK IF THE APP CAN BE RESTORED @@ -76,31 +77,24 @@ chmod -R 777 $final_path/data #================================================= # RESTORE THE PHP-FPM CONFIGURATION #================================================= +ynh_script_progression --message="Reconfiguring PHP-FPM..." --weight=50 -ynh_restore_file --origin_path="/etc/php/7.0/fpm/pool.d/$app.conf" +ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" -#================================================= -# SPECIFIC RESTORATION -#================================================= -# REINSTALL DEPENDENCIES -#================================================= -ynh_script_progression --message="Reinstalling dependencies..." --time --weight=1 - -# Define and install dependencies -ynh_install_app_dependencies $pkg_dependencies +ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # GENERIC FINALIZATION #================================================= # RELOAD NGINX AND PHP-FPM #================================================= -ynh_script_progression --message="Reloading nginx web server and php-fpm..." --time --weight=1 +ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." --time --weight=1 -ynh_systemd_action --service_name=php7.0-fpm --action=reload +ynh_systemd_action --service_name=php${phpversion}-fpm --action=reload ynh_systemd_action --service_name=nginx --action=reload #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Restoration completed for $app" --time --last +ynh_script_progression --message="Restoration completed for $app" --last diff --git a/scripts/upgrade b/scripts/upgrade index 7e738cd..0c5adc9 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -21,17 +21,12 @@ path_url=$(ynh_app_setting_get --app=$app --key=path) is_public=$(ynh_app_setting_get --app=$app --key=is_public) final_path=$(ynh_app_setting_get --app=$app --key=final_path) language=$(ynh_app_setting_get --app=$app --key=language) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK VERSION #================================================= -### This helper will compare the version of the currently installed app and the version of the upstream package. -### $upgrade_type can have 2 different values -### - UPGRADE_APP if the upstream app version has changed -### - UPGRADE_PACKAGE if only the YunoHost package has changed -### ynh_check_app_version_changed will stop the upgrade if the app is up to date. -### UPGRADE_APP should be used to upgrade the core app only if there's an upgrade to do. upgrade_type=$(ynh_check_app_version_changed) #================================================= @@ -85,18 +80,11 @@ fi #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading nginx web server configuration..." --time --weight=1 +ynh_script_progression --message="Upgrading NGINX web server configuration..." --time --weight=1 # Create a dedicated nginx config ynh_add_nginx_config -#================================================= -# UPGRADE DEPENDENCIES -#================================================= -ynh_script_progression --message="Upgrading dependencies..." --time --weight=1 - -ynh_install_app_dependencies $pkg_dependencies - #================================================= # CREATE DEDICATED USER #================================================= @@ -108,36 +96,26 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading php-fpm configuration..." --time --weight=1 - -# Create a dedicated php-fpm config -ynh_add_fpm_config +ynh_script_progression --message="Upgrading PHP-FPM configuration..." --time --weight=1 +# Create a dedicated PHP-FPM config +ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # CREATE DEDICATED USER #================================================= # Create a dedicated user (if not existing) -ynh_system_user_create $app - -#================================================= -# SPECIFIC UPGRADE -#================================================= -# ... -#================================================= +ynh_system_user_create --username=$app #================================================= # STORE THE CONFIG FILE CHECKSUM #================================================= -### Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script. -### And create a backup of this file if the checksum is different. So the file will be backed up if the admin had modified it. ynh_backup_if_checksum_is_different --file="$final_path/config/config.ini" # Recalculate and store the checksum of the file for the next upgrade. ynh_store_file_checksum --file="$final_path/config/config.ini" - #================================================= # GENERIC FINALIZATION #================================================= @@ -148,22 +126,10 @@ ynh_store_file_checksum --file="$final_path/config/config.ini" chown -R $app: $final_path chmod -R 777 $final_path/data -#================================================= -# SETUP SSOWAT -#================================================= -ynh_script_progression --message="Upgrading SSOwat configuration..." --time --weight=1 - -# Make app public if necessary -if [ $is_public -eq 1 ] -then - # unprotected_uris allows SSO credentials to be passed anyway - ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" -fi - #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." --time --weight=1 +ynh_script_progression --message="Reloading NGINX web server..." --time --weight=1 ynh_systemd_action --service_name=nginx --action=reload From 730baa56302af3a2d19196461ee1af610276d1d5 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 9 Jan 2021 15:42:33 +0100 Subject: [PATCH 02/11] Add README_fr --- README.md | 15 +++++++++++++++ README_fr.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++ scripts/change_url | 16 ++++++++-------- scripts/install | 18 ++++++++--------- scripts/remove | 8 ++++---- scripts/restore | 4 ++-- scripts/upgrade | 20 +++++++++---------- 7 files changed, 96 insertions(+), 33 deletions(-) create mode 100644 README_fr.md diff --git a/README.md b/README.md index 5b78049..24a561b 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ [![Integration level](https://dash.yunohost.org/integration/halcyon.svg)](https://dash.yunohost.org/appci/app/halcyon) ![](https://ci-apps.yunohost.org/ci/badges/halcyon.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/halcyon.maintain.svg) [![Install Halcyon with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=halcyon) +*[Lire ce readme en français.](./README_fr.md)* + > *This package allows you to install Halcyon quickly and simply on a YunoHost server. If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* @@ -31,3 +33,16 @@ Halcyon is a webclient for Mastodon and Pleroma which looks like Twitter. * Upstream app repository: https://notabug.org/halcyon-suite/halcyon * Other Halcyon instances: https://www.halcyon.social/instances.php * YunoHost website: https://yunohost.org/ + +--- + +## Developer info + +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/halcyon_ynh/tree/testing). + +To try the testing branch, please proceed like that. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/halcyon_ynh/tree/testing --debug +or +sudo yunohost app upgrade halcyon -u https://github.com/YunoHost-Apps/halcyon_ynh/tree/testing --debug +``` diff --git a/README_fr.md b/README_fr.md new file mode 100644 index 0000000..c5eb759 --- /dev/null +++ b/README_fr.md @@ -0,0 +1,48 @@ +# Halcyon pour YunoHost + +[![Niveau d'intégration](https://dash.yunohost.org/integration/halcyon.svg)](https://dash.yunohost.org/appci/app/halcyon) ![](https://ci-apps.yunohost.org/ci/badges/halcyon.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/halcyon.maintain.svg) +[![Install Halcyon with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=halcyon) + +*[Read this readme in english.](./README.md)* + +> *Ce package vous permet d'installer Halcyon rapidement et simplement sur un serveur YunoHost. +Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install) pour apprendre comment l'installer.* + + +## Vue d'ensemble +Halcyon est un client Web pour Mastodon et Pleroma qui ressemble à Twitter. + +**Version incluse :** 2.4.9 + +## Captures d'écran + +![](https://halcyon.cybre.space/login/assets/images/preview0.png) + +## Limitations + +* Halcyon nécessite un domaine dédié comme `halcyon.domain.tld`. + +#### Architectures supportées + +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/halcyon%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/halcyon/) +* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/halcyon%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/halcyon/) + +## Liens + + * Signaler un bug : https://github.com/YunoHost-Apps/halcyon_ynh/issues + * Site de l'application : https://notabug.org/halcyon-suite/halcyon + * Dépôt de l'application principale : https://notabug.org/halcyon-suite/halcyon + * Autres instances Halcyon : https://www.halcyon.social/instances.php + * Site web YunoHost : https://yunohost.org/ +--- + +## Informations pour les développeurs + +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/halcyon_ynh/tree/testing). + +Pour essayer la branche testing, procédez comme suit. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/halcyon_ynh/tree/testing --debug +ou +sudo yunohost app upgrade halcyon -u https://github.com/YunoHost-Apps/halcyon_ynh/tree/testing --debug +``` diff --git a/scripts/change_url b/scripts/change_url index 8850114..179858e 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -24,7 +24,7 @@ app=$YNH_APP_INSTANCE_NAME #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." --time --weight=1 +ynh_script_progression --message="Loading installation settings..." --weight=1 # Needed for helper "ynh_add_nginx_config" final_path=$(ynh_app_setting_get --app=$app --key=final_path) @@ -50,23 +50,23 @@ fi #================================================= # MODIFY URL IN NGINX CONF #================================================= -ynh_script_progression --message="Updating nginx web server configuration..." --time --weight=1 +ynh_script_progression --message="Updating NGINX web server configuration..." --weight=3 nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf -# Change the path in the nginx config file +# Change the path in the NGINX config file if [ $change_path -eq 1 ] then - # Make a backup of the original nginx config file if modified + # Make a backup of the original NGINX config file if modified ynh_backup_if_checksum_is_different --file="$nginx_conf_path" - # Set global variables for nginx helper + # Set global variables for NGINX helper domain="$old_domain" path_url="$new_path" - # Create a dedicated nginx config + # Create a dedicated NGINX config ynh_add_nginx_config fi -# Change the domain for nginx +# Change the domain for NGINX if [ $change_domain -eq 1 ] then # Delete file checksum for the old conf file location @@ -99,7 +99,7 @@ ynh_store_file_checksum "$final_path/config/config.ini" #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." --time --weight=1 +ynh_script_progression --message="Reloading nginx web server..." --weight=1 ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/install b/scripts/install index 2a99842..2a6daae 100755 --- a/scripts/install +++ b/scripts/install @@ -34,7 +34,7 @@ app=$YNH_APP_INSTANCE_NAME #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= -ynh_script_progression --message="Validating installation parameters..." --time --weight=1 +ynh_script_progression --message="Validating installation parameters..." --weight=1 final_path=/var/www/$app test ! -e "$final_path" || ynh_die --message="This path already contains a folder" @@ -45,7 +45,7 @@ ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url #================================================= # STORE SETTINGS FROM MANIFEST #================================================= -ynh_script_progression --message="Storing installation settings..." --time --weight=1 +ynh_script_progression --message="Storing installation settings..." --weight=1 ynh_app_setting_set --app=$app --key=domain --value=$domain ynh_app_setting_set --app=$app --key=path --value=$path_url @@ -57,7 +57,7 @@ ynh_app_setting_set --app=$app --key=language --value=$language #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= -ynh_script_progression --message="Setting up source files..." --time --weight=1 +ynh_script_progression --message="Setting up source files..." --weight=3 ynh_app_setting_set --app=$app --key=final_path --value=$final_path # Download, check integrity, uncompress and patch the source from app.src @@ -66,7 +66,7 @@ ynh_setup_source --dest_dir="$final_path" #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Configuring NGINX web server..." --time --weight=1 +ynh_script_progression --message="Configuring NGINX web server..." --weight=2 # Create a dedicated nginx config ynh_add_nginx_config @@ -74,7 +74,7 @@ ynh_add_nginx_config #================================================= # CREATE DEDICATED USER #================================================= -ynh_script_progression --message="Configuring system user..." --time --weight=1 +ynh_script_progression --message="Configuring system user..." --weight=2 # Create a system user ynh_system_user_create --username=$app @@ -82,7 +82,7 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Configuring PHP-FPM..." --time --weight=1 +ynh_script_progression --message="Configuring PHP-FPM..." --weight=1 # Create a dedicated php-fpm config ynh_add_fpm_config --package="$extra_php_dependencies" @@ -116,12 +116,12 @@ ynh_store_file_checksum --file="$final_path/config/config.ini" # Set permissions to app files chown -R $app: $final_path -chmod -R 777 $final_path/data +chmod -R 755 $final_path/data #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." --time --weight=1 +ynh_script_progression --message="Configuring SSOwat..." --weight=10 # Make app public if necessary or protect it if [ $is_public -eq 1 ] @@ -132,7 +132,7 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." --time --weight=1 +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/remove b/scripts/remove index a48de4e..ce8d1e4 100755 --- a/scripts/remove +++ b/scripts/remove @@ -12,7 +12,7 @@ source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." --time --weight=1 +ynh_script_progression --message="Loading installation settings..." --weight=1 app=$YNH_APP_INSTANCE_NAME @@ -24,7 +24,7 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) #================================================= # REMOVE APP MAIN DIR #================================================= -ynh_script_progression --message="Removing app main directory..." --time --weight=1 +ynh_script_progression --message="Removing app main directory..." --weight=2 # Remove the app directory securely ynh_secure_remove --file="$final_path" @@ -40,7 +40,7 @@ ynh_remove_nginx_config #================================================= # REMOVE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Removing php-fpm configuration..." --time --weight=1 +ynh_script_progression --message="Removing PHP-FPM configuration..." --weight=1 # Remove the dedicated php-fpm config ynh_remove_fpm_config @@ -50,7 +50,7 @@ ynh_remove_fpm_config #================================================= # REMOVE DEDICATED USER #================================================= -ynh_script_progression --message="Removing the dedicated system user..." --time --weight=1 +ynh_script_progression --message="Removing the dedicated system user..." --weight=3 # Delete a system user ynh_system_user_delete --username=$app diff --git a/scripts/restore b/scripts/restore index 117102d..c77967b 100755 --- a/scripts/restore +++ b/scripts/restore @@ -72,12 +72,12 @@ ynh_system_user_create --username=$app # Restore permissions on app files chown -R $app: $final_path -chmod -R 777 $final_path/data +chmod -R 755 $final_path/data #================================================= # RESTORE THE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Reconfiguring PHP-FPM..." --weight=50 +ynh_script_progression --message="Reconfiguring PHP-FPM..." --weight=15 ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" diff --git a/scripts/upgrade b/scripts/upgrade index 0c5adc9..5d35b9b 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -12,7 +12,7 @@ source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." --time --weight=1 +ynh_script_progression --message="Loading installation settings..." --weight=1 app=$YNH_APP_INSTANCE_NAME @@ -32,7 +32,7 @@ upgrade_type=$(ynh_check_app_version_changed) #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= -ynh_script_progression --message="Ensuring downward compatibility..." --time --weight=1 +ynh_script_progression --message="Ensuring downward compatibility..." --weight=3 # Fix is_public as a boolean value if [ "$is_public" = "Yes" ]; then @@ -52,7 +52,7 @@ fi #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= -ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --time --weight=1 +ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=1 # Backup the current version of the app ynh_backup_before_upgrade @@ -71,7 +71,7 @@ ynh_abort_if_errors if [ "$upgrade_type" == "UPGRADE_APP" ] then - ynh_script_progression --message="Upgrading source files..." --time --weight=1 + ynh_script_progression --message="Upgrading source files..." --weight=2 # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$final_path" @@ -80,7 +80,7 @@ fi #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading NGINX web server configuration..." --time --weight=1 +ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=3 # Create a dedicated nginx config ynh_add_nginx_config @@ -88,7 +88,7 @@ ynh_add_nginx_config #================================================= # CREATE DEDICATED USER #================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." --time --weight=1 +ynh_script_progression --message="Making sure dedicated system user exists..." --weight=2 # Create a dedicated user (if not existing) ynh_system_user_create --username=$app @@ -96,7 +96,7 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading PHP-FPM configuration..." --time --weight=1 +ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=1 # Create a dedicated PHP-FPM config ynh_add_fpm_config --package="$extra_php_dependencies" @@ -124,12 +124,12 @@ ynh_store_file_checksum --file="$final_path/config/config.ini" # Set permissions on app files chown -R $app: $final_path -chmod -R 777 $final_path/data +chmod -R 755 $final_path/data #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server..." --time --weight=1 +ynh_script_progression --message="Reloading NGINX web server..." --weight=10 ynh_systemd_action --service_name=nginx --action=reload @@ -137,4 +137,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Upgrade of $app completed" --time --last +ynh_script_progression --message="Upgrade of $app completed" --last From 95bea7c4a0ef1fff2bfdcd2424de4531fb3460f8 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 9 Jan 2021 15:46:59 +0100 Subject: [PATCH 03/11] Fix --- manifest.json | 8 ++++++-- scripts/change_url | 4 ++-- scripts/remove | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/manifest.json b/manifest.json index e0db8d7..6e03eda 100644 --- a/manifest.json +++ b/manifest.json @@ -3,8 +3,8 @@ "id": "halcyon", "packaging_format": 1, "description": { - "en": "Webclient for Mastodon and Pleroma which looks like Twitter.", - "fr": "Client web pour Mastodon et Pleroma ressemblent à Twitter." + "en": "Webclient for Mastodon and Pleroma.", + "fr": "Client web pour Mastodon et Pleroma." }, "version": "2.4.9~ynh1", "url": "https://notabug.org/halcyon-suite/halcyon", @@ -39,6 +39,10 @@ "en": "Is it a public application?", "fr": "Est-ce une application publique ?" }, + "help": { + "en": "If enabled, Halcyon will be accessible by people who do not have an account. This can be changed later via the webadmin.", + "fr": "Si cette case est cochée, Halcyon sera accessible aux personnes n’ayant pas de compte. Vous pourrez changer ceci plus tard via la webadmin." + }, "default": true }, { diff --git a/scripts/change_url b/scripts/change_url index 179858e..161b84f 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -86,7 +86,7 @@ ynh_replace_string "$old_domain" "$new_domain" "$final_path/config/config.ini" # Set permissions to app files chown -R $app: $final_path -chmod -R 777 $final_path/data +chmod -R 755 $final_path/data ### Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script. ### And create a backup of this file if the checksum is different. So the file will be backed up if the admin had modified it. @@ -99,7 +99,7 @@ ynh_store_file_checksum "$final_path/config/config.ini" #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." --weight=1 +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/remove b/scripts/remove index ce8d1e4..aa88ffd 100755 --- a/scripts/remove +++ b/scripts/remove @@ -32,7 +32,7 @@ ynh_secure_remove --file="$final_path" #================================================= # REMOVE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Removing NGINX web server configuration..." --time --weight=1 +ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1 # Remove the dedicated nginx config ynh_remove_nginx_config From ea06ea27ee68d37b805bd57c6d987bbef7ca36e0 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 9 Jan 2021 15:48:53 +0100 Subject: [PATCH 04/11] Fix --- scripts/backup | 4 ---- scripts/install | 4 ---- scripts/restore | 14 +++++--------- 3 files changed, 5 insertions(+), 17 deletions(-) diff --git a/scripts/backup b/scripts/backup index 0e8f238..0853e2c 100755 --- a/scripts/backup +++ b/scripts/backup @@ -14,10 +14,6 @@ source /usr/share/yunohost/helpers # MANAGE SCRIPT FAILURE #================================================= -ynh_clean_setup () { - ### Remove this function if there's nothing to clean before calling the remove script. - true -} # Exit if an error occurs during the execution of the script ynh_abort_if_errors diff --git a/scripts/install b/scripts/install index 2a6daae..dca63f3 100755 --- a/scripts/install +++ b/scripts/install @@ -13,10 +13,6 @@ source /usr/share/yunohost/helpers # MANAGE SCRIPT FAILURE #================================================= -ynh_clean_setup () { - ### Remove this function if there's nothing to clean before calling the remove script. - true -} # Exit if an error occurs during the execution of the script ynh_abort_if_errors diff --git a/scripts/restore b/scripts/restore index c77967b..01bccc1 100755 --- a/scripts/restore +++ b/scripts/restore @@ -14,17 +14,13 @@ source /usr/share/yunohost/helpers # MANAGE SCRIPT FAILURE #================================================= -ynh_clean_setup () { - #### Remove this function if there's nothing to clean before calling the remove script. - true -} # Exit if an error occurs during the execution of the script ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading settings..." --time --weight=1 +ynh_script_progression --message="Loading settings..." --weight=1 app=$YNH_APP_INSTANCE_NAME @@ -36,7 +32,7 @@ phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK IF THE APP CAN BE RESTORED #================================================= -ynh_script_progression --message="Validating restoration parameters..." --time --weight=1 +ynh_script_progression --message="Validating restoration parameters..." --weight=1 ynh_webpath_available --domain=$domain --path_url=$path_url \ || ynh_die --message="Path not available: ${domain}${path_url}" @@ -54,14 +50,14 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # RESTORE THE APP MAIN DIR #================================================= -ynh_script_progression --message="Restoring the app main directory..." --time --weight=1 +ynh_script_progression --message="Restoring the app main directory..." --weight=2 ynh_restore_file --origin_path="$final_path" #================================================= # RECREATE THE DEDICATED USER #================================================= -ynh_script_progression --message="Recreating the dedicated system user..." --time --weight=1 +ynh_script_progression --message="Recreating the dedicated system user..." --weight=3 # Create the dedicated user (if not existing) ynh_system_user_create --username=$app @@ -88,7 +84,7 @@ ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # RELOAD NGINX AND PHP-FPM #================================================= -ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." --time --weight=1 +ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." --weight=1 ynh_systemd_action --service_name=php${phpversion}-fpm --action=reload ynh_systemd_action --service_name=nginx --action=reload From eb87954e96c4658e129a11ba649f5385c10c9efa Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 9 Jan 2021 16:03:55 +0100 Subject: [PATCH 05/11] Add templates --- issue_template.md | 56 ++++++++++++++++++++++++++++++++++++++++ pull_request_template.md | 18 +++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 issue_template.md create mode 100644 pull_request_template.md diff --git a/issue_template.md b/issue_template.md new file mode 100644 index 0000000..06fcb78 --- /dev/null +++ b/issue_template.md @@ -0,0 +1,56 @@ + +--- +name: Bug report +about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently. + +--- + +**How to post a meaningful bug report** +1. *Read this whole template first.* +2. *Determine if you are on the right place:* + - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!* + - *Otherwise, the issue may be due to Halcyon itself. Refer to its documentation or repository for help.* + - *When in doubt, post here and we will figure it out together.* +3. *Delete the italic comments as you write over them below, and remove this guide.* +--- + +### Describe the bug + +*A clear and concise description of what the bug is.* + +### Context + +- Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...* +- YunoHost version: x.x.x +- I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...* +- Are you in a special context or did you perform some particular tweaking on your YunoHost instance?: *no / yes* + - If yes, please explain: +- Using, or trying to install package version/branch: +- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`* + +### Steps to reproduce + +- *If you performed a command from the CLI, the command itself is enough. For example:* + ```sh + sudo yunohost app install Halcyon + ``` +- *If you used the webadmin, please perform the equivalent command from the CLI first.* +- *If the error occurs in your browser, explain what you did:* + 1. *Go to '...'* + 2. *Click on '...'* + 3. *Scroll down to '...'* + 4. *See error* + +### Expected behavior + +*A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.* + +### Logs + +*When an operation fails, YunoHost provides a simple way to share the logs.* +- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.* +- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.* + +*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)* + +*If applicable and useful, add screenshots to help explain your problem.* diff --git a/pull_request_template.md b/pull_request_template.md new file mode 100644 index 0000000..5e9f65e --- /dev/null +++ b/pull_request_template.md @@ -0,0 +1,18 @@ +## Problem +- *Description of why you made this PR* + +## Solution +- *And how do you fix that problem* + +## PR Status +- [ ] Code finished. +- [ ] Tested with Package_check. +- [ ] Fix or enhancement tested. +- [ ] Upgrade from last version tested. +- [ ] Can be reviewed and tested. + +## Package_check results +--- +*If you have access to [App Continuous Integration for packagers](https://yunohost.org/#/packaging_apps_ci) you can provide a link to the package_check results like below, replacing '-NUM-' in this link by the PR number and USERNAME by your username on the ci-apps-dev. Or you provide a screenshot or a pastebin of the results* + +[![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/halcyon_ynh%20PR-NUM-%20(USERNAME)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/halcyon_ynh%20PR-NUM-%20(USERNAME)/) From 08fb653ce36ea40783c0e1de36f390b364fc57ea Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 9 Jan 2021 16:06:27 +0100 Subject: [PATCH 06/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 24a561b..025b259 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Halcyon is a webclient for Mastodon and Pleroma which looks like Twitter. ## Limitations -* Halcyon requires a dedicated domain like halcyon.domain.tld +* Halcyon requires a dedicated domain like `halcyon.domain.tld`. #### Supported architectures From 8f1cf670349637c02d3a705b90bcf1ac7c8e0950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sat, 26 Jun 2021 19:36:07 +0200 Subject: [PATCH 07/11] Patch (#14) * Fix --- .../ISSUE_TEMPLATE.md | 5 +- .github/PULL_REQUEST_TEMPLATE.md | 16 +++++ README.md | 40 ++++++----- README_fr.md | 42 +++++------- check_process | 13 ++-- conf/config.ini.sample | 33 +++++++++ doc/.DS_Store | Bin 0 -> 6148 bytes doc/screenshots/preview0.png | Bin 0 -> 522246 bytes manifest.json | 15 ++-- pull_request_template.md | 18 ----- scripts/change_url | 23 ++++++- scripts/install | 50 +++++--------- scripts/restore | 26 +++---- scripts/upgrade | 64 ++++++------------ 14 files changed, 166 insertions(+), 179 deletions(-) rename issue_template.md => .github/ISSUE_TEMPLATE.md (96%) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 conf/config.ini.sample create mode 100644 doc/.DS_Store create mode 100644 doc/screenshots/preview0.png delete mode 100644 pull_request_template.md diff --git a/issue_template.md b/.github/ISSUE_TEMPLATE.md similarity index 96% rename from issue_template.md rename to .github/ISSUE_TEMPLATE.md index 06fcb78..2729a6b 100644 --- a/issue_template.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,4 +1,3 @@ - --- name: Bug report about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently. @@ -9,7 +8,7 @@ about: When creating a bug report, please use the following template to provide 1. *Read this whole template first.* 2. *Determine if you are on the right place:* - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!* - - *Otherwise, the issue may be due to Halcyon itself. Refer to its documentation or repository for help.* + - *Otherwise, the issue may be due to the app itself. Refer to its documentation or repository for help.* - *When in doubt, post here and we will figure it out together.* 3. *Delete the italic comments as you write over them below, and remove this guide.* --- @@ -32,7 +31,7 @@ about: When creating a bug report, please use the following template to provide - *If you performed a command from the CLI, the command itself is enough. For example:* ```sh - sudo yunohost app install Halcyon + sudo yunohost app install the_app ``` - *If you used the webadmin, please perform the equivalent command from the CLI first.* - *If the error occurs in your browser, explain what you did:* diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ef70e18 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,16 @@ +## Problem + +- *Description of why you made this PR* + +## Solution + +- *And how do you fix that problem* + +## PR Status + +- [ ] Code finished and ready to be reviewed/tested +- [ ] The fix/enhancement were manually tested (if applicable) + +## Automatic tests + +Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ *after creating the PR*, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization) diff --git a/README.md b/README.md index 025b259..479c641 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ + + # Halcyon for YunoHost [![Integration level](https://dash.yunohost.org/integration/halcyon.svg)](https://dash.yunohost.org/appci/app/halcyon) ![](https://ci-apps.yunohost.org/ci/badges/halcyon.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/halcyon.maintain.svg) @@ -5,36 +10,27 @@ *[Lire ce readme en français.](./README_fr.md)* -> *This package allows you to install Halcyon quickly and simply on a YunoHost server. +> *This package allows you to install Halcyon quickly and simply on a YunoHost server. If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Overview -Halcyon is a webclient for Mastodon and Pleroma which looks like Twitter. -**Shipped version:** 2.4.9 +Webclient for Mastodon and Pleroma. + +**Shipped version:** 2.4.9~ynh1 + + ## Screenshots -![](https://halcyon.cybre.space/login/assets/images/preview0.png) +![](./doc/screenshots/preview0.png) -## Limitations +## Documentation and resources -* Halcyon requires a dedicated domain like `halcyon.domain.tld`. - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/halcyon%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/halcyon/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/halcyon%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/halcyon/) - -## Links - - * Report a bug: https://github.com/YunoHost-Apps/halcyon_ynh/issues - * App website: https://notabug.org/halcyon-suite/halcyon - * Upstream app repository: https://notabug.org/halcyon-suite/halcyon - * Other Halcyon instances: https://www.halcyon.social/instances.php - * YunoHost website: https://yunohost.org/ - ---- +* Official app website: https://notabug.org/halcyon-suite/halcyon +* Upstream app code repository: https://notabug.org/halcyon-suite/halcyon +* YunoHost documentation for this app: https://yunohost.org/app_halcyon +* Report a bug: https://github.com/YunoHost-Apps/halcyon_ynh/issues ## Developer info @@ -46,3 +42,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/halcyon_ynh/tree/test or sudo yunohost app upgrade halcyon -u https://github.com/YunoHost-Apps/halcyon_ynh/tree/testing --debug ``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md index c5eb759..e577a8d 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,40 +1,32 @@ # Halcyon pour YunoHost [![Niveau d'intégration](https://dash.yunohost.org/integration/halcyon.svg)](https://dash.yunohost.org/appci/app/halcyon) ![](https://ci-apps.yunohost.org/ci/badges/halcyon.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/halcyon.maintain.svg) -[![Install Halcyon with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=halcyon) +[![Installer Halcyon avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=halcyon) -*[Read this readme in english.](./README.md)* - -> *Ce package vous permet d'installer Halcyon rapidement et simplement sur un serveur YunoHost. -Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install) pour apprendre comment l'installer.* +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* +> *Ce package vous permet d'installer Halcyon rapidement et simplement sur un serveur YunoHost. +Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* ## Vue d'ensemble -Halcyon est un client Web pour Mastodon et Pleroma qui ressemble à Twitter. -**Version incluse :** 2.4.9 +Client web pour Mastodon et Pleroma. + +**Version incluse :** 2.4.9~ynh1 + + ## Captures d'écran -![](https://halcyon.cybre.space/login/assets/images/preview0.png) +![](./doc/screenshots/preview0.png) -## Limitations +## Documentations et ressources -* Halcyon nécessite un domaine dédié comme `halcyon.domain.tld`. - -#### Architectures supportées - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/halcyon%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/halcyon/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/halcyon%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/halcyon/) - -## Liens - - * Signaler un bug : https://github.com/YunoHost-Apps/halcyon_ynh/issues - * Site de l'application : https://notabug.org/halcyon-suite/halcyon - * Dépôt de l'application principale : https://notabug.org/halcyon-suite/halcyon - * Autres instances Halcyon : https://www.halcyon.social/instances.php - * Site web YunoHost : https://yunohost.org/ ---- +* Site officiel de l'app : https://notabug.org/halcyon-suite/halcyon +* Dépôt de code officiel de l'app : https://notabug.org/halcyon-suite/halcyon +* Documentation YunoHost pour cette app : https://yunohost.org/app_halcyon +* Signaler un bug : https://github.com/YunoHost-Apps/halcyon_ynh/issues ## Informations pour les développeurs @@ -46,3 +38,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/halcyon_ynh/tree/test ou sudo yunohost app upgrade halcyon -u https://github.com/YunoHost-Apps/halcyon_ynh/tree/testing --debug ``` + +**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/check_process b/check_process index fab8d82..5d16523 100644 --- a/check_process +++ b/check_process @@ -1,16 +1,12 @@ -# See here for more information -# https://github.com/YunoHost/package_check#syntax-check_process-file - -# Move this file from check_process.default to check_process when you have filled it. - ;; Test complet ; Manifest - domain="domain.tld" (DOMAIN) - is_public=1 (PUBLIC|public=1|private=0) + domain="domain.tld" + path="/path" + is_public=1 language="en_US" ; Checks pkg_linter=1 - setup_sub_dir=1 + setup_sub_dir=0 setup_root=1 setup_nourl=0 setup_private=1 @@ -18,7 +14,6 @@ upgrade=1 backup_restore=1 multi_instance=1 - port_already_use=0 change_url=0 ;;; Options Email=anmol@datamol.org diff --git a/conf/config.ini.sample b/conf/config.ini.sample new file mode 100644 index 0000000..0bbe1b2 --- /dev/null +++ b/conf/config.ini.sample @@ -0,0 +1,33 @@ +; Register App Settings +; The URL Unshortener automatically parses links to URL Shorteners like bit.ly and displays the long version so that the user knows where a link goes +[App] +api_client_name = YunoHost Halcyon +api_client_website = https://__DOMAIN__/ +who_to_follow_provider = https://vinayaka.tsia.de/cgi-bin/vinayaka-user-match-osa-api.cgi?{{host}}+{{user}} +default_language = __LANGUAGE__ +debug_mode = false +url_unshortener = true + +; Media embed settings +; YouPlay resolves YouTube MP4s on your server and sends this link to the user for privacy-friendly watching +; Vimeo embeds work in the same way as YouPlay embeds here because the official players contain too much spyware +; YouPlay Fallback uses a proprietary API of https://unblockvideos.com and can be used if your own server IP has been blocked by Google +; Invidous is a external service to watch YouTube videos in a privacy-friendly way - Halcyon can automatically rewrite links to a instance you can set here +; Nitter is a external service to view Twitter contents in a privacy-friendly way - Halcyon can automatically rewrite links to a instance you can set here +; Bibliogram is a external service to view Instagram contents in a privacy-friendly way - Halcyon can automatically rewrite links to a instance you can set here +[Media] +youplay = true +vimeo = true +youplay_fallback = true +invidious = invidious.snopyta.org +nitter = nitter.13ad.de +bibliogram = bibliogram.ggc-project.de + +; The proxy can be used optionally to resolve data for privacy-friendly media embeds on the server side - It is not used for Mastodon API requests on login +; Proxy type can be set to none, socks5, socks4, http or https +[Proxy] +type = none +domain = +port = +username = +password = diff --git a/doc/.DS_Store b/doc/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c90376b56b73b627c519d1a34c5d8c9abb7004dc GIT binary patch literal 6148 zcmeHKyG{c^3>-s>NNG}1?l15Mt0;UyegFv&DbPhqfch%Fi%(bFB<-Yt6!=#P*lfL7ulP#UTPH8)y|&RG>0a|qcjG!J4AG8> j(T=(Cc6=8_S=W5c^IkY62A%n!6ZJFTy2zx!wH5dQ#>Eyj literal 0 HcmV?d00001 diff --git a/doc/screenshots/preview0.png b/doc/screenshots/preview0.png new file mode 100644 index 0000000000000000000000000000000000000000..06e9a6b8eb2bc099b342fc22b562844305d8cc47 GIT binary patch literal 522246 zcmaI7by(az(=fV7VX?AEad(Ql`<9}`-DPoicPK8!y%Z~@xVu|%cPQ@ee)fKz*UtIg z@BFdXm1JgTCX?4}^t|OeTAaLkC(cRW)5S z<>mNI>}{EiOzn*!%pSH5P&fb}DB|H@WMU0*Av1=UTiOXxoV9dNkXf1vQD|_UPfmF@2~aSpI>quraf;{7-ZjOSAtA`ah8W1N|QwpEUnVdJ{_r zBW5dy|DCjvD^yGWG0p#75GcmKh53gpzoMlF#6}ZrX$!G)hE7n3f|r~1U!wjuRO^30 zxmY>>1^q`(era1HbBG+o&fLX9h~oc*Xjq#51NcvZ|N4tE#M$1)^&eHL*;zuB$oAjV zH2)hWM8U((@;^XY|10R5KOpjH4iCzk)RCurxtED~Y|HA5$; zy-9uE>Hz@YDJ>-=6hA}kAWoJhWXhk#$rPRJ%`9yo003`HnVOyjks7veW>XD4)tHJ6 zXQ<0h5j1MFOm)t@`ey&tRc^Z!Y3?P8LDSpQv9!f(M>98T+1$wQ_r^202|;i6?>;I1 zs$Ym)NR40dmHZ+{qT+RO1COZSH14lJ2nWyb%$ zc1}c{`i)e;Me|fYgt-yR%MjqDI$D=lI0bL0V!Ir|b<)oRx>`?lf2^PT^Hz1E`m+?K zmz&(LaMQ}Qw*oGlmTUO}&`b*UI}SI0!V|dW+b7%H^U>Y9FNibe^NTx>W3cSarA*<} zD+7uF27`tEjzWbI#BCC61~qT@b;a;IjFu{T>V3@q_E`T*;-ZAn4*`T^y( zqfJhj7w>x?e${l0oVf6LajbV$kW3eoermG-bUL7?n4%F(TZ|$;F}FCe{I~ zqCQjRSn8r7^RQd1k^b55?Nh;LqF7qQexKCi_6sjcBXn)y1Xfb51Bs)q6X6$Qe9_a% zyod1c5z__1Bs5P_2#b!@<`BEuZ@&KJWec9j8U=Fp2sdN-D{vnMNR@iJg~|w%9|Ct3 z>G(DTjVx02@3&Ik2IJ)M$}GUNZ%n(J1RM4xT)t_tq_*E3_AB$W9!+R z`FWWiBc{5)L8C8xOlLPa00cmin=2cslMH!}Qxe_)S?e!PC z6~04=W%KVf0tc7mFRY2E-;|U!)mBaXM%_6#7d>cl;Q87qg-J+bNY5S3XYbvTVz$y= z?2B7J=iZ)CO6lAx4g5UFX=O<85dE_GL3&4Af)GDNZ8|A^Fq!yJx%d+U<=^#+XQ__z zN^g$(2jxM}IKc4>@pyZM_^AWdU+lHgm%GpvP)>3~2ZF<+U)e!zkN^eF6J}@G=~`ch zmx_nq%Y>c5fb;Js>VO^GJm4clEGaY|y+LPZr0tN&KNXMwUipOxU3u-`X zJHZoH*s~^1QgtARDH`BpI%NH>sW2T zYU2a8m*QmjF1!Tp342MDlof$m4o&*CxYuaZ<#jAV?6Jbu55P74_{{^|p0EMT;qf4r z`xe1$%f|*T*9jcBQTvmies>X3U3d&w(3pZk6mA%Ru^CUZnsEG6$jqw<4Ga(fE6N(~ zMqFVDb}>u$zo>Y%{k$i((WH=ViIh^mt*;>7dmEm8LLxQv_Y*?@f<}X(x`)YymWIIx zJOPw+eE4>u*42wr3CulWMthXa#*T;u+8(kcm5t@RnzpW9z=cN^oB>`MAGfEv@jV$_ z7k+_3PUf^AA0nN)iqxQ#Ek`iGB2T!pufy#?2S+-v7d1e1MLn*uGT6956nI5=EV8 zAB~%1^DSaxv@RSpLtO4`XGf)b4-9%#L3xcG|4 z2|)RSoV62K5e@}G9JFGq&nzC|AbF5VZ?3;~Kg9Qmj@K*>gBmGmHT!EC1{<48UYRzz z*q54Sihh5yqN(O5!cpL$Py%W5lx#&{455cDI>p#QqMkvc?Fi+B1Y%G{2Rj6?^}&cH zdc6q1ZU|z80jC9Yo{}(YDk^7)#Sb&{uzbe6sAnn>U>VB(w03n(GvTS|af-!;(%HM_ zt+Jap<{|~8SnM3A!J#!l#X=JOn;B}4GcU$A$6vg+*LxXOfaF8+K4*D`jSq7h(RppD z$;zj-2^$3w0OUoL5Si%(ju2?NmLQu+>Q*;U21}|(S9wJcznMpJuue+Vc&2Lsa@q)w z&?qt>aa2I#VI}(IZ{pp8Cv_9J@h<#9tQLYTZ3himWK(tcOvDM}ri0`yhE8seL1h$~ zhym1Gs6AV>1ZOYLFg6yF!O^Jju!)7F@bF!7fJQ(z2P?pho2MTwZ_&>IA;b`9^DygQ z_dv_S()G|*vPV+VkP&!QD~J&wN@eDgh!Y2cncW>v=K|mHK{Hl4JOCD8Jdn2@sXHH7 znEZMqi=s1bBRW{4EN4%`1~mL)rbt0f#aJz|FPJSbqaP*#3o6dI?yd!*m5-m#3IUy0 z+Rk*t@$Ss!i=)pj_m|f=_N(N>F~Hf_&JvF z^g4ya@5s!U`c3cjH6#OpAY#JU+vA^cYMxi>Pg5kzaotX6wdj2$i9<8`d>bOyZJQ_V zG6NFFStuCJIMg6Nk4Bifcw!_&4p6`c79L6p5c@Y%F))A(6EGM8?1ts0gXe(z!>v!% zIriGkLH-VO_=L`FqUd4QQR_~TjTpMe*cYr->$suQKVTxDf8SE!XZzFtugLSE`PBg< z1)%#SPVi#KyWMwVceLZ7$>3aBJ*&D+@Us8%4`9~H_kIQ_RpsZvnkwIsH`^vDE>$#P zHuKnx+o4bQ!T%7efq{J8s(ozQ(t;7Y;{w&k6I~oF0FOwwgFx7ya;5#3^$%ZKitd7w zeuqK~DNC&&sDlUvfoC2BP>55=z!Sfr9m(*8&o=}M{0#>0IFQK!3DHKTL$L3(e?F5@ z1pPLrq;UStyu0@afQMfp{OaOt%6_%sKJ03(q_s3XRmN>zlvJsAawR&Ms_AFty`jhR zkp&KDn zqm`-g^UU>{26|QJMMQ~pMdLAIoDdfuHwQ=4QSVo~Wv{L<=IzJ+12b5hjQiX(-@gZX zEEe+9J0F7|2FuQ#B1qdLB6%hgymo8N-}1)aUNpWc!~n_l*V^9Z{Vs~<-=nq9%4HW9 zhD#D`UY>Pr!ywEGuaTTr1$zug-!I2?nm0slpFcG%Z>{mld|6Y~X-^V2elmKF1C6YN z0*xL zaP5{-9u{211M`EHUNs7>i&5}P`9I7#6!=wpHa5Km9TgYHEwOZbYkAcMR22vx3xfxT z(lJC~!pfIa?^l-*+_Ei@L=%VtH-e`(JQ8zW=W$oAtR8sUJyC(*3b*Gahuns=;&wgx zHTI$U<)KSA+=Wm2#dGNY>TZypmgTiyRqX8@87ES6b&0}~hKNiUc&1ek>b{d0R$|xp z4Ih_fABU4M=a1@(u=l)k?V*)aM}IHaeib^9<0VP>Iu;zK>%UW&$gv}TG>2M70toO> z{hUC~8VeaObGl$V`xFu$+;;rlLmf@=U$>{IWdscY zvG`$7{+@D;YJ*Jm8U#=gMuhO#DrmEo8P4s6BgTbc61|Za;Sn4#qB=hW;E195Ux@iA zh}aCj4fnGSV+PG-;3r{ctCXOU6`~Tz*Cs)T^(CGw^A93(EG%i#+Km-~Ea_HU4 zT_-w;e+H_q_iSJ8Ywzb|YQ=%cl0hYPp@~n!+Jjm@{A15h5D=RdOypsIkHTXmc6Dtn z2I|}9;a3>il90D@9y8KZtD=N30)jdjE| zWC6dUVAP{OqURDk1i#&;hLsd|xUVj$eGXI5Qr1eDZ6m@u+-G?`Wf)Zl0CGEytSL=Y zR${$jtHjffekiOE7U!S3=IXT=w7nt58TdZ*@#y>C&o8L~()9YoF!OI_^JE6yIW+~KDH&%@9miC7- zGUPq3rpzw?_OrYcQa6fOav=CRc)#4+z}dg}k$uhH%^f3cBYZ;}s6f#iYc zLgFz)dS^AB2JbY1j`wi_6Ogf8JUYl0NBDL+tRP3evSI2i}h&XGDwOwuCC3GnU!hrWa4J0j$bZkuwSw=4WkIa&;a?qkk`zlY4~pW(m;hI7@;lF^#fV09_Up`B$4YcE%k4*cPr zPV?L@)K9QI#V?N=MLiQXHPbc`_^Q(qd&mm1>_arL6>569j%KF_*Ss?(8U$ekKF4?A zSjg5>$v*$BYkS+(Yjf96YO$2K{noKCPzMCCGPPfuSm(YZqvSppGQFLBo&x}Y@PQV< za7`cplp*ZC)#+Wo8@Nv_thwgqvZivMq9U*YpfomCJM(cI7x8=1IhrfybG)4C>gmzv zzd5yL88@F^_dTDS4bB}a$fjc0kSpU>D+ehRs-yLs=eE1PT_j8n*Xvb!o-CaSUE*Qv zC?BM2->lB-PilM=s(p!2{dluQ`k=_a!`!2&U-_a)V^6>FR z>;uVvB|n;s3zH(0DVM0;ykzZRNK9O2`hf_~THMZFx)R6Dlus3WpYs(?z3lGVgO9$d z8~Bg*-3eWL{5+_?YcHL(>fiOIof?=zrN%kAVmTAy;`Vy(9TZgy~*%jW;$E+K0iM%NnkqSJ|-33)jA9sC2aRxm+12us@jfC)n97$TWu+C-7LLZ zQ%GRuu?qK)R6&8Av1ZE0hqShVFbdg<7OznbI4OZrZi^gOTMB25J7J{~#Geu#UT=%_ zS6bYAeyNorB6PfT_LRtRqiWxY+#*vn#{ylhckI`^t$YrD+2Y>b-3mUAykD+oS!zC5 zMt_c1DquRgAH3%|^XH8Wid(%6?D-mZBH)%4F6{YKrXX13?Blh2X{+P6EyUBRf-9;Z zfgVQ&zBZ`96=L?WB5J@1z-R6DcjfcD6@LV)J#VqSmS(P1?Q+5ZZRPef9gB53?k`bN zZCX4WMzvA;uEvEr-0z01=PH`6rx^V2_t6(RnaA!k5)uYTyho~MnHp9uXE+qNt!{>y zTaMeG+PxpBQ|*`QPbLRQ>J6g9x9G~ zhrZvRe?1-ifbxBGv9EovEn-C^snR^d_P%>nx(402br?rd(; z(fPWM*EEAk+1u?z$q~=q>v>P%Uj!sxy`J`;;gwElRDSNQQi$t*Rng89*kw)2YL0jgU?@7OFDa%T0*G)BC zn^1jx09iax&Bu%>@`v}S|NYpq2=9c>^K)u@>(S0jhr`~$bdI-;N2@BGq*AT-ncr|V zX0QiDAQq!)?k7WKhufJuVa(jC#ODsLv%53zZ6sKAMuwXu##S6Uv6u5I+SkWn1OMBd z)U)=puE5vVJ^iJZJ^!b;KJi_Z2LA=eV?+{9r~8?-+Oi7Yz1M7(HkaALWney9=@a_< z-1vaydb@+6z4nW?vkDRdkL?5Vx978tTF09S;)eD(jJ@~i$(o&<{KA&eVq^d^3R8=R zS5r>}RyQ2Q-;FBuR~O4`Z^`!Sr1;KG*V|*bZg0ogxx8HLY|;n)rg zKC~#zj;-{IYo7-@;W4JmNT1KUdcOL3toz=0y$lW1r#^ZacpU6Fc{Vr9s4%C-kq8~m zYd5ss?cy4&xL%F&7lDjRXfVdc z5Q*^lJkL~ZJ@~NYve+#;b@inh++NoRti8RWCwWDo+xt8C_&jg9`*F^z2%i7(qu+^J z^BcHoam&FI@VuyJc=SSyB^I)B#zfhbPsHf9`3?qOE8q62hAsj_BGR3h6E*57rn$pB z?SN^fuAivfdGoG)SX}9T^Bl!Q4E4Wm8GY|?Ux!<(OI*S@{rdZ-kcbRoVj>3#w?R`}tNGty%yT?u&WDy55# zC-JI4N^qY^oM_=)jt-l6l+K1PWQ3O;n-KF|H z4*1>Fh;XqkXjG_2K3pprbh)Y+;gypT>@(ps{MM^+a}Y(|1x)i{*EXQi)+~?V z!EDsu>D`(8UoYoA4t{kPeCxjRJ70K|FRf@goH}sYk-b|fO?vcy-RgJ?etVhMn>XVI zh*#23z)xvggG#?XB0N2oCaeFcmu-9KdR^PV8nBMBT5=YZGKsdaZc9drKzMo*O>3(l zd8z4my2NU6TYc(84a+8EA7U zI_Nb_SrzEotJzyxe6L7j(eu5ir|dB?`aT_N(iCeeJFLXWdQ`}w*)WH9dPM&lpN?-T z1I0*#-KUqMMIRf0ii{ruB1?|gPtP9b79ZtkL_$U)PZ z0~cXh%@CuXaLCbPEq2VQ&Wt?59%Asz^?H}%>y1y{C=DMA-AHj*5zD z4c6Lp=pjKMvHec;mq85XPy9f7Wbtn!OPnr1K)H)IqL*^c-jncPgJH%|R+!mtoX_9S zIg1y^xo^SPWmdW z-=rFCqwBVzc}L}QJarrP6A-!7*sY6N(q*cY4~#JAB1$RuM@xN;kH{FV!vg(NmP;7u>%ULhD zUevy=R)73Z@PwE!axe?{G7AG#x9&bY$p6R&{67IYdu~nvw>*mb!TX=K#QBO z=zM-&mug_VJO`~e?V3-Uac@a{j??$NFGHgm>=5W9A6De*s_jlD1_!tMaBWxo_f3b< z?OJaSeYk5-IaaiW5JW*uHjhyTEqeik zl4LX6uUB35X`qwv`8oCcYWF7fI-a<|%6;8GDW;+IyWbugDk)K}I@`YgdGLhs|89}tuxa$5sb}yJ!kdI$jh+}$v{SI2?LyPd(`x=p_tp}H1*_iK1gxk%2 z+W+hrcg&J06ZSD4v2Y$hwDY?^Fn4Qjqy+}W`R=Fqeho9Xx{*JcC%fvywey0!bvZRD z+15rb%JrZZVi)S3ZV%#pbX*=iYko_h%~`IA!?$bSAm|;N8acQ*jn!jW_dSCnQv|T~ z6JDXAKo4x5BW3Gvu&+jjWL8SQ#@gw1Z2TFnKlZVFgHmXovJh;1IWPnHY|h<@JYABQ zhz~eDVLfmYnl9TD*VOxBs8!8Z~_gOr#o$D zZ5vi54o8n%({+=1kO zb1+GNMGf3d+UrN1Ma5~fVNrht{L~^$1g}PsR%0fo|1pUZB6-;Gw)ZqB(G)yCENv1W z-!04hLL{=Wcv>`?$uvx&$(1y|m+N&{;^k{LUBndbg%*-){srM=Y)hKJbFPhmy6`!uU4af z>oeDHj%B@Ri;7s5>tpB;<}AXe%IgfNC}7EgxRkXz>}=gut?X^Rb{F;y*}Pv|anawG zC0Ll-)Rj~;LPq)BkCrZcdrAWRO8HU@Y9>i^+bs5ct}U(-d?9IYqRYjhgDb6EB9q&2 zJzRjno!<;|jc+%T7kWK0&=l`iMJp@Q=F@q6AVzxmYMOx7`#V$~TC|r*+tRg$#iz2T zFRg-;&xz<29ZrLfCy1XH{<7%KU-iAHg8UZK>0^xOtCY*2Np{mM1uCO_OwpTl$JJ+*X$U=JuUr`b>^ZLyaosCEZLIS> zf@7~a`x+)C?V{J9T-K6u;=v6VNh*ENMZhSn3)|ua7bI0PHL+XQI}gFzuV1YAzjf;| ziE#GYtX3ar_`TAeK0dmy`@X2Tx1LD`jA?;cO+(^|i3QY3cBkn}RJRe!SY?WJOH@G! zfuuXm>9MH8$r-6m3jq-69#aPEBHd9)jdC@qWFToF$J!-1!k*D@_0pS6|9je=fzL^i zJZG536g_mvqs?OemwfZ2$#CaXyiba_NbYkdk7}zz~%h8c_x)1%<^o{mFUsbT=f+!e9Lo`ifF-3D;E0EQ=cz<#dTC zl6Bu^PYg3#*qf$AL5Q#`I|nUJB!Zu4DB+Q7L81sA&O^RdjTgA+aRHdXix^tePH`!m z!6g8ODHHtA4FIS%IYscDBmneRDqIe8xhNCe*6($<>&zTk z3?RHG zb=!HE4~R>R5D&{p-ou)t>;@u-u`VMX2*eAk<5Bm{nI2l!)2oV)AeRzOJ+RyVqsx>n zOLOkaqq}VIarNqjl!VVwnHAdjEPS(puJ5_{38}*Io-kTR2*u0mQksZ#+0|w~VpMP5 zO?Me401pFJlpH7f9e_*>R+I=3j<36{B@M{-MADsqDKmH|lx&NDCGovoq|I4_#-tYx zcfac;24fX+y)m{#+b-m#8P@hzWh_&uV=-${O-2TK4NSpbhk? z$TcIwR6-$kZ^I@9Scxhm97e0bz%C~)Hrmo4FVls8N?MhQ9Rc8?fzT5j9wbKll86US zFzx$8ZQ2H58p;i?@~HUX`*uw6DWN(Lrq&Jy2AJ!)^~j~eT^{u#JRLtiyrz8g#Px^P z>cR!~_4e(FKSXT--LGU~zTs;2>1E)N`JpN1W1`u~iRXS(qQY^b<%`wyxqRuGcUPaf zkt4Vf$QCU6g^c$Yzx-uob>mZ8`96G~sEXZGpo)AvKrV|D6_60VL@6rT!-^*gkJO9< zO9>1F5aEGMEk2|3lRh1uh(fPm`6QeXWex00I#{&mnLk_=8v8|r$olEA-j5mH9(uHb zIvrQXUuI~}mR}2EH!;4z(}mBM5wz~;%`+*@KRY#B=jPs{Vn8nvGV5(uvBBhoPOIf6 zGglJ&5vNCrEgJ;PJr}SUANq_BZ8k2g@A5>zx;&hq`Pun-bJ=B!_N!PO6}<^hrLete z%#|@|k-K%zPuXVa9@IM(1zFRR>7TCn@@alIW+lgCJIu@b3}`=(vvdvT4zZcA;Se!UY7K)Mt`Qt49XvUz!AOXX*kFMJE2YVL%8csyhwm^iHKUxj z-B(er`wx1*)pe(!KdxDa006I1#N>f&56V=HcOw@zD( zmIYKy2UKcaukO$)n3brA4=6R9f7uSTG_&S4iD5&>8S%@W$B|>ML3|!6iLESoQuf`qsVYOhTiJAzI-7Fz5QVl^+~s zb;#j`B28EoEP$1>XIU_f!30TUVMAx$=D*13ui4xD%}(i5J;7uCnAWlzpCo&thj)bn zvt6#0MyAD=weFt++WIC`FM+pi(5||LJ4)1nAdbTtWrJhtFC=!YHGSD|(XL+}o{YUV zis?3bT_Ia2o9u=YZ(UO2JBOz^5i*^^@m75MXV8*nvQP#AAO-8lLBq`kVB-kVW!_>( zb*E4IgvAmRfV<_m*0Xr`jV{4sf~o_v^6&lJLvpekzaC$zc@UTzg~N57x$d4lEJ_o;Wbm5MKDDA#N!7wVv2mar&tTGqle+x^MbCsqul9}M z@TQjBYk;YKG@g4t*IL#u+*|AHUkQ(s7i`y6gD|C$hm~0OE{mHswYFb*5G2nPh|@jJ z6ZB24e~Fz{^Y^|V98&k`>N3`0g0vPf z;sH@B0nuEl0*BocTAR(g#sjCOD|YWN0YK4W3z5e~runiju4u^G0g>vGQK#L4t1Atn zYGb4*7bu#)+fRFC3p0wf1@68uy=TU?{nVNpw7e0yTMLnXm>>!eZst5lURCiDo#VHh9cv@SpVeFJ`3fI}7R+l7D*y4q=NS@jT)6?e zh#cgYq?EW&M>9!WxZc#@8@XK`_1`(yp|An>ov_LaelV{Y<^as@6y5xDPVfNPW6gBx z#t6NQgfwG8O`TRH@9U$@F>v0aOMMJSv@w3?DzlF{L1gWUah`^n!Aqvq!17V)-SBsD zO|T3@K_8LFM7ao?M3WGihMgwMIRndk+W$zv5esavZzX)gv zqoP7uQqr;D_A%sPPpd%3os1tkVCx-Y*!ME1S;I-oCiNugsUhvgnfoQkH!FUA=&IY6 zap}9Sd4ZH$|HBHG@N1Fub{N388j>TZ&P5maQ%F8)+t*ldW8f`tlgj5bYnSGDG;9?C z5F2dUXBFAl!^n}34YI6+Iw8r>4}VJMissB_h$x$6=SQ96nYO%-aAaGmY&Bkk0-Js} zrwI)&j5REXhK+e)usIXSp(P$qFdMPiwd~OVVsC(Bx1G1(3AA0{(p~g;f`U!b*nuDG za*yY0#H{JP%alu=q*-)}7tc66kvDQnU|08pAI`1Qd_cs`7Z9S((do{Wv#V+KOcHA` zk~tR#Q?66!bpIvZrkvPz`qHC$?+CKBf#jfrmxG{nk*K-26l3_bJjt*uCSaM;Kc{as z8OH2`@xb&Ncd=P+1I+002wO4sp|QEJX`tteIn4H9m}f*3aOvDFP!15t-@hh40cR^e z8Uz3>sT{+`JrNnz_f>-&$|r_u;m;%0Iw^9xJr8hY4rcNiW;$Y+yev>m}0wGbD0yGV0${eaJ>ziY#1kSDI zNP_$1`;xO5zHe{FQu7@sW2`!F_?!_noD`jYy%Kgu&&8V`e~4&7AQ-FIbj{;yc7f5z z=5!8Q@KH^}%g-*CGK4oo;QI=70%E+U>vsn3t?W_r1lg-ZS6&m=+S7c~((crSOc@aJZtdPdeXZH3*yf#kEqxUCkuE-j z>8!{x*wNggsY2~42Lzq!q<1V0CbMJj7M-){u22jfp7iEed4u!rnxm6G5b(*SOIA#V z36@^#MF~f>&V6bVD;}`A!W_@N*H9db%#L#Ad1matWe?l`17Ft*c37&K(W7J(9hJ@R z?#ta;;jHX+)-?r;z5n@M@#wX=F%_~i)3rXa)29U(*u%$kZq(^j;Y}@Vgb%RWqPpN4 zUC*!IyjgS`-&=^`WauqiL0lbSv>>3B-3UR-I^@L`@ZU4zgCn%7D$1IBFBo-E=cK)c zG;50q7=dp1D?3L}yk_kH+eq&Hw`QrO2)jbM znkK*B;|hJR!8RFAa?^et7iUC4@sC+tx8OhG&Z%GUsAbf;G$zTJ*0DCXa%KFpknSP0 zmqNtR#`#-|?VC=03J0(KObHGSp$vm5(**)~_m971o^es6n!1C}o1MOXL#wheQ30(V zCY-cV+;p=~Z(In|D}QoW7QUD(1>bS{(4b>IPqx`qgOg_#51YQnKfK?y+j6K!BF+^W zv7G;A#o^eN9pn1AWSLXN))MT16em5O)7|ub7$UZ38MgN0ht@>b`Q7U(i;6%R76%G> zh@2ng)CC(hSQ2bJI)eNT0D@I&t-%Wc(SgCg(Fje%ZNA3-@X_ zrHF~GBqi)nBRt8lWt}{MPj#+h%4W1nSzElpaK6F8!HYI2;RG>~`IA3YKgLK>hHE<} zivy7shPrJJ&EPP&Mn5iUzDIfsCsvQ3!y%(UwuI|_ZyFJsgtxV|Jt$YH*(X`6A*BtOGR`CQu(B`V z8?$^Z`+!ax?jt_Cw#BrJ4CJ25iVBw0;pE{R6_fn%Ml%aF=G0Qvk18rEKfwxlX~R3U zbI|tacdd^%yHn{>h&xsvklN&yYV^RUJ*<%w;ONEJj-~pOW@Zi^0<`rz;sNPGWhHF2 zQZ*B~JjHXt3jGR&FJA~ukcA43t28U-2m1R9l7xhW4qTd{^Z58-xEeV$2%=S|U8i3m zOAnnFe`bk>^^IANx_X{se9EsBhO$m~J)Rw}6bM)5sCIsN(w`!ZdfR!c8?Uw;nL_q- zRE*i98#18oynL~W_K{N)(I=%U%@I>}sG4+{WlOxgy)lfuyq4~Km+PIIT0zD(KCQD> zkeWs15->PFKfemqc04;H<5x06{a%U;b*S+#L6wU6>GFA%k6Z*XLqpO4I-IDSz1hPX znZls(0~c-j4{P0gRbsZX|OL&PRy5fojXbvmUqMyO0`L&FF$VtjgNvXphY?g7v$*`&< zBPoq)0!?w)zzKQK?Oy`bs-&q4?jFS&0Z_Dmr2eP(vf2tVI9j66t%IE$z9E04w}x=xH$}Le|4du4N(Lsc!mweBgh;1aD1dBlagt-kWV;!g4#l{ z+MJN+oxs&v-4M@DK>ioG#K#`8;wCf*_GKGU}E zdTttCsrnI^KLrnio;(?P`=s&**D1Yqt0||t&^Ax8mmnb&)Q=}0Fw)t*5A_hNVWK-; zzAj$X+VtDs59nFP=~h|teB%6=pT@j%qRP<$RPTeuI^<65yp7s7ri=s5ED5(P?WnLWC;MF zI)Y@N$IviRuoJ9EWaL_8-=m}L;EmewYrDxfGsHq92dWO3ECZ#miGo3cz;Ee+OUPdg zb@gE#MOkYAW~wQo;Ak!li(2Z?+Rai{uulxXGtnkCeyF&Z%^(@Mv?UuR2cgL(m$x)5 z##Wo&LYpiCIYJA9-0?75e@Nc@VD*}ValMQ*|B?3K698GRtnFeoObTjzyT;m zNB&fKqlBUn^4J289&E^g-B6zColb((V7##8l8c0@h=hbH?fl5_6jdc`G&Iz6Nb26z z;>N}X7VVc0$f3i`O$+rWaER}r?w8A2y^Mqa8BRzoClWOo*^?!EN=dO|zLvYpiY8Nj z-l}ek_VeMWwt@Xwv#T|wh@i{0RH5?0$;oP^kpy0PLY30`T~wd3fr5SMY({$eq^VQ7 zjb;VK=KXf>Om9Kv<&Ry0!kP2QeA+MBjN6xDHJhGmfpA~HWb^M7t;!$q+}tF6O#U-7 zgUW$^d-uVq>A z@i|ugWAdy-Fd?_i6#t65;oJ81cK;0_x7`XJd{>^tSF?{hYABT|s=I7_a1i6ISzW}Y((VD+l**Mu4yL49_#}INW7Q~^G zW|pWsHLdi!S|7#CMQjbgi7;N{K;K0VrC%;A-~q1h?oz#wDNRhEV)OnX(5{gIvT<{B z3#p8mO+oV;e&FZ+0cb!JHaMoo_Fet0Mi?X6RoG6imso9q%H$gG}*u)`IQ97e4Fu0Own1VP6JLnw+10<1Kd9mDlpld34 zP!T-ZSuszzm6%`rCFV(1 zdbEt_vl@WSxkPiJ(XwvO44qhjpIsPV5(Xwn6m5izGttOU0zjteLfC1G5Wo3-0$gP> zfQbncK3H|^!e8gO)o+VyurNKXQl@U;rrd}^B=cFxvgrA zW=aa@7wP-onygS9 z939Qp55$=f?q(6|PnGOPPKn%%sR;;(CkqipFzXqSSri{}bW>cGrxJrvu3rA2 z1dydqj*qB-k+b=_KLM7sCMM{~posXGeLIz|Dx6tW5KR|(a<2ME?ays%D>)Y*hhAoR zoewcV85*3Jg5}>S+thbDjl~v314@{6@9QGykX^Cw`6-BD1G+qxi30wzq6U-wR4@G; z7DpuPW%^6-lhW~+p(@_l*Ewx0eA9e@?J(1JO}eVK41I_UAGc<;c8SI>4knRnc~GVk z6`NllxHl*vLQzMYoue{un=4pxDn-9N9%>-bGz?Tu#KY85BnkhjGsz*#8rVf%w zAC}O=5FWX0bsNka$Z|&&^Zwr8s(nNY8;n!@98`$R`3S=a2hE0-+|N515Pxx~HL4D?+K3BXU6!R~!~ao+f)}2l>H;duxFNKfe20Jw$7&hN%k-PJw92uv)N_i6WDO z7ArsKSO5|+yr+%j^Y<2ll&B&6S!8{&fWWg7^ zRY=RAl6+ZUTdHi2-ohQY8?UnH!kq}AS4V*dELS--p>Fre`4&xDSxo&=S8jrxu&?(S zs6${HcZ60swndvuvC4ny)%;6%a@cj3hxV?j6f}Sve0EE+W!hYLVeNBEt|vai1|_OR z!yL+g@&aFt*(#9!>{zawlar+mBau(JLSICPE07zEc;-lejegcFx(Mfv?$v-f`LxFN zpeY!D7tZ%3OpG4-7-re+V={hbnoU^X7BBrgo7|2zF?>r&UA=AU@N`U(y;gGFt<|y; z2S-6&u1r(9EGDF@~=s&-I^xx zJgP#lv=Lr&x%DEu%E-zyrBI!v&OcRfPJBDb+;SonhgeHSu)up=UfM=qn>~ z)WH4_Q2CMB^g()hx{M}we}Rw!l2VDPRh=aErw5;$@C>w$4hEBTC*?OOi5Wn(BY?yx1%`E5|Y=XUag7-SUlWbm#}T^Vs?u>Cp?L zF~}2@WtL)P_NIhFjZ0LI&rULPa!By;)6>%EG_2dttc}SPW%{7rBP855zT0>TzDgEu z$c!BW1$!`@4hjATJWjy3cNAC&w#zA(y7O+f%Qr;gim+P9@*_Zk2|OCCEj9!)!{n?~ za|BWPPyj2D0MPjVq3NunntJ^IKhhD>AP5K>A#BvyZf5k0d5|Pj`A-SMl)&Z%VuvgNi~tG3{$Bj$;p1ea^XYcDX~eKX`P6Nb{mLOsDcS(KtFCW^aM_X(WfC=lD3JQ^j$Z=-qx-AZ&tlzL4!Xb z3pgtsh*x<=G|MfuLz>gcZ%wUPqkn(+awdz$_Q@%%xB#P5o?JU+qA)Am(vMqJFVL-g z?1Xks8t4x0!`O5O;2>~ln2Rqm)|f|l)REH;w>Fb%JT{p&ZjF*E^W%DE&a9p54i^sW zHN3pR!0}D#2QK31=0PCnQ^sen_5Ve$-OP`sdOr^%==q4Im0%-zDBsD1Vrsc$@z93B5XHt5Ga7w=2fp)SgMu9#iToZp--o@et&q zYfNIr1YRjS2ge!*cY=zyf{Jq{18VEv&+WNlRA*8W6&T}UK0fBfMEo#H({K>xmiU8L z#!c9oNEuBLL8wTapczZ~n5~r%mk?pV`dF7~5?=w(tYDLt7|(7poll^WtT{eGxcs^; z0#}s21oIxBP#r=|pLnL!YW4UFSu`! zS7w5TG88&<1{1~sCQ4460IO0-DNY#~$_NHA&yYydUR@9c0}*{hx-L-hw5UK+fdUgb zk;0~+3y83C`jh49ssZE1x1v$$XK`#8;M`RC4h4eDKNBpNu_!6aA_Ch?mO{}G$;ml;f+2WgCGa_aMB z$<8Sc2T)P~zFH(w{<*3@x$I(i1uWxB<8tnAaX1JY@ZhamiRa16OWtU8HRah1%3flR zhG=$VT!r*6Vj;vdHmlYe^jV~qk3*&PHE{;*x_57^elA_-vQ2?A1>^O>ytXk?Zb}`C7*OW#(i)%p} zYG_4=sx~02kG>Ki;(rO!&(k0J}~ zNRP?Bn+53RRg&asa{f-`S^PgOzzS#7Cr^M&13CGYeSNtKea|D=BJJwKFwc&{nd6*5vdB2=fS%x|v7^&wN7#n?>gv?H+fK{#erK$=H z8k*`v4_MsWkfGKI(>5MXFLU?yp(t&VJjy^7(F7Ez ztLY*{Qfg?10{VR$R~Qii9IihwNXC`YG+)%8=$L$J5MM#o#d^qv|7{j~m^8 zSrq0M`m}4+E%sX)6|1VyCob*rv^=_0!l&}3!pZp#eP-5cXX_xDXcxdLB#iV|qkY6k z44a*%vD&WJJ*%%8DN2sEK8Eg&Bqaegs1?9qR$hzV?RxI4%#2_Jf|W4#ZS-)ia}ExG z*DUsRSipO=#k_89qC5socg^jHW|B5aC00?&^V%A-H5J3U60Tf(PR>{U1PpnmcDplv zj>>ksUt(217l!0(=S*=_s~8q#7Os;pM93(yW=OCmECZiy5_vFi6Y+XR7 z!o}*48F&K3#D|aqdI&B^N$E9*t^b0bc%CrPBT)JHXTG5K=S34qrULOa97?RCRY;5F z<#;8=>kiwlKyErHsUz#`G#Q+ujSoo)T^pfCHL{g;9$w9z2zs2L1H0)`j}tQ{2Jz{P zfj<4oPnKnsYma>VDgq~c5I$|?^X2*G3Ahf?>5fhzq9(gU&hf)Fwv|*$js-_m&pGw) zJP2jMR2d3f9Q;$Q+h!ZyEo;u6z`{W$QY*;!9|Xt82LRMrK9KzUtA_7xWT6%ES5JV@ zd8|j5(jN+4pzEw>2G4J{C$w*=(!1Xy^cyJjc#!o9=IXP*e!(>-6!0Zmej~#&gmLvi zKMu-3Z|jmG09Vz)LkYm?BA^5)Vr3#X?{z*B0vLu#K|v&lk(rf*HJDqabJv)Z_q+4& zOQa%{G{fx_Z?c{qdsj-^yyWEMY;NI+G@nS|idZi+UZaa(55RO3bfB{Iv)gN~4G@CI zoag8HfqLNQpj?Lc)FMJERiA+Zs>l5u{>}z`ofK3`4KVX8&1B|(LKfytLN9$^u0Jv1 zsN|9RbWlSJi2IH(F>Xrs^$6wXDxw|6x9Kn=Wxv)*z|r2-{(aZHe^Vv?2?-lMm)SpF z}O}xNw;$6>P;S>Hd z+2T0|_w9S@jf(<%V~Y(P?vKNkQS)S9C9cBC+y($YUcP(wmNmn(57&&+hx@$ z|J#Oqwo_O@(663j@9y5dzFdaN1v194^HcA~d_t<}%f4>v1zZ`1H(_V<)pI$iKB1q6 zAg-OkGfRHnl1$L;^Ec*S4PbhUM}EPwuCNw(B3^-(jH@)6u-5x{Qe}}8X3Ci}O=y{i zt%bKhEgt~)$FIX7WXeaM+4-*CkvBcQ~}1h(KQuZ5yOzsbx;$ z>tEiu{cE_n{^QmgqG>$B1?4_Kj4-_OdH04m(%7ufjMtb9|CO-5&64ZmoNbf(*8)aR z!$Z=9n9a;h2(`mJzP$}HgxTAhkRc)XoL}AApW6S-*^+SODM7@%q=o#qjk&!uL|Zos z6^u0(oy`r*?j?1P(AVeUx$T^k{jw010Dhl-7j2M; zD!7_)KR(tTK3Gs2&jfn5o8acZ#qFkEV}P4!e63KQ`VP_8nzrMBER0X%T3h@V3SEqR z?CtLm1&hU&qbO3IVR7n9XNznmPVyUY6ty9q>22lwrDmnJkgM5{GVC&Djl6S z;WQ~to}@5)#54>f!aL%8@_6vYg3r3Orfc&k7n|y9Ur%H~#3oJdl-sY2cHrybH9W~d zl0n3FArmMqj#WrBbfXRUN*=6!boH)~@^GIC;I9+N)Z~Mn@lG?xjL{oneO!`#mU03) zfs+=n(CbB>c4=T96#v*lG%vpZOkW!T`wG8#Ydo;=Z+jWGSDzA-Oce|bN@o@{S|b3Fo)&n}LW`g?MmE~FPIPsma~>N1&cmwNIji?q2% zMrOUEF_6M(wZnR%Y9jOdJ1EuQdg4qV(KPI-6i<>2t-irw7pktCo4|-QenHyL(CP*C zIL89o!4vKiN7YIzOg|Z<3{~13tOLd3wDEmSvqzA%Oty#-+t!hOfQOuuy{e5Y)%B-{ zn$aqa#Fct^si_(hpBOp9VTyR)JG$^m^?bnHZG@5pcJ^U2A{mSoD-zy0~@{*xy3;m2vAQRNM$OY)s3)SmP0 zLth>j^q<_oi5c~h%)U-xTzrUbw#vxYL(Ch|yp%%v8*aAA821{yS8N+6mvfe3JU$up z09M$%Xk{ja5;uo&cd?+4N$kHn0Gio=NIFlYO$+YnHvgCHnL#u=hAtYxXMSg~Uc~uFBi^ip<%)Gk26*LE~Y5 z=V{OM_7n$t-d#p-Me;^kS9?vlOrf!Z7}B~!$fv$waepxC7&e&A!K|<6bX)P z`z+7MLEg!fN;fl};o+7roM6ucw`JFxFvr>*8)Fk!i5DVlIth7+RHub|Qi7F|DgjIO z#`yw?5y{#1Qgd5=Kfx~@yEV7=x8NlyXMencZvOo(Tp*$3pYqNd3;pIrAyP2rq^%MC zQP~6C@(twgPaYn6b8L*Wc5=c}d|5r;?PgD(Zz(Tdqct|OiMAXFx&8}H&hgkFj~m*X zn?s-NJebSz1!FH*PA5l%@_}J>=F8d%8R}-MV~U9ZK;modIVwEkV*w^fuie$coQKZM zF{xblAH^Lv4cuQ}92KM|00b)872sQ*q7*9UxY9!J9hOQfSiN<*N9)^SV`I4OcpA<- z=|R(r@nzcIH3?=XDcBxO9f%sQ42#(q<;mi!RthW;f#1HT`mZ$;eK~(~bK^CzK{m9$ zzV1HXH=3Jdn1>yOcjby7L-}0F(uyixQ`#i)`C6#4a{8p!xn-<#4bCJO$1hbrCGInP zuUVnpO_ZL1tK>y(OQaAP?aP!m(ZKFq^1@iW8a`wD3pzdeE3+{DFmTw;_q)kN80o7? zPdy`XkPwG&Lo3yHi#6pmn5Uxcrxi7(^Q=!?_bCt3Q0oqjsuXSU&66wmu$YjUuw(Vp(H?>+QW zyF#KG8ArgU=ouu=tW>WiB4DCG2u>V84W^4!_j&DEB)`D2ymyMVKDWZ}C4IV}^uM=t#Q?l|yVK05aI zgbM`mP-03#U!n@M{p1KiLQ#3T4EvtIut2OnOlnW+`4nNm_n+|i?!-`pq9k=X645kS zU63b9i$6!*N+(gmY^=dOBD!JZ5OJ7BQbtr}1UYcF!v}fOfxM~liFe6B9JJZxIPmWk zv&Ts20hB9D`I&T__&2 zfFdMpB6{Nfw)kv#BHa%3l$GUrNW#y@btA*mK)dbaW-^!m&T7>8oh25)>cE3PqzE!w$EjK+cPIgq67 zZB1@>QXn0;T!DSDP0QtjQNx6)#YFY=nws(#SLwMa$rLiI`L(Jtlfwawl%zIc)Km@N=6tozyy)F2M&5gNE>%YvEzRC+7^nml zM;-0WrD|corR&4e%vT{r2dRxZEgkC%!PC?1qfU92-z?(X9>O=)i>9&phCgeq<0x#P zNUU$ba&}K2*o!$@3pM#FtL-)*#*3(=d>UJpDV%Z!5tYCDJ1?1X{7rObe*XEcuF5j~ z&gp&RwEhHB#bM9bn1lZlMfH`NWr-sM##sQJde*-Yqn4A}vTZN<%&#Dzr_l1-w;cQ0 z_9j&7{LY+w_{j}6v*iDGbFTS$Y|8?hM~cS|z4CLr-$h*AjP2jwFL&_gg+5GGVH4Kz z@o}tmyxSMqy4^<1k@$@l(_#{e40G?f)*D{97ApBszSDBeaJ?qedf?{vb_AqH)Dpy^{Z#cFqRPFo1BH1w%CQ{i3w7AFrVqQr2u@`rnER|SiHF~u%Uk#h zt~cXsV|Nv>@VUW!(2vRem6uxA$qHt6JqGT*8FIjHx zx2%E?QhZ=etC>I!_CTR-tWlxZAq3X?ykYTm$A(}yej3q;l$sX$Xb|I!Yplww2?seR zyZ^>-gR4caY-$GCBJk-*qE~gOX$><>x?>r$F)q57;&$Hpb^=27^%qBQ9)L2JH!CPN z5o$MMfmB93W<*<(n(QGmH-EXhQ+U5+SZwBLQL!awr%TREC{nK^)K@D6J(XfrW6oh; zgp(4kLEcpHF)5A;#j8YG5NTLzPnkydfz=I&OfUrHGlfq`IVczvyrsq;udmQoub{K7mw2*#LE!Ne^Trela47w$2#=Ggm7^*o0MH2O_$_WiL_4%8K5U`O1rtaP?;7a#k7KDo_dIU8 zt`&;UAW}CwBUoTJyU6*H=OV5xMLCL=CL%ino;P|L(x;ijjcQM$m`Rj+Q=HvVWzWeV9YQ(9}ZgBl_xkqsr3ocYnYr?nC9xrkt;!nocCj!&hU zisL|hPHSBXk?O*tPrg)fhV}2rw$gfOe71X+&V5z8Iu_U?bGvhiKEb{^J6qSj4D(`p z)l{?yJNHJN>Y%yGo4cb9GgID?y5mc#;r3KDSm&^$jII!?#pAp`xS>PjM&a}j1jQc^ zn)&fSD|S71Yqozt5GHJcq;U#iuJqpixNm_Us2(SB4{p0$Oa8eQAMW0L?R@D{$}{tx zs+Om_O$6|qzS;fc>LioRJ_*~|Qz7U?MD#^28P`8P{oQ5)+}z*PTSd^va&1n{l`N`@ zX^^(Ki5IM&cAa3z0C^(%Mkq6Zc~SnUKc`-KdnZ$^Ay@lS;*n9BXfG3Za$wt0vHXin zcp6sW(BvP0v1ki6I8p{#kKv>qDXHDh;_i zHcsTj?+edUGr#V5M|uJ`caDnUv5|S})ZOII#>2fS+IRZ)?{8h2dC{10Cm|8(Uw-?i zKU1ollz?MfFG%vfx_8R_@|(WhnLoQkca|M4_PJp?JRB8geD<*6zq50GCqNcGy^bx< zc7#U<3;KQ9Q_s%t?y}-nJ7^QOB#Xa&Tfgg)U-%kWtUo^uUF&dj{Ewe3HI=mY8%f}Ko z*!L@?(1F`w;U81q=fzNvVTS&mZUUAsZ|=_SwgQTgiVZH;cVQ)OtVM<13{|=0bMn8B zcU=wp=K61^Qko@y`C01C*;Sz!^AGC*7CE_Z=5DBUs{b$=B3fuTY~wQZl6-4tHF~)d z8h0*EE2IV9UNO?*i55MMsuHuKrwY+~1+g zj+l>k=UeTjq%MVE11w?g52H-DQ}SUCTbNFdhG_g+@5Jr~vJ;H|$Jsw+iw4xokAJv> z6+9!Nq6qlFYPE?TfZXBn%GF^U|BrSt3yVB^(eLWE@0ymSEXC+{FtQ%SdnZjzI@OnZ zd(}gmzyJRJhuLL0ldR0hGpbiy(xl##eAH-?m=s^|iJ3;TC}vy{VX-2p4O7vaPH+)O z%5t}p7YjoHR2QE$M}?q&iVFmD`=DOG9g%-slh`$RI^;KHcTfp zc#`5F-y2CG?+LO=LEMeVr*`WE$aW=PK?H4F_4$t{l@#uqx&j6Y>^PN~y_pPc!MtXC zqmaMBL{qKf`%2JBU$@!B1YiFId}0aZ;?tnG1R7og(dWvz2r?$(Nk-Df;~10H7FP@bc-WUdP!y zxav|a(A{{(+{-qZrW!!5>iK(B6fI6P4v@(Utg)3t`1|Nnq~q&~0h3Tm|ANG-7`*Pp z(MrxEIWmFfReO*+3rczsvk7&Z8aX9Hw6r@%JTRAFc+_G_E-nI3#sAgUgWvA~{(j*3 zMQe)Owu0;+y$WLI71G6jK|_);zRlzkYtF00c)Y5-CzC7jOstTh@NNF3tGphO+=JWX z;TJyNDU>kci&fb<2BMW2FAjOc;I)6`DbpcaCA}^AWV=tgqULyt#(W_z_s z&s1KQLFlt&0J)Fo*k0C%sMTNMPcyOlcoN)s_9>iKH+6XI<;zDujbT)vJY@MkJPf9S z+PH$7kfL{;1S(vW6`3~4H|s44SQA4A3mJKdJZ5Yx4u#6P3&V6gSZvjSqIF984VIn6 zDuvF*cAQn?hTKt@>8-zGEaAB;7xLmlqb5N{Z#LYQAFv>COR^*MITbcYoCcU>R|=E3 zj7X)hQNECqtI80}(b%~?50!V70N5m#B^*z-ga-v7b7(&6eI6Q8)-vfbk#H^84K1v8 z%9DSm6BIsBv5);b1HZcWl({4Wspj@Bcd;SzW~S=Zi{!0Jn5@?P+QvrQmtp!Gd+S|6 z%l_o8%Qg=yQlhuoz4LnT zEb9A5PBUda&`=f6>E|DJ7toyzAN8u|?Cn^|HJ+7e)LQal+JnQ| zC5*MVB#$qHAI1K$lqke$g6^!JNv`N)2&yB-^RL>YR2n@42ZUTGn4{g(!}?%@Al|NikYh4CM_ z_pCX3bJNSei%o8Wr8915^Nn=)!@cv?vTsA4d6Vs3S0}bU{~J0VD-Q9|o7?{?I>Wkl zc~q@a0tE|s&$8Tp;?C>7&Ijms0%~2YC`h`|)Eesy+i;cq#o*64H7XG_ywjlO=XFNU zHl39?Ta`3*bGZwxb}q)tgFGeQ(8ipI#AYh~4i7kx}-T@+rB)X z%W80fr^aq33cffqNXlyhQ?bhoB#h{A`wu8$%KVyPx~`$$YQ)|1@eXjj=+#WCqu-XR z6P=cw9+8=sKVQqNg|knEtE(#i=KG zYlIt)AD-nV^p*y2{FQC8bqC#mXa*`Kvny%ZV$EGU*sxd-UGDmLjCEZ+ z(cr=Aay$O1DREc+Pqm_jtfC@s9swl)jV8XoEf@eZ8Tj#UFI%CJj!>jW3R0g!p2uvZ z%70hr-v2__Va-)sB2i3J3Fw9yrQb9V<@Z@KbEY};<3+zx%mV3_3>)b+Xit;Tc^Q12 zeiu8rZTwDwcyNK0?}44oC|DTJB*wCwC%-Gh3!=y`oHxDS0kv==D2R-AIu)99~y<4ck?Y5ypbaQtf)ECPN!rv@KZb=Rdg!B10uS(9HU7l=IJ0-Rp z-E^E_?2X4|_n2&ZQ8Hb@)HdqIHp_pNCH{tO)zuyBcym{h4pHRi!mt1RbL_b|K5l$# z%1hTy)Nqf^IFm4y%+bL{5+d|OYuo9R>&HjZFL>5YdN9HoNw3rQW! z5p41JChVt)@B@x1=NZ;iQhOieWuaX?KQ{KV!S$Oqi>d{+)Rv^t_Wq`)qw<^I=Rw)a zzx-~9G5UsLNm`B+n2x?|Zb1?(m2iLcejU2zyFN5DBs(X?>+|#G{&e3FQJ`h1FNS@v z5rXsc@i$@?GMTpX%40v&k)O<*kJ}ei)w&xY+nm(c(E6rlKzMjl=6>Vh>hg^6Zhb8c zcv4DGqu-(lbF`$mC2P;m!jjYIG~?Q9mf#o`@Pk!->gw)~bVztuh?-CFp3vUy#l=$e z&qnTt0=KaSoOXqJer+Ar4UEamRFzeWd0GTk2z+>c3C)8c(2*O=HC7^uknX1Q^J zG51Hut1+6K3GWqF4J)p8yf`KoQfe}5nL!bL!;iL@yHO*+?z8y?i!hHeYjw$ho=#wPB4(hxz<)5rT`#8KC7yOXsd z)m1p@^$L}&NTWJC1mQS-i^Vf*xc<3~bJcDP*VDj}rmx6Ev~_|LKf?XDJMvros_6XF zP!3g5zcj{%g2`!SNY@}Qv!()Vlmj$hcF#-`r#96FfOD(-i?Gx^-@vCqw=dS@V2Jji z_2Uw{z3YH)x}G*!aadE~d;VJhpRY{6r+aaNqVm`?&j5hOchS{~&P9!jmpz`uIA2GYDN#U{&5V+>|I7g|Kf_pIw^qZEheVK~uLbU@|?4()P1pORLKI2)++f$tGy@xln$(bJoriK zU;cU8^>ft~=VlKwf7f6f$MX3RuX0&HtjJV81xK{0Ui*cdg4HOG00o0g?P7gUUxG93 z>poiK0U_NF-I*kd#MK_NXgywD@1G`;OSh49k7NM-FHROdxgVIIU!gCJyPqFdniPbN z(5w}wSTIKzh>?J6LxVE0)1(Iaj{&pYG=__&<97BNB2iKRRnoU4Lfui_2cej;3~VInd;jNQg6ej+~nIN`U!JqcSi)1D5%Gw1eA7{R~O z|LWT`JM$?>TWBc~>f%qRarW5Q*cVas;W>8lci3~}hq(;p;OtQz4Ba3ff@tZ_i&8Pf z7nHTd#YuA<eQ9DoWHrl0TuRnSKO7>DCStj#U?aX4|;Rgk@9t>)j37T zUE(J7J}Q2?epTIt==gZr>*w`?AXx_eg?TR)R^HzQa})f&b3ePimF4#V_O6r3Kl}+~ z8Vkfa|JK~&s;gxjo$?`X%z@Se8>#az4eNPAyoz7?XVI^Uds7%13Yxd=7c70K%-sDb zS&wjpO|FTCV%puBOyK$cn3*?gmZL8D&mS?T-fW$Qcus_q-T?FQK#c1jnB5d7;k_ z_Zts$SgqV-MzzzkPJJ$GN0SWt=}D!YicC2D=P=ZVl5q1x?J4gbi?Kjq2~LIA>(hp^ zZ_z==V?Lu3o7>H+!o2@Eo7Juw&se-=Do5f<&u&18*fq z`3br^0wsg;`i{}2C3@=2YRcZBwc(ZztF8O_+gZl?dDCkW1m%{AHi?EO(YYHT(5&Id z=z}qKE%W;Yo5iBMyDBgAhomAV>z)5v(y2q*U(+qd8-A&IRZ24@Whsy|RXMxmQ7BW7 zhYJ{)(CYpi=xG0{AdeBmsu~F?Tx@gB-4%+&W?3PY+9p$cHw^4~eyg%=@+f{+z}Sd1 znezNETQrW=W|1g&YVGIW6D}Q(s-_p3MW?a1)0+12lpUYmJ;;0pF3R|&z>9O%? zO~@R8KhmU59zcg7bhr7mT(|iixZ4g*Mr5zk;^#K#JhQBmO*pn#>neRqtjEudoCYn? zC!mC&>^AL}h6MQuf20$Icj?!FRyN)u&)*gd8B!`BA)HeOpEMH`hK&}iUEZmYJx}At zah~;jg^Lr0dG#0XP91?js**XxQMI7*b`#~0ye2$+-wYPpe;mdg=}Lu2?K%I_a@u5x zVJ3)BV&%l40dS+}(|txXql$RnlMD~T$aD~{?!(|{p4%n&{?9hkQfk1`Md<4nU7vK# z)P2g-Tx)mFYjx-StlJn49%v~MLi4Mn z3#K(DDDk`RCT4cVbkCplglS)4EG^~3t^-l)SV6>1Nq9x(#Z4%7dhzG<;(`-gG9dfd z{NdCqa^>T++q|sY3xkp8;vn%}j0cu)PA@Y1$`m5|`})?ISyIQoO@I6LExWKkYM@N~ z51S9!Uo9emV};Yznb-Z6+52x^_N`iATZc=&dlByX&c`8;xY#4(xgE&(8<;&Pp9I2HpNGgcI|bd<`48 z`@4@#Mtw>)k4R&z_NSXLY#w$E_F64`tdyNfa5eowr~Pi6ZXi)me3+k41*S*>Us3 z)m{lUq11tVQ5(!;aqz^b*fN=CsV*YlmyX1-PQ%c)l zremyn`9b0#?e|;O?6a|{+6q2}4N~)8jdF9fUv_K|*erUte!B5>&Yt^B7@2)|HJNTc zGZ`eRnvzFHKcA?-Wb#BfL0?>vn^)Y>?VUiqfTswZ-$FG>4c9umY+Sm=5ed5SYmAkR z0nfM0$ns8V=8?Zxt-z&x|F?}77op*@&#<@N!~Nwzct}Wd4>8}9=9W*>biBfXbl}y- z$7O`cnJ>T#HcfJIBvQ4n4jIP>b?ZX%DHy+oknl9l7X>xSEU#-qm8dbAK!^w>9xDBb z;BaYnLvEg;bMBYvMCnMwr>7J3Z_k!-9GX|$plYQ(iJ!)uW7)*>sqMYHhAB8iser@y zs`WKb;*e(c5?+IB+6?J-5pe`*wF$_;^~hXUPc#;&{3^oC2c`kh6v1_A zCOae7QdKJ=*oJV#7lOOzO zUI%Vn2>U?2JenE&^q_`0qN(W0ivYlQOd7#-Ln&e%MB*giLt18yeOeCSC7nXUFz0AI zr1qeYj+p6s(6z^a^~2DO`_EMXnOfL?!|buK0ifK^6i>Tqd1^g6P5pvCCFK#!9?!Tr zy0fN1;&}$jzfmC&6-uAp97(XN`a%D&_KnBHLv4U%?%}q3zr%Bb+K$9C*j>Zr zno<+I{7JC&7_YfNoIyBtQ>O^);%h!()lu=OABK%n_*$BYYdb$4?!GS56NjxYnO zc96H&C>dDGy9(;NKSh^ZdL8#zI~F_`XP<=MEj|tn|7n|CzG9n0q#VC_dMY$(Y8cb8 z?-%+Kdg+u|kM;K#mT?B;&+ zR2ME>fkg}*+*8CnOyik0rM3f>I=pzuw*ZfY;Y&$Wqhu_@q7hw=iwtftU~#JW6PY{Lldl!+Ly^=et8eO z$W%^izKe-0ie>mrHfj7Qqz)O6lQ=G!av991+*Vg0#9v8c=#pQxZg>_-mtNIyIrJO* zb7;-?XhP|2U(B7|VV7>pKa1VM%w77LdmM%|9yT6^XcQZ0YC@~*i{U96vr=q)4G;vRAltVmt#@bH^Z0 zhGS#yi@IyZjL^4Dj*UI0WO>$Hhap?dLm-OxuI4gVJKQkGn9jYx>u~+0lMA0>2W91N zRQ!h2#t<`eb}e0;Y%Ovd9Oz7`BW^WLln_1uCu!Qs(UExEq*tFn%xklalI!!XhpGY% zfX|WLNE0_BSGbL`hk~P4;PQVcdsA}3Fj$&dr}}Kin{iJDAw)R--#S@ownAII`cvP= zWFW5fn{z38T;aB$GrZ(&fQpI=4ltG|f}(?xlb&WYjR2^S=)tn65d9I3OKgXuPT69| zU-=qtV?@3h^8-dNI!*{?sC+Geaa7jRV=$hkXZR8#VJWMpYH0ZQH803kg!=2}*FKO; zw-ZtOe3h8TpW5^inLKR873uN7d*`R*(7@i$c2t; zLTwxeb19^p1UL(LfdD{c`pA%#tXdj7SL07U*9|WaOwk(%F({_rH6F(xSkw&Lh;bNz zRD`6*!+Osbt*l+ccXpP1kD`tW+diNGz4Ravc)RO?Fo50O>Jr%sUuu1~oFIvBAICua zS^+MM_4y+_9;s0(8@_BTPp1)6vL5;z`6<@~N?nm3FNUuR7%wG#{dQ4>QpnW!F@dH5 zV`C&GaPMRPMwQqT>pGh+@K!nkYB5_o_C{Phs`uO=@R(I=%pe0*u6TQ^MxOUV4YN$9EZlo4g*Fa1=*os z23fq9I3yX)oLRJr#L+--UY9VfGMxx}I(8FMv(0YDx*@&Uk6p_;gdtP}{^YinAqyAU z|55?0D+IA6oJ3CBsEgGgofMM^lGkhB)kjAw^cb$a{rqc*=1#OMN*O=wP6phHOLuoJ znM+TV7au{OVB_tQQFFt<9StZ=fh1SjrG5~`ALQS#=vA3_6HeHzmowz&(M<0M`Kz|Z za`UVfng8d{d4cnOkD_7f&CtgEDIo;`zBq!a*)8;0%h+04Pq=)ms)Bt797jf2kuMAmBkx0Lz(heAo!W)-#Vnp6kIY3Q3 z{}i0vg>Yi(V`I*xEvCa|;!IfJ@UPcE$K7!lOZe^indj<2Z^+}w#;L#8TQ8aGuzU$J zBwJY`zoET%x4&7TyBjzwB`+s;5%&$d&TL9{&NBSwt=+t6=))B(VhBPJgK;a|yYi&B zaozL60{j{!cH9!KJ+Z)#$;erkpn*`?ikB&$rmLJ_fyLguV5uod!NZ?x2pA}2QEWge4Q%AVv8`5r_`}5DbPJNz;IYtn>o<2>*uE!y%1zwEKS6U1 znA5D2#VZad>xBVzO!QOAcMu*LTyh8H&*dOi&t|J=d^0>=5^q2{c6ks!zK!ZnYyW5{ zVJu=CY5EON!(feXAf^Z;9+_bn_>}@M*%oiu7zk&H-NbbI4am#NJ`2CUZE5r&Q!U>< zlfuQbQsg&+D^cSJ`>+V$5B=a&T={PKtP{5ezy#nbb>^b=zW)fqqlhk7vQs%jyc1F0 zWd#FUroXf{SsVDmTt2vwP|zotOhCD&3qQtl5)`&`rJItyqfO-Gh2jv+4AM-H>Mo`M z6S=_Ry0qf}C{b=C14WeJbN&WKqVf7nrBC+P3WQ7*)2-X;B5u)p5tW%%2;DdOeRW?s z>Hee-JcvPf9Jfux5(rzEfaYg2@n9o6oJie8q2Y2VwJc>t6}S;V7jvNxWis=N>8BJo z6uMqxcKad|x6Z1dEU$7>9xA zXz-H&tib*qcCjccgo&{0sw5O(#HXteIUJJcn5g3OA6BIADBvv7_ERXH46aCs7lS|k zi%Hxth0jr7b~W>EfQttozXl2K@@%Z>NUWpJTLBD8f}!FFgrP<@42Bz%mdK+@Mi}{l z${N6l12+^kQK6JFNY-QprzJWm6uP-pw32T1e#^G!a}k<$EUg+QCZ)uSc|B%sjx*R= zf7o*^Q(iEuqsc$&sKQGY`N7oY_QxZL7>)spcO38?YgL`a@+|}su#B8C_Vp1Uz_Dcq(-?}dT+nek5EAZ@awx+I?8yYcr(v}U@k0-|LKDBdnk*vHJ2c&-kI2-B0>?QLNJe;V(UpRac#4KSIZp6 zi^Vva6gHxU3MBs$MDbX~A{#_cFJ77ry<Gj~9I}(0Ro2Pgdt_&aR1%qSLK5N_zx(sMuCKpbmp`0y+}`)=e!ia1 z$5Z8|D#Z)d_%RGK$9D9dy@nvP|4%uOsJb0dccjvY*mm!rlemyu&*A*IeG%#Y!QKd3 z;S!B)P1GM6a%`myDEqg6_Pg2pxWqM^fGvuNi7B$T^qPO#?%wA0Z}0NL+gbTFw|)QU z`swNr(e*1MfwEMs3 z^S+K_DK9$vJ4`88a!O+~L87i!vw#aL*@af^v&7uoUSDfUy$eW1txj-$N%ra+iUCEyT7#b zvCi$ou5R|GMQoYYd_d_rujvDud9B*L(CUR<|6O96<=rbOZIwr} zfC#E`@vq*6DjN9n6JjX}k%Pko#Yy-1KQkvzCz@Gat4dXb`67Gn0kJHROf`4`E2yZD zjY`HdV(8PG{nGBP6_>IsUHZ>cy0j>SQxE;HIwUV%JDSbuO{8b(6=oKelI5qiqD6%0 z0_T}0=O-_ZNaw4o#`8N}9cM@L$MXyF+wu>%OhA&)*&Gby?xYpzn1>$}rGO}vqkdrq z8djF4jfdfg@i<;1oQ^_@mq~>lV^@}UsDkY@beLR(UD_|qQAcRCr0rv&Dp2MKg3Aq10xbsErKB9-Penkf;yOh!z0Z7xZu@U#Gg!_Sr4@ zPC*OZHyAH#1%`t4n+{z;I0}wTWmZ-8;e;l`U&Vv#SP{mOi2Z*a4-KiLKrbtzx&LY8 zi};xsNP*{8p7LT7YUS3$>Io2ecJ*oXm*4Legtx!YMnJ#_*lP{Pcq@IfJ9=c#iZZZs zky>gHEDLJRU3;`H&QT6dtEIsS_K=OY!*~?0q0+fjkpJ@nWNF<2DMX@iG-E^QRIEN6 zLuAa74h%GPgqA@0$byu5EiQ6wQNrfJiFvSARzyBj()P% z99o?wBFj;NylD6>E7ahhNiCXaWkRs&)M8kC? z>pMq~DV9t)JqrbrCrv|jyZTWT3d_%PT=u&8*=h~kTqOK(=tJn8(2(y6K^rzS=T`qc6C-LCqkoMEL?;_*6GeRaal%hdMST~1YVsV~&#Qmi*s^Oi zclKI1bv}S=Xn*Itk*FvtcMrJlOm{ZBTF{zL5D$Z^9XO-G;q%x}hu@oaB%r#DnfGR- zCIOXKa<({a!BYviwK#V-G~z{wZUya4el-V5lMorG+I#@9t?DizZ}magUw}sRxcz*z z`KqXwdGAo)$;tZupU_G*76&DsL~(I_RO(%+sM6BX=KXEk;kGIue3yNN`Bmyy8^F{3 z=k)Z$py__i9%GDJO71)Y$;nVEo6%G`Fnc~-rAu&_+lx_K_!QvbU?c0J$g}_4y8P(u zpMUrLyVD+De|>!*U*;ACcX$;01GoU&{#%yH>&`@m)A;|?Uk$aLXFqV%ps*QWLm$+F+&BcALA<2h^0O+!%{$B=? z5s#Hkj$k~ay=n+@g5n0gI5xPJU&p8G?+QK3ma))FxJ}Opr@vvpIc?E54SBWbBv`a^ ztv~f65H12@NkIGR5}-=Q#2jR70uds{m}uBtCY3l|7&V#?YR@Er)VR=Hwo`!$unG%< zEbTPzI2$vTMX0VcXX7L8(o7$BL~98SG>tJ*VdmC2t&E2i^odey);i^c8lPy^TsiL=q{2-|z)>8bL(yTl*gLh_e;B z?Mr=qr@!&@yTG-dAs1|F6!(jt(l#*F7ozZx-sramqhPlsoV(;_&U99279ZRqI@Nc? z6a>~D*AcR_M^h4uvS#CquE1aD`W0w_ExbL23K`Xuf{=SM4C(7%X z>xw1op`G1J)u~cmFedbx-4#?eiv)@eC1};e^Y2sID@1c`cF)mtP0be?#48oo54;jj zr>$X16a73bWsz%Q3G_}^<5|E^2m&(I+;(Mb&&=ciVV)lnX{+yr6*%-JY4C1#}z++~N{Q zMh}NmUUwEUP zrFbNn!dt4NvS_|YKG?`#A0OVc`ax#J$PB|NResf#5xQ=L{C*S!T2Azp_WQ(uB4mZS zd7aIW_T1Jhtv*(YUt&pL9@cz(xX^h{PWI>MR}k`5HnRo`HpC`EFo(Re+|6};HL%;Z znl|urfWqb_iFElk?P9;VyW0J9Q{^%%{ZQqScv+quoM%=&W^(w$KX6^A*?qyLZ>&$^ zY)IuIDeHuK4LEk`CkWfQ-CN34#>%;gAxnTijYs7ojx)Q27u~%)E>d0or7WQO(ZNzD?#qpV>1dxw`~}qeYLz9- z-HN`MnU^ZO1)uzP00+!ru+2ORTjKe}(IY_=GQO6(O?i^oHi7!M7xO^Aqq}=E_qcG6 zv+;V(bZMKW}DKWj>UE_5N^TKI(>cr@8^KmZ+$zvco;}CTh{Zk zaA#myn$$dE^`dR}+)cCJCl|KwuY9%{cA;r`*LLReVvnc%+mtKqMKK4TX|GKioDJb& zA^pHtEk43kxCO3iGqWAWCcn1w9T~B2?_8SH~=^p{^plzI5;XBr5vMHV(aP zdyl?ICsdK0_l89QS}VGYB3$@yTr%D*5o(TeuI_>mAz1#naI$MG+Q+}dtnp(7NSDlz z51ZvPE@T?nlze6RgH}y>`P@q=UFa|9<@P}qw zP*(kwK6OV{mM2>6?>l^K$dEf>qfrp)g?$1%4RSfecUMVoI$yS37&I#-Oy=BM>_-n@ zEI=rPqn&dUL`=ODkp1?~LGAa?qnM*;)%e9qM(g5NJJtqt*?jUIQY4^_T2yU#k46}&I|pqYa3+4 zc3^`M6R57<7ehS=XrKWk`~)fQ*{DQzY7Lu%n)FlWXkD<&?etb3(}FrGAN4z;RT+U| zU)7pQUWwl<&6|1TWV|pyIExGQ?HJ#J(h8RJBal}PovH}IQ@;ag{~egb2@hAtXba%R z?eVOgV`uZcKl?tSv1^N7^G%gkqb%a^PvFa8Ot%APc{~P1bd|}~1??{X#c_DdUh5LH z8uh~92O$fw%Yk-bAI29SaQq6UJ0GlLI~t~r2L0W-1Qpy@zuerfh11IAj(4*}fC^4; z0IBDVbW(RO|`~iH!cZKXvABFzqx!X|YW;4&oc?0mbR={J+ZR8#najV|xD5hIGfj z97UgTY6uF!!} zh7q@Z>G_3(-po#*+L~*w8p~+*r&RCeTGwphDH&V831X_>gsW(m{(XJFxkF;x#o0;y zPGIRO8))~~HE*cNlN8Db%4kj^orea?#|V@4tozc3bC#c-iu~phF_i#;mb%vL>hG;`Hp0l#x$t z%N|imQU~JD?S+hEo-V)(K2x4NNRBywbU{){KR$lU(~|9BzUuk!Ac)vn(Wf$hpp-LG z#}7Y9dhY4(B6nt{23hE#>P>rvGwJ1|F*W&ut|>S$9-#GLrO0?Q{m{f!2)Ox^&ciN` zx3s7las zrs2{O1a5K9!<73tAV|^xWpr}- zyN@Z22>mQy>la|@b5i>ekro}J$t8%65hUzPKvVqUr$YB?|+X37I#&>L%CHIf(uz|Iw)h!D z?`Qb9umGQ9J|(b}F_eW0vD~pSI?eR8z1t6iu+q$-YiZzYgp%0)yZ1mKU7r~lVY}at zr3baB?zJC0zK7B6?}t=C99e{D32&=#GWn~^RI!mbih^EAQ&S8S9QBHxbF*x?pLJFy zv-e?kR{a8-1RKas?v9$YDpN*iQFdHbxPj09uTsv;h(cV%6>5EOW)UtTXVXSz=aLSM z*V4#?#WdY^hhWN9L?bkpL9HU$Gv!;j`$DIxY&I`GFJP}$p$#X0 z373#+@x?WO&fX<~FBPWlH-FUl^~d`PNLgCAiHWU4M^NVAGgCk8&8qwlW-3>MUo(Dn zEG^NvEApXkZ6PAHogOH0*a#FRYEUp)4HJe6p%8~2|3GUy4rOHX0gC~z&0Gc60f7Bj zo)f^}xj1U>#$s9Q9jlUt+FY}blYoa@l!9-g$S8?)3-0ep4F=p%^8uAPM~}WS8&0sH z=S^ZPhJ8q$4(UEsu9SAWfRquGIKn3krcWh0v3kBY*>!h!Q z>`Ya=HY!vSWtK|6HLgtVv{hNu@kmG4R0ZWdT#9s_PW=>=ryuj*uxQM5SEx?{@TQ?% zYV8ef9rcBsofD7quRe^}Jw9)mq?83R&yPPJ7tw+OjJbFck4XsC>#4DT`oaIYWGl4W zZ31u3zvw-)9*AX`Zb&?sJU%8=&N^}qa~-CXa8fe3D4 z9d3oS^%rZYMj!1h>wXGyN$cOIy8MmeSPmqUD9eQ7(oq!g_nLX7_9+=a*<^|=bSi~7 zE4bY3cu=3yOju&&pxZV=%9W9e_bXKBq@gIQVzqqs(Iz zGYhNgCy_8is9s&{6=}7Z1k>|Y4oaj!U)(Y?H!0SXw+0$_>b?ILjqmC2A07j1$5I*= zK%{6veB>O-mQ>EDI7vBPFYS6Q0;(iZ%*}{$U{bFsf|XTR>cK)&jMw}gJLtOUM<%cE z2eN1Z0!*);)0Q+!6K)E-U1QbUTJSt89EO^HxYCefFG%j}m}s?BWAl6);ftX#c0@^& zk*hhVIhtvdr0HB)os_&rgP2&2I%chULDi;$5BM zNP83+twJ?VGbw-RzV~WEPcjtq&cMu(W$;4<)-vY7RRS2Vr~Nr3281gTL^cW6A=mj8 zDqS>mr!${PObl!B!mc|n1#3M($EReSn^kfv8ep9x{%C(9m-wUHtHi)MH~b75&wWPM z1@fO0dFlP=Ik;@ZNGj9B8XVD`5f8IA`YEMc-Od8Kqell}XEDayu;OYSk>Ik*=Y1;w zh7JrO2RjOjxS%7nEb*#BSIEk*6c2AGvpcCuk0Rl3%G;z&;52HVH#BHny0r1pZBEnR zR~7wtDDYqdgXRaEU@(pV=X5+TbIdtGA zNh!baaQnZU8aFni4FR+hm<={;C{1-mX*dr$i-7bt<)valXos>apBHgV2R1b-rwo+8 z896MY@VuBkDeNnSGG@9l>-73K>%AE@F#YX@b zUE&LsIT?ggjVw2d5l+y;a#jEcVq=EkjP}Z79IXQ-gPLp({`@i0q2WcmDyih=zUMk( zb5jDK@7~G>ZYI&N%v$31d8od>IuodpXfEs7c7HS*LxH*L)4Ex?784;*?BBW=LnIw+ z$>`1Ghh4M+_ANsGggDBV)RK6B;NwZWot@B3tV{FyS&xs^9j%}($|AdY$dED*#GOw= zmjcwzTJ%;?Lx(jyiKTr*F*9OD#xZ?cH6kyv`W15-NDKRQ6WaWb7xz!rdrcgm7#U7R z{V>w|FrzYsx~Q((ukST4aADc@pD2fP+&3CYrDN_dq3thT3&=a&c=GJ0ZTDs>OZ@4g z#9w;WO4r?D;&I>Vss*Ox@Vm))-wazA3YG0*)4X~9z52>HutoEl2V54e#M5WW)kKjJ z#1q!G5`vipphZXjc&4o8Xd+YJ_d{Z7lYc~y=-GTrj8qb*umE6+fvHyZtV{@|)=hjI z1I8TGG4vUj@q!xkpP8=#J0e{mJ7|ni@EE`+zN}ekma29!vrZy``m{mzJ=sqDckhDJt%!I3+7G zIZJf_-h&?3{?fB@;`)}uooC9ruil&qP6oN6J3Am_7q{_|U&g69SRPiJmg<*fm>#I^&jg}{}_49*$*VVO3xjQz)-l5AyS@&t+B*XsyZ9hSaP1zZLhNW z_KW(lj3BcpmvV(&g($OTlfM*5F!eS;8*r5IuRC|LL}>A4CX_cow2p$pIu-)<8gXNG zT_0q4QE`Q|K28H38{vV%_DEq=U9Z7)5L!a!cL&T^x(X*ss63@hx>LfQ^@>-@0rG?S z_RhL5N&wk#pV!I-`}?gmY{Yrx=<=%&6PD|}j-Y_kqjs1%XbdmR6x%$+qK5(L(K50B zZ0ee_M)W?UNc?rj(cXYh)LrPymo2xpG1qLt`B_QGR;2lBf?DSx+afq|mF`$vjV>KDVHFNk`c%N^mqRL<}1kHa^+li_OepiYSA> zbHa#Z(nHd&!$4Bu;pHy(A}Apay{}Bzg!q!LBdJGqQW9d7)UxXOernhC3sZdbjNrtp zi%{{@)7851=39rq`o)rZgDkceL7o$VhgrzcI_k*ct{BUznovLx_?ohRS;y5ZZg5Zy zs;6L~Lq$@Z!I2{!E5ZDx9Gsj=!H0rITCwNiuo%6C-9XtP9G(MLjxdopU<4sx6F4xN zJQ62WS1VaCb)^G8aR80Zf{&XUW_~U!pgeGSug@V%PT~C3^pAS~SkL?zIQN$~QXOxi z2f|ZCUYB^@6D?~tN~JUGOg0RG=KMBR;_N_Zs!(R2am;P6c~>5c6AH-Im_>|DrUC#! z*m<52fw2AOD6}=SY;PZ!8=f+b8&G%4O6+@`L{iAVs-tH$>H|y zV2Nv6)s1!QxGE#Xl9(83&@j=>84)p51cIUbda8)gCHY2TLJmMN#(&6!+aXH$4bp#R zfpPb*JK}z!Qzpt@8Gv>|5ghtV2!HI<+0n@XNEVDXDv1Y*;*#SO*WB#8iOOqvqmBS# zs%jWmXgO%a$(Wq?^=V_@^>q#M>a=OeH%)K1cGP|5qgXEq*(A6n&(6Pa-t=vfI} z%H6w$Wg$Z;=11>uovdCwaMt?Kq4KuW>8aG0u4m^eMi(k-1wEyk=Sr7Hp(lld!#_q> zrD;1lyZNTJ0CTWn3wz%FGv&Co(L=#hqRsJ>K_A-&M`wR2R@I5`O?xMl}n{cVsMV2X(hoN%fjbG334jBZ`c}V zq#5|NikhEHT?UQ0VF!tih7z*yJxxM)DBniJrM_h1En`K+XkkFY0-5EOQoMrp^r+Mf zStcP^Z3@l@Rf(7?v(K@Dm_&g*skog++z_#B^pW^D7Ag@PUX%0phZPL}^8!>69HQc7 zV+;W8ZgAL1G>%f#To3Ajw7-IiF&7Xrp@p+rh+V2+y+3h{q&T{MC?YhqoKOuh#UrKL z+e+QtPA@MD%9XS92B~_kE|@rFQ3qf?E&mRWfubU){G_LE9EZ*u_%*4j55!L=hziqy zQw12DLBG}_he0b7;k%26@eQdpa}1_-nn=b%y8d46VGA3Rtu7#8nnQW@55==En(V7n z!@sJcbsvi+TXR6B2I0Aq0#@i+=`iI%H+?p)^*8DG<=QyQZ4bC~8B8=ZDJP zTJ&&sRwq6(P#>bD9!;p&Gs?vTC^Bjgn1wJQF@PQi&@JXQ#S$xKc0-8paaC z*;^qZMxM{`iNld&!l_YnQbGk}DR{4cwohOB$$3-Dp(PlGIZtO9JekY)acS9X{)~9hC5cEp?s4-`8;#sWqXL}e> zn)VN9URn1g?vh1sUl|_%>qWqze3>Py4Bvb$>gAPi!2K*?zz&Kr*!2=_eBym4#S8kL z0uJA^Rb#ns`m+9&R^RRmw;$+bjpKA*WRV_#0{wLRO}ps3ejKlcbdQLxCnQ19(GTMJ zOYvz~yKVJ>3_NPfm$ZMdP^G6|>VSN5eiUL+@_X;n?=lF256Yu)@iJaIUZ|3`P>}Pa z9aDm;p*93P+MMgZa304TpOc#O5(M3lzW**R%rK>^a2tRH#1j_E5xCHOzLRu>i4SbG z{yO_PwEN3n#u!fuDGBH8Tj`q*BiR4;!e(YdRq~RW-10Qo<=WC!!p^X|q!M~w>uMlY z*qwccLm3-7E~6*tt0M&99G>IhpS^D4V#b{hwvxnyvKG2t6b3zc^6&hB2f$&Bb%+TR z%LSgdeCXJgp?%vVulK^bBp_8cZdLx`*Ka|9% z?>HsnD*CbX$UBUrwD_rMXTI@~OSe*&zw1onBH;#xJMd{sXLVJS<4lt$&;2FuO``kY zCdG2WfmFWtrvC2^kpmeq+>DZKdVq0m#QnZ)(i5e6hZcFjd&h!QmARB@do^rOb4I*QH7F^}TEN_Mf$HVDFWd2DXk! zEq$N7iUXPu#_;dH{tLZzJTHF#S@({S+tN_;Bv4SY`|&cIczAkPy~n-MCj^vYS=5V+ zw!|Xt4I2ck;bgLr<&>!j*A)~4D~-e>4rcW@g}Vjc`pZ-Y)Z+%y$l;lqzg}f9C`MZ+ z>qriAw$M#a)eN)8!)sq4n4uw~LK=gD0U`7Lp8h=oEtc8jGP70Ll@jpcv~MYO`z4+x z{8#UE^NYD7ZhrWQ2N!8-b1zO$+sA`SaPbUNAP8$gQJrMuvg|eERjM)b)@Z}$_4aol zwi$Zyke>_%Vo)JIiKhmmrt+kIUdli-RfD%7e}e92#6BCp(U2tYf+mN9?|}=?eR{Q z_^tqx^IwEL&{IYqKIN9r)>i(9R@m-m4=+B`p^CYbT1uL)!kCAmnlxj-5ea668{QT) zVdT~oO^&@w|6|alf&kMRW3zf63CpTyy^g?CT$G{Tg2Lrx=?w{nF+!6SXsX_1V_#Lf zB#6KbSW)E%tzCO)JTFC@C^?P1*-aPQ>*ylf$^h*hm#-!69BySCX8x9+v=`$bysETS zLD&PO2=^Z3vRB<#`vH@>3U%H(vLIbYc&m?r;iMgKV2FWslVh0*N+m?=32u@p?fFPw zRI(O5>JzuMGpo>r{KDivWU3xW;C8AmUUN-+u#vQUCy=@8Hw8JiRvP52y&aeT3mFm zP7yL%kY!AY5iHTFC4OA(i|xs&!lG5b@i5Lv-6JxQ@f=fYo}C^vo)6_umTF1^yY~gp zyvy-M&jsuBy`@kBA^q^jBM*lUEoG{*`bwNsCp$O!5NT97llggjK5Wr~1FWkn0vqL0 zCl{wg;{By=*%XFSoB5jp!1otA# z9f$sGuJ8VRrJI|xav=*oEC1E#@ty>>({R@eJYbDplnaPObbf2EtUB<_`lPp{H{;)G z%XPb2u(E;}+|^MX^mQk2$id_=C~vW0$zO=FxnnJWT|8uIX4UUck zBmnsNK8dpFx@V(CV+F*v^L;pZ%;&d&Zc~F&>3T3DBNX@pmY0{8xf)onwmMU~DL%6^ zl(dI0NC%*un;9{!c*VHSM>Q(e;tCI8l(c%f<$CxQ5jxmhS6nN8EduX08q{$P7$2Hv zv~{vR0pJdz43|l|$c&8M=rgX;Wc!KHlVDK-kuVo?e6Ts0_HpY(raHK@Yx02oYt@p+ zhI**&cQ4{M#)b1h^Yr!L&ZhEP`Ac_GoKg;mlRPBlNCT5nSNO^Pxi4I(c*?&$^m3%V z?>lB`g73}6(b;TzU`m}xknJ^#dc}?0t1k~uu3fYBZ?p%ND$kU2(zS9uEz(C^myUt@ z`2(PC)Mnl@XM=OB5xD~F2)wEJlMpxC$5*#zR4(?D7W^0Q-FzmW$u&c=ahC>^6u%J>xR=zF znw0_Ok>9gv{H|5~+Fk=a##sdv&QrHbGS#%dYtM=#!@FEZ0YHFiKyn8RK1oTX%?Bj; zr1ZOXzCMj@s|*x&8U*&*!nW;4WzkoiRpabzbw>)L(D9fx*)G~1@DvgxM6qpAhn^FG zr_iKiQnXx4MP%{`98rLwcUlpY@hstVyF{Z%Hgf9WH3MC?*z5*Bvn@3Wf2PsgU^rNW zSJu-_6`~i}f!{r+SmMqyg^N#ZP_#%g++*BE_d6@In?Hpn z|M7LVw0w0m5a16q5V z3Qqm9lB;SGV0M!N36`i{i~s6>wLdx6VR`MB2d$1EE<6|dZp)x}!^8kPoi)Zs#dlG| zv0TCaZ7czl9FB{-3Mv35>Qmcy^ooLFD9bSxlevVr4~uXJT342l9If71S%?%|`P@Xo znu&tB!yjK$myiVkhWu==!MKS>kNkxKo84V~j?K?o=Hhvb8_!HD*+;k>{<6F-ygM}r zTUCm{JIb<@P|?#^lWT0^s^SF)cUfBi4`YToUIIr8l5kjo2~j-9`WfcG*vK8Srl|C~ z!OSdZO7`$CtEAgc`2hy{w<0UJm9e!p=NHTBWzaSuQ(fy3H#zF!U=l5)jRmY@&!Cf+ ztP|j=TBe~(?=!r==qXg#<&mSVm|%Rc?D9I4SvHGZD1ukK;UIi z(RJ0(a^aRh@+E7Qxc{6u5$~}Lh1kw$$3kdMl=q(uK5 zXfePb_KP>?UU%wO#8dP zRhU+{;B69>r8d)}Br5RYR%VyYMDs#IR*qMF#Y}U)$`rwhZBr=8DXJ)gHEFER`LVpn zk2h62KWeN7A3_TS>rcD%g~W)!84Q$BR*n)+;_>?WN#!)ewzI?4(zUvU9jcMJ>Mh&b zx?NmH_q%EcK=iMQ_$i=r7>)WM`+loUWHcx@-BqrhC?9fu8jxMm_u#4nkepj+<_Y-^ z@8Nv2g``yNELT111q9OXX1pL+){eUZJ_Tb@I>{RJUx1D0jJMt!IlsvCW8jsK(EhR$ zn516{bIY~45fhcAUZ)lK7(H&}_U?~ThHLJSPhN>S#`Kjd`;bp=hPr{?nOs6$8em~= z`SL3Feppxgml7`JP9>lBJ{E_8JJJ41C9H4wbZ6?un)Lv(rz&##mnB)C+I**v!CVn{ zj&r@rvJAF;Qp~fd@8UGnr=%(ta5+2usU#}?in-kP4yz6evl*JX_)W^V6kNX)t=kZ> zSz=VHcEfP9wd*aF2;PlSE8qw+O>nZ=?An>?G);2(=xFu&+qKJwh zjgk`4{Szv{^XsCsryGdrMMl(SJ0Mi=dSoP=U3en6fUu01`fRD z(WgQms7MdGZ+nbaqGkUzIlHuBEy+n^sX2KxJ;mj#UAl*(= z`NcwpDBKvmo0CG}4W{y^&^wKv8p{`j_}RBxzrbD-E7sSxVKDW$oTng)G6X+1swjA~ zkiw9(zY08EolItfp8h+j2fT$zmi>CY{dh7Q9~t}pYuT0EjyU&OV4y!cD z)`EaJnT8^aqUxSrqh{r0PJP3y$-sJDR%p)VAwV^IVPOKNEL$IXSCOLN@&{yO-2k(T zFZ5h^8kTDzm)^l70H_Bks;IwHO*s#wf5~}Tl{-o#&ojKm8-B|5tJ0q(C?HXyYtd1( zC3t*g!vHNidp4f++k+NtW()NoSFa%&+%tzn`?iq}!NI~e)W`5ypt7P+B8n0I4eXvd z{8~70*oM9mq26qV14Hy0(n}S}btr#16x4ijHos|Xd$(!CSPIQIE4%O{XCp|xTA55v zy5<)S_hUD@-<%`s@aifQ-V1rt$F4g1(|q*P6c?gq!x-JE@oN1|XpWmT1+4d*&5eD= z*9{P`lrh9cR7CdCO_M20@FrDbd)wEGtT9nm@;Bw*f&_7R*02Gc8is*JFYe@&&y~nq zL2p0HB`{+T3y0l6yPQ+>eD->8B5>IjVoht3&S0l&XFm>czbEM!z zU6-VYJ9Zbgqu6DwD-U-VNVlJhQ|;soP`vZ_nyQf;RfOf3set=CUWmWcZ~K%zxopX>f)L6{8R5NN-LiN=G=sg`!@;nAlh{sx$e*DqzqsiONI zF{Y6tRTGlT(Pf3iZ0~9jO3*(%O`qoQsB#$u^tfu>M)jT5H$^pqldoJcp@|tjSfXt+ zQ;Gm~tYgsV*8Y7w%&azb6X>g`nSNWALGwSQXq7to_H0R3pW>RmSlm8n! zv*HoMu@H^*P+rlxsE9^MNI2+MVs&+zFA~&EE=1JVQC?PgCGuf+j$^aC=jLNEv4X5v z7l@@H_E6q-;Vn-4g>ChGnvq3Z`>61Y6yFjvf9{j^#XJU0Y*vXY0LHxB+iBWU zvOW`d3uta)cAYEnw1U&?+54+!mjvaNewND_cb*t+?(PyB{qqG7jZyA^sz){3>3*|x z#`P5$h__LH($lonS}gW?mgm>db}k@OJwEe1y#4a*L>iW1^r;A#&lZ~J174?W&8#x} zbv#aJFHHl0S_8M5J#$oh9sm_94-!c`24UtlemoPx1I{+1^7_tARm9YVg`J~=oks8W zp`n4Biuypm>n&;S$3uNSLu17iGjH|qLmMW{6$+!do1&jylJlI&> zH(!JUem^~F=y_-u1pv6sQW*Svd>f8^D>oCT-?Vp|zJ5O0MaASspBE6q zd6MNd+_3d^Gh^m3P^dW5rI}6ncDIPaP02Wmn;r}?odhOIGN34GXmwTI7K|KhSv+iB z5R0^P*7J~SAK(4-pa=GT75Eu&E$j^|HQ4OTYYPR~kfXc9E>`6d2s#Y;-1+H2R3O8} zy}-$&ITPAi?LM!k%K6=)m*s?oP`*-NVwe4EdjIC($B@&%uH8!=UB1PT!;rn*)hG1c zTU%SM-M3JEZB?T!W6f~zO5oL;S*@%gsd4uSI=^Sno}Hbo1KioXd39eOGPJ5%AG^OV`_Gp}9X^$7S4ShN9+dn=KJ5Yg$@bcuc{o9w?6tIp%H8Var&+ zwnV$$YLfSo?S0#ef2&CV*j1EByaCv#Ke2?LPc%+{P%(@qz4;uUl6lS-3JNG)a}(Yz zNMu!om&;Q21x~ z^+@(DV=}Xt?56@`E0(l6m|D;5S;?30z_6G=W*Fp)A>IM9aSt<45nv{bm8GMl2mb}3 zOl30a2yLafC#A=d_E)SxCM?k8spo~Ce)B)26z78>?a}B{GyfyAxD#7)FpojK<-e#i zI;*=_IiG4ig@`gHRj>r*dsgO*2=mJqc7g(Q^3gC9#fFRAp3TuDI)G0n1hle5teL|%!0&ovcdLa}srYFzi3L^BR2yCpUAzYs>OEL( zXXr+7NBbhxWXBpLdGPeakB&m{l!m!6ikyV zDr#A%kH8W1H;yHdPL2$czT2t|61T|E%q!=~R1DiXQ%qp0-(;YISMSJ%`(M$WR&QT@ ze7t;kGtfI3az2m2ACsa8+)mtSTyE*3)33SGUem8taT2~g^%WMUt(|bE2$(20qh%R$ z*Ox^ZK&wfX$I(LKCpb!@c9-db5)yDiR@SXjqS;6YhCBdjAzTHGzTq0zx!1;HIaC0#8m!Yk=Ux^_d$D?!g2)0>r2fa8J z8DBbc_g^^p>*2o>EQGI{LqRJS30o81niv@eP^AOvj80950qJ|~{gQXmt;ssyyj)0D z9}tg7YUY^~PbyCPk1EL-{X^wqRpqqmL{e|h+dF$SwEdl$bQ#b93d;%)sdW;~q85!}>BGXx*&H2;T&en<6y;Z3tubWGx-4^$S z(Dp@*mGPB3!{az)p7fxZgP}RZ$tUcaH_Md4os+r=KKX=Ez&Gd= z9QO37Rf&+4a<`IgDR5pkRs{WIR?3A<>wXII$n^M(`|+B~m==B*vLIuKag%caqz$hz z3&KwpRe8>1;>S6jUFR7thFchD3QknxJ699d74+x90uMusPn%SIyP_ghS++dN2#;BN zmoDpWSS@5z@0z{M==CZU>(y+<@iObR_q_V(sxNzV9;jqtoD1L(0n+Fb;%zQHg zEx8Fmj`9G+5b^kL(ShezueR~2^Cx|-*&D7qr_Sw*@dpiwevZno?*Vnj01v;z4FWVD z`sNId?#Lys&Kzt#`V1sMK^uP_eePD`y6|O@lw8xEbR>i8DXV=lKh{@R{@SAtBF=uc2rx!fz%}9kb?(@goPP%%K6b$iN+tP z#5e87p41?~>n(fpJQ^h4JTi81F|?HZIo${-L7bT}j`y(vdV3|2*u@<{6ZY%0odX6# z^Hh&CJUcC&{m7{NM9QcHv^ym9##vm5aJ?x^JU-pq-?fhPUrmU!HBMJXY&o z@)F>g4;UYf<8?M)G~82As1W~odRDDV#DN<5uhgVZR2s~3x$){~>AlP@xkHhvI!sB+ z@|Mw=1Ewk#eGlgLF&)f8_$Riqwo9PI$spNV+MZN7G_)1w@RmE>oA5})c{S#M;BfUQ z={4cCS?;ez5Y%?#Z{_4A^{x+6t=;B18dw;Pyiu>>L9B?AZ9twTR-N#U8+OCFhq%qu z-{Zhl=oa;wH%L@T0(6XXd{o_CrfYQ`@arnYDKhE$lL8C{PuQGxS85vV7Au*55FKlBnDXDw3HDdKrr-v`!6Hu(d$Qd z_Ag*|2n2p)OO3OF%@NM)|HuqJVuYzD7!@EKu=ImIxqrw?Sk1W%Ix~f@Ur&zUcmUDb zHE=>O_OtZj@y-U?S%|_nX}xrAloq)1c8+HVe6nU7Z(Um~-c86IY>Yyd*^aOmX;Sf1 z*%cYA!dVHLeJM=*dMOHIFqkTKIbz8*aRd8n%w9It%HaQKI`4QY|NsA=b8H#sggQ1y z3d!DCaY#n8BYT|ey)%x8L&8y+8Oh$V9joj(=xv6BY)+0OJN&NC?{@q87q=UZb6wZ# z`FuR?cc!{2J%=K!Jqsh=lC;{$o+|lCkc}tH?;g_UGNW)DG!*>_`!;+b5QL(o1zA{V z-9QV7DfspTM>2z$3!c!FE~5v7x^pMuglEk1h`=b+bqE|DKW^DGk(<*>V1em~G5tptmPJaL1Y_7RFSGlTN+PliTI^6T1J!rQq znV$=YZqTh;YS18Fb$ZHVi{?dKk9wctv5mb_~Sa-pUX?U9|+cwt3>>3 z$*Czn@(*iK0G_V{tQ_W%{SCXa>3X*oNirjf?nhl$mq4>lR`0DEpi53QO!5D+00+A)BR0xP z)}lc5F=D~98LEb78#@TCi6N=Y|1Gy>jS%-;VniB85(y*#v;6D$oOqaZutK^R2f)by zCxoS&A&xLyGI7q|3&(z3Domf4D8fxf`Qiv4k_IHf56apnYiPfy?J`LySeSVb-oA^N!Q^~$YlWKyAl;d zR_)K#CxTFc%3V20I1ik9uMdZ4`fx-uah@U5wd(Qze7HUzy1K%-8I&9ZihzzDU;oMa z@J+EUJtL9f{T3Atu0QRT){%jF=iUnIAJUzC8i&`zw{Wg5Y&FfN3W(^nKW7mUa_ztn z`8XWJUDHfl51%ESH_7My^lf!-KDXP7v$OrX9s1g%eu)cH`iMP{htBDJ#&t?mlE#4t zM>aHhV0GI+EF>iK>eONyh;2T37&F)1jd3=vr=;F`3buob%iUKr6P3bbYV2TnVjM*3^=45VA z6*JPfA>v)+DLh=jU|beSP8YlJv27F#8-%NNLqR+%7bef0$w74Jx{jD=C_QVtQLwBflyI!Uy+A>2Jf85=OtR-m)XVZz6Bgyi zJc(cSG%UORrbN2P9-G}kI%*)ruAKgs+v=gJ<(*A5;S>WPwZq5PJVy0t>k4hridEEB8E!SAKIpv4pn?W+Fn{f)Y z(?_=`Y&HEIkq@7|q8*ZaNa>pLv9FYr7*+bxLa2cn8KZV@x%A%hVRh5o;6|hB*n->6 zC~1HPq)H_lhl_blnN%=pDcgRRrGR#1Klx0_hyMv0tu+o{H?M=UN2MJQI~y7a;Axt9 zI&-%=T0w#=BWQ4BO`G;LTiLUwUrCR*c7m9eYIXxT&o7Dj{VWK-px0qxz92Nw`tvYINW;^>`CSBCPO6Lgl~+ChbwuIGc9iM`L17{H?d{KR%} zp%%by;Eud%4rsUgi=6d3&-hPbOlZ1U3DKD&sxf_fwvfxU*&cRr#sa%KU%J}eZvJ_m zx0(m+?F0eU_RS#S&&ABF0G|=V+t9pSWMrl2@MmG7!ovu7tQ{QSm+F{)50G_N z2|x31wYuy0zsbwv5;*YAMEEX{BF|Tc=a2I+AJU~`#*aALAB^hkx;t%r@TDC&Nl(p)={FravngB3ap>^l$93^&~KaH&CRopxcpbf)e$JoWs}aen z8WiGxp2=S!Cl@u>BC>g4?kG9tC+!c+J@AzyMvVp4t5Tw?sp;*NHG6vls|Kd#0FC4@ zwAG_+airfzF>g#%RJ4v}E0EI*;JEMp*S^6&c9vFBvRUooH@cVZroCj7%T4I0BnAVK zpVj@~o%6*J&-CMYCwDbnLA~aXOzqLuc;5b}-xTg01a1L>@Lk^y>oMZL+9i^5Z3;=F_H$sh>Bh#MAcwUhvz*Y-qcfLKb zIWsd8($?X&FT7%S*BgwkEhyev5uO`rg|H^-U!Nc3{DpqK4w)lpLZu?Fk>9Ok*3N`-`h_Rd6 z?&?sy>N4eqMt90f3xfxZ?%i8j3@fI!wt;__oug{!!Z8qvw*?l$66^9dE;K-KklFZk zrVGrtD)0yniBqL><}hT>CiQfv1CEcyGc-HcOU>Qzx(V=dxr$T?7K6#;1aAs_Aq*Eh zj(svQlb;l5lY%IqTKmdY`JW)145B&}%euD+;^!j|yvE#d#0P4KV)=o@CuSg##;)l( zUmp4;eQI?R`E)9Qr|hhD3qQaJQIln{T}RWFzkO!)jv_(OzVZc9RVoFV`qb`rd%A1w z{TtWuxh5k*o$dXZEIE3;SY?ZFVm1s!SDVp9B5g>gZStFavd;Mq29GZcek6U_F?OC} zJ$!9#&CZ85zLm{NBVfQI95|DFw_l{NTQ5O8&7{~x#Ju;O$$;aVYZRKT&yF6@o7}3G zEoCtITGP+PL{DiC?2hjV(Z2nWdacx0nGa!D*vng(GS?d(*%P0G7k1OEcwymatNK`+ z+W7<&#Z>T?lJ;p?(FjO0V8M9w^UIC4W22iaM$O9!a5byoRs%bCq2+Ic(w9hs1imP9 zu$mZB#$G+)d>sl6H%Uw{J1Bg6`_c_mVEw&strR$mT;FiUk$y=_J z$R{B|m})Ng5DaRCrr}9p^6|kP%flZwXwZXpjtGFDODm^EVYyeRzT3EO5{%{)sQq|4 z;Kx9-SKMkL_k6?oi7cDF2PRdL7b7%D$wIfWK~2df))=0CX8Qg0Q^Ho6qY+5WDhGtQ zt_s#5b7WwNN$RFs;leUYl)bA&n8KzRPJYf+2MPUDy3|YLW;}U;y|qBR7LgM{m&h~O zc2`P534CQOtB)U1@dWg9dF3Moav5 zkj>1Y_pFBuyX3VGmzV1YyMYHUfBX)XySQ8ju8Z@#H)a8Z*iu)RjBoeT`$-Oo6YV@| z?DHmRGkYpVGm4ztsy`1ee8W}z5;#Cd1HvE;mcr8hagJu(?Ov!obzOY+QpAKzAgw}S zlgC-H3jrXC&aZ2hS*5LSj?K7a&1V3lBq_bUbV7vf7kHnCk+)G0 zFb7UE1Iq3Iz4l!h`=ZBdBfpYD1Xl-U)_rk$0Cg@eS6SY9^i<}}&#!SI>1sVASu;Ky zPUiESKlYAMlpDl0WhJExg9txq$+Dcgz=hZRw(PSRAZId|*Vi%EBTPQW5N8*;=&wG} z+vL$qIGS6+loH#Z5Gq=ZOatUjp2}vJq|HntQD*q_zkjD`vc#X>JO%So!13Y3!DX;q zVaNT>WV0s~Dm+Nb&7#WT{aTe@$$IR!h*i47KslvYC!B8cgWu4Nc~2bS9m2HG(M>&Q zVXxQ)?6>JHr#P~jrDKWE^gU)y$(?N*|08|JC0 zB18)gKkkjky(8_%LLuuPbX?o1dmAVhVPwG0jOG!o)?gJoxj#SMZ8Y_Y8=+i0-{kWr zCRT+PRezp*R&{ojmL;PlA;i%e-QHn}qt@5-K0LjW~>;#X=}4{e5{MQlA}VBq_-#{!(ul%Q^(OPYPwrXO%@! zJrs9RH8K;Eg=$LF8(JpB)gpYY*a3QY&4Hr20fRHOs(YYUU{~anI~m-dQWW^l640VS zFZ^f^rq0O(wk(2f1{A)UbR5mQP(w1HWoC|Cc%PUP{hC}G(i%vXP?K*~{vUKZa_oiO1(=!r?TyaIub zufDDDrq{vZ)s?t@8}1gLB;Ud#Hji;|H)kmL({twZTN=&{;Fccwr6@;ZOB&b%J#3#) zRBOz5K?RwQ39a+m?F_Y7DG-eJO(z5DDbN19zTPjp@0Iry?u=pm0{JM6CA-r=U#)op zlT=43zm6iJ>yDx8k( zcjdGYOO;~{ztn3wjQs0I%SYdrQ9d=@Uv%kNtbosul=E3RtK7Oh#B0PvHgzIX5fLpMCJRsiQ zN5!fJoe>++oIrFMoaYc!@EbO|Je;vHVZqHxlJ>atS3hj}a@7Dj8H`8?QBj0r6&R+D z9;jR%K1{5;8uQ$0Gfea8Z2KB2cN~7^GP7k5K~K3J9;T;D;Pq%~t!wh~xQ%Fe$*Jgh z0epw>u;S*#;pDVYD;e_~GXp zKZ0g=vt@5|8}68e&n)OvOu62#y!t7jmo>n8Oa-d9aGJxnni zeQNn3X4{Yz=5}Zu@L;bMKWnd4^9D2-eyc zGu&6ghA_Z$)>&n=(e55N52$n-xRygZs%MBb`pG53=F$TR=YXc*C49)XnE(vh46Xfg zX-JF}`1xeBAcDJ0#pH!sTf`NhZI=qNqKaQQ3{}kK&Q(ijO*|T5FMX z1<`=_I#pKEd*b~9#WNL@mbchF*M~h-0MY>JKE<9&jLGwEKn(>ctO%J{0Re;V{CENHUxqUl*mA>z>rqjLZrUvV zW!GE;T7Rg#Ui2-r?Bg7dhXhLp$R48~eA46#2r}Y6RJ*P&bGg69xOuXPExgGBM`%t8O;+CAB$(0fngY z%*qx6xcMRtA{mwN>BVEPd(Vd;-4QH+c06cDzCqnUJ&@(`6pd}eR<&o8%edXnyq}G$ zR{&iL-F){&E&K8%n|%Pd;#M6wDb$@#DxgP*O+EQT^pfK%m|nDe>5k%NCozzSca?rR zH4&_ocjqOAe1T(`Ui)*;r@i5;p4iMU=6z_(hCcq=-!+(DI~pWMDM~Ri6=;BHW&^}w z4|K#$MXB9$IoXtYXqeFOm#$UPk~I+C0g;%LVa0n6_&$pSR`2@z#`UgeM)&&jk!AAs zQ&UiCtv-%hl&VVw3F6LGt!b9mGALFya`!XNChvt9e5Ax1{MJf><3B{vJ&1Z@PYIKh zEfAp$id`lFc>2&-Hdn^)=#k2-vJ4!R@omg6-dp+{iXhwfMNc^ne)T&}Wvaezd$`PO ziYpPaqc;m`g4DGBkp`C&6Pc_7)m1Koe~IC1pX2 zET4T9KlZblc~;04I)Qom^z$Iu6V` zHAi<-;~lk$N!0hL`x0QCtf|bVjlxoUsPKKDAoMc6?(SMq%L86qZnke+7;;`zL zbG~N*^DH%JXljbCDC9G>G5aVK^keG=OwXXe`)4HuwLH%Qv75HP(G?LBj97MWzZ%OmS)+t{DhM@RC7MBNtzg{t!)$M15~$ijr9!MlzL?zvrV`Y4Z`c}?)z@=z z!b67(po|E9=VcBi_u+L|OYxq{P&Oo;R$zN-5^V95yXe zm>k0^3Y+ei(Ruc6M=io-Ar(6Nr1`dUA5oqPuF>v8(3DfR)=U zO8f6nT;qRSjnJv~OrqW~5Ct)G#1UfOHN{;JF2yzl#bVx>_QXPgDL5dq4Gt3?Se-wA zQ6=3sdrWwjez5%wY!rtC@_Gz$7oQ!;&3ZRQ8Kbri|F)6hW&x#NP~^Y;9>Oz$%&6C8 zj#g=XM?j(eL$&;7^=smxg$dA+k-FEM9xDdZN0l!Ml@mNm$}6UX`jq=F_r=Lnm+qh* z3wi)?iXGiAQ~Yq=5D*kAaZg&KV%@h@cV<8Aa_ijKPu@mNa%U2hey{HE+=wLny!Cu!wK+&Dp_QXPtW`kLK>N@iBqLTT3l?X)#Z<%XF~S zU7VUm)*FJJfdQE{CCQ!F(uob`j0XV`FYdQ}oml0I)3Z)fi3p<#Iz76_n|$D}+@Y+v z5FQ?eDr^_d8vgTFjE=KE|KOh$(4who%Ek=%aNw$$u;W$sTC4u}367xSd9Ev4i(+A? z_p&hv@k4499WV1OB_8MIUDL^em-}lMM#{i2Dj(hiY{!}q> z!nM)06bs;8JFJZ`9`tyv!|yZgXQa!svyQ#<-H4m=mSgp-N-9eJE*YDrtE=rcU4cu6 z1KVL8!u)`>V3C`I`6{(}d_04Tdx6q?-+F_|Y>E)^emJE6&-X+sn0%TdLUe*RN>=(k zA=&!j^-K0Ek964`d#9KQl7cjnlJ>tmF%mVj8>(y0g}mv+WR=T+r&ZJ0cHvgC^kfK4 z1`{+CBVb62MNm1~Ch>|lD;iN1fOruKa&7U{Y`Do*?WQ?rX9mztaWyShV&(3mDe7Kv z7U-Y(mxCi%=J(I&va`zW^JdUO?^(Q#k4G5&zP(pYs>(2fMgi1jT=(BfrNukVTjh=qIv!QhrRaU>XsF4iL&v>&r&WMaj{w7SyRkzi^81v%*g49-ElCd8$NOc2K+ zZQpUKOBU6e_E3EUOI?WOeK|EIrTkD+4TSryF)~O{PZZZgsHwx;hW&!sEouxP(1t-xpRZFa({Yxo>fAjh3Rm{G9@; z-E%F)hEg~g>|kfSEjt?|3|E7gZETSm69iM$@9ks_wLH&W$YdSQ5a;15XeAG#qIj;+ zSAZ_%qNZc1Pka*3tC!@_BwNJ=HHY%RlVZwR7XV?jXWgG@d@T8>w)6_m25 zOZN@a3mp8c$blOLvv?}2rau$kG=x564+Cu|E9ht=fBwarY3F)tCNG~{Cc7(`pK*j? zmQ8^UW1TfWl#-A29k1kPSvo58_;&-Vv@rSr_4pmLByW@SYgxy{2Z?2SYT7hj%oL~0 z?^rjS{pg2Yt2b#|j_}1zfG6{M>TQzJX7s0~>d19|BYFH9d z-FV~u>UIaS5Bh3>#JPO9tF##wdDZegOD#ctZs_APM&1}ZcxS}Lf3`7#MFiB<;cz{s z(YO5vBu!!_bhTx)6~L`#{cvsEX(O$M0j6n{h4Y)?w7ioRoAM=6K(K`pW2b4a+N)e- zx5W@=m6w`LuALloY*L6aXC$Pw0oS4>QkoNMjafvPr5B~dnOyh>Ws$CbD^_bEtN`GS z5GY!N%KYC}RoH4~_xJ^}-MVCT-x&qmNCv%IErF4-E4EW#yq|w;h6tE+4JCLo<8dM( zi-T?4D*#?4CrJZ%iU|M^&u&$w8V_XWN$cDDyQ`B~33$)*-@nnGAgDS})UoLd8)}tl z>h6h<4L>#9_{GDqa#_on?v$z1`M685i{t2+y9D+o{UBs(71eRO8v(d)mG@KYg(dV^ z%Y`1~rth}{)p?+Wzhg+0NZ#PyB%&HA8z9fJ0>U1n-P9GaY- zxy^<3>M}X9N+$a-BB)tDak$cCJRBYie0PG_Ne|&-qG#2qJ?-<~@T>G1(Rib(dc@yw z6+I@&y`Uf(d5@!#eTC#P#Y=08_a>q!Q3=KQ)&}L}Ev)(Rsn=T&1$SXn z76u&X7(oGqaCQI4a&D1@IN7hW^0uAm>-JHn#m4Fm8&A|m19Wu~In%hNg<_B^KBCBy~CO zjXIfrR%VvDiTcVj3x&x3cT$UjZ8%c{*W3T*fB)JnXfk3(}9*q@bkwVcOdi85}u+%E|MpR5<^P&fzg)c1L{p|vloC^Hg zv$=7$nY>^%g={x?#m$vVI+{;0oS`2ZOCD$*u!GO}w(3MquJVzB*IBx5}qjZFU#5btb1Tlf3HMIJax| zKZQ0i06rbA9lmt6F1nOO|G%vDMFj3eq|$W*vd$K_YNvL~0UvU7NUqJ&(&Exm{MPz< z(K}zoT&Pd8Qsr6aw1VF2wyF(^*r`Aq3)UyoVd*eDs7qx~*8G3WtXtLq1ZpB2)9|Aj zk~(nWe>Iu^Y$vUS*hVV0yRd{mnsPGV2q6JV$PE|yl8J5qt+v_rIv_V)%?Eq48r)$$ ze;`k%E;vjiR$zWL+x)6uc;q?g#rBPk(UED6>A~iW)zpQyA+l5C)WCrz3*fyJd9Kk|G74X z2Db$br4H|hv9zTSJ+o{)1E`k*1EhB@PL*SL5P*s7lz6ZoY-}QqQ&C*| zP&4CJ78=wX84~in>ngD0F+kT1IzLZNJ~*^^bc>z<+{zS^NS*V$Bkq!w8^iueHoy=o zBA{7?BkIEJoB8%|J+cv9k)GS#?xSAp9_N7 znEolUE#$zmeGI`M6q>wJedaK}T}P*^5hV__O8YObCjB@$dGgg^?RC5<7}Qqn_k>(C z$ew7QhmfF>G@_Ww;y05HF!M0Jnz#Rk>;q#HEZzfhfjnweWcgDAI}~}6ID#BYM=J;e zm%YWjL`T?PH(__v$Yv-hBYP%pwp+ge(sb>M`}k4(=J$rl6a);Dfn$oAjHwOg4|+~T zemn3E-J6k{WCzR+9B1Q!65%sdBedAe0l39i-@B}FlQ5WB$}J!w6|noBE!Iw&j-;$l zXc&=af;pHVMNGUXq%_q_`$h^4e1<$vwnW4r(j)*QNL0MX++uZegOXMkBg>^NHk>H# z-Q6wNt2w7;OPj${5SJQ|dou{#zw!zFG}2mJrG#Cp6x3X4dJS2y<2v;UhMtofBlNmf z6=7&E7mgsH&$8LhWF$C9N#8QTume2xbUkbW@fujGNsL3YDevZBva!MA;lkJ4@ z`ss2Yd?w0$^HYE~g`D1x2Gi#(5inBg7Qe7rhO z$AJY^y{QhKQ6(nPk;BHLVCY#GysjK9FphV&G#O993V2WaAP9YAf4B(sx>0XB^a_f6 z_o;0V-${b1&(_SG6N-rnfqn)$|(VzO0cKhc|C~zX~zWsGDcB zDgbiBeUpcRNb8!|u8Xso-OveC04BJ(%j^Q{XT8CJU_Utx)9k$nWinLJ2T~|Aevw5` zU<)djNNP9-$*nNm0M;)GVM=J-^#@gPylx_W$(Y{;8ayf&?&|_hKWq=6al)-oqVmKES0iI0tH=r?zFZ1Fmi~E!*L20N+{J_P?BU zmqGj|G)O$$A+5?qgoR-Se|qP`7eca%Er=*wL_}B;N5sDq-bT;nirrcvp@CJmDyI%s zwr?*i(q>lAiTj*i;_L?!~W8P~z2V#{@bi~6axrO`w3js=%fjG`Fqq|vg zb}hIUErbi*>>g`6ISSjk-5`BYo6!MDP%nIsL?Wpuvprj`1)x{wXY~nl07wwmGceHl z&IxV}oN3C-@yn+t!I2%EmIHnVdDW&B1kZ`lIOtd4=n&BkpeB2M0=oukZ?1GFb7RKx zP}Ulqp~wrO&HRfE-_{Qzo9Drit%;il59xqVChkRj|9eD;wM@mKXY-4YwyRCAij)4~ ztv)G=JFaTdGHU+RAh;Nhyab4c6(q+NRrW&NiU|Q`Z@K&L7u|l~*Cuv0Q0e}#h58U^ zr@9=l0iZTs4)&zjLwGbxU8^ZIM!8FvfptWsY{zL}*6rrB-C>W&bo=HVrU49Ts!|*4 zZlckvt6RB!)c(_dvSa-a{1Oq|V)Yam<5@+v0f!p2qgX(ypWx;!EbSlNtCUXkeG^Q5 z$o-;CWih6*T@-HSzsF}q7Pl0u)uJq^$-q1c;E*blSLp9=>Y`qfpdTiK>OVT=8cmEiFMDO)??muTARXB!~3}Gfcc5efe z9eR8Nt={~8~H>y4V_+6!$B)l^`RM6jS zO=?UEFdx*pMd7^%1L?6U@oCcCpe73qxZ|Uy*)CYOva1{vw7){ao3C^)PJdaBhz=*C zutycMKW(d`B2dJ`1Y08KyyI&rmU*sAl8Imc+;(4FtPXZJ9tZie3I6ZwPCI@_kq5zh z_x`!Q5SLg1^kqRNMfYtk8jm?7HLpZgw4@K%+l0*4xs6OylI*2^L?T~Z1p%#2A2t^o znn$LAfJ{=lK|tt@Ku>3{-e z-n032@6=?142@Zp$rSyEg~W{PL$2>MWHRkGE9|rEgh!3G6>2oSFy53On~A^sD`WFq zxe5c>O|ab@YTjpF{A*(x^-InMF7!^KmA%6^TzI6DLT@S zeZ}WbQ% zBM@(9{K8*YZAhfknE-=Q>&UQ-AHe)rre`O#;}Xa-11^T@AY2Y6aiVX8Yfl8YGGpEw z=AQupn?sUkS9Y5GrsCKEa2Q`*4WF25Jr|>6WDLRxAVyk#06m`sV+wTlzIXGLX`UJn zYSCQ=h--H(sVFaIXR;T{DTasS77O-c2CeddpLyTk8d>53{L1uN_s0&TMlaX2#FC42 z9IDb@;3vYAlgpLIk_G+KUBV(GMFRp_EzdLl7>;e$m#39{9g*K`ZkDC{=iS16#sw>J zQOF&QI|qbbTE=Mx6)|ulZRQ@uvGn1VIXWEho4gCj90sODe}lX7MAAcY!<$up$pE*I z)!ot}Pirm#Z^7XY2NL)Sd|>1(K@*0`#*;{%xgzyAhvoC0Xq^5`YXb1Hq?c^At(o>z znO5uu0s`-Jrzqr7u1)_iQ0RBbnkF7bylBZC7+(LZ8Mt{Yn|)1yE`Yy5Kc7=4?iB{<`Mqc&AES1Ohyb`-L%HB z5GLBV2pR{*RloMhObZdT@4nY60D8=yZde;k!Kf$MJ)*^HoBiUchtB|L1FrgI=!xp5 zPf=92$i3LBO-EqAH^ubtzATHGed*lZ!Pg-j1lr zoHyor#u`JYs^n4+#Z1dvr!8u9GK*Uq49nlRS$yBtW}sze6_OVybz(B`QIAK8YkERq z2K7xR9^i0*hswp%a2=D$dtIBy*j{yQL*hX(>JOq@6^^{-0|EWB&Op5 zNctNa8Q+D(pnt8PW1$P}9*xfysg^2hf8KZn?xn=Aprf#$3feVEB{*NhxV)F5k3~%7ENbfXg%0ivGZgbLSWjS(XQb6sWqRKo2X@JOnG9X5$ zug`e}@Bi}d)mJ>|$RYMmkF+<|uYxXa+PlilXXMZ)fJ(6M;H%!GfZb?;7KM_XhVXl3@0 z7ivge>)99@5#f>}`>NrGJBd3`-2a{>Fj3ZuN#u2`22YaqC0U85t9AD+b%#OOpt$2_Ww%jXZzh%=(7uOrSR&b_8M%Y)FC zkSIQ%o2#iMf@5x0&)&OO`i{;JjkH}dMK+H=<#RB^^?VfO&s)@=Py|8|1Wz-!@bJjt zgFoxT>4Q<&jgSw;uN<^^fhWgqe@=kv#J&HMM6$~T($3oP;v`0#QwR{92Gv?K&L7?$ z1NNnqwIYE)k{adT7S_V1;C@^Ih+s_xaKt7XmGBVVUQ8PLztAnSvb`7i)TU6u!oiV7 z=NWg?q#~_qh2AHx^F$pIN;KcxF337K-@e#Bd!nt}$+?v5h5QL*4}c;#vqwiUHvx!+(5~W3`Thg1U_>fDk-zg(aY_fhHOXr5=bATc*!0edfAy zVm+tmA2mjNSpR#Jdp0Ep%<1cju4VlIruw?8Vst=$6sQ7WGa2KC*oV6&Lvr2l;t~dO zIU)z^b8T3c%!BsdgbPB?s+69`$^QC0kls9y(%&2=k)RD0)M|~w0lAwWiD$~Y&A`)% z5}tLGG>MR)$XS4;4AOju=U`sbg0eDcAx(A}V2SIEPtkeXd3j7czCp$hZwG;7f5&dW zl+lNRczKMZ1GSl zqG#Y!Vmuj{f?q$cu@xTYrNPL*9{npVe~o5GSU5jop|s7n&F8I+mKQsrR|jmEBMFb` zQKY=J=ScTIdId3ga}zSgVr0Iywn5SXk}ghI94qqp6(kz_1J9nnB2xU{pPOF$LdA2M z5B~c3(hrV+l48r}U`0?^ojl)bW0*?~CxLpjc+S3Y-uA$>vVg3dtOfSsR)DvdF%^Vi zvV_4w)!W|Ivo*!BSbnqoRVl^Sm?lp~a10Hn?mXM#h$2%N{x+q70<=rN zk?btS_^%$MJ-sCcciRzktajk*H%5M9(YC+v9mP8+YTIzFJd<>qV6ji8nay(d#WigC zOg_r&%ic2mjImFGP_HfYwOAZ~7-s>bz(XNvS%gCKEgF_uGJ$*^>NTWlFKB1FxN(D& z)|jesm>Du|fteklu662HC6W#% z`x>mhHbX9Vo0l@|=?FhPvnwJZ&+B$5)oiMo)x_@kiR%#HUr|bbak~V=`f`a?!o|<* zOG7upuW40a%8+ZFtNS3$JPxpVB`Ky06}7Dn9IgU1XutQOHeDWp=d1ftNq3Ue^I{RM zlqT2UuJ3EPrnA5Ns{5F0Rxvd(K_;2B3U}Zz%{di1B3MfB^@)v~eyC4c4U6;wJ#hmH z?i1US#h&6mRSLPHh$c1}px>COgDp2l3IJ2uIj?4W6bg3;?lLH(elWxv)6mt$UO(CX z*9RkB8F+4YvEhp0fH3w@I*j*e3reSd0OY$RE~AZFWt+s4%QG4MVbA8fh85qWHV)Q5 z7=DwFK5buXy3vKh@f8?;BNE-J{orTsOVZakPEId9xojGYCBArG9iE!grwIaGBI}ytpg5lo*=ziU ziX4II!(fo_6y6hc^2_=2PS47uq33=;V>w2R{q1N^zR7l(=779k;)rnZgugU41x5Z_7~pOcJERe}+h*f2trvdv=eK`Y_<7CM8BoAI3HO^V z@!S==TQR9)RX+V+03o7&$%}DjRqoZ0Nn~LBI79`;zPR+AwYJHFoW^xcfKpd)JsET6 zRa}-K)50jpF4w>{MJ8>uT{YxSnaHEs`@QkT6lGOwR+V81x!`AcwdmR#Q}}Vl`?Z$r zApu&1O+^!9lQi=*{xOY8wkPb%jUa_0>hZ$F1Wk;En{7G5mA14Wr2Vuie6o_}PS$tB zLLM{>h9!_-z9!yOkQC>_;_K82Jek4N=w)q&A~n^&vD;vf`W=M$!?968?A-@#L%uw= zEfk+Ko6zL-Lhdo(b{>TEQ9*qL$W_BU`mw`xm>B(Jz|eGshf3iyZ~2?k%Pc$~$|Pz+ zt(x@$p|{ob*Y%>UQQ6qX_fiY@UWS0~*qVH?kW{DRg|LD1sZtU^;2~IaGy+oIxN)Tq zkwzMuN&4&=SD33&d+sc(=p@o7LOzvC^6-9g0BMtJEu(G-NX-`L;QoF$kna^JF9cCn zd)lKkDDdoP{Ie!rHh4J>mdTUChgR^uIimZEGK0M>$zjrh-L^|wVvd}af>TJ&lqJY( z#74>u#bD;>YsM!do1sn0Fru{r{^fL8e!QpaZqObLu|y3^2fEao2gN6px&{2A>HUyX z`R15T8gzq-tSmJ{K;lz5hAkLr|NP6ZSgZlL5JIvKvrm~-xtxU&KeU^8w$^v6HwY4A zOG>kEc|#KgZ%yj&`cBx;Llc z3-MqFOG*aNBw(mlv>!8&3*{G+UI{?2=SNEi(Rc^CD*)baZzf6^wCPp0pQ=U+i*!^x zhVSL4GRe|X$&YNXQcV;e9ZK^<_aux1OyALmmVKWq`B`naf(+@;_rT3h@|=V9I`efy zgb$gtaS=Q!CCZqE`iCXFyTL>SpYVqAddw72x*h2sk`f7ltVhE7$Z z%*W4cpaek>MQ>s^8bVK^KuH@T{~U2bn0$qD=~HLy6N@*f^JLP0?|tWKVv&3`*8455 zF^kZCcvZbNGGbu#%k$RRGXrW;ya2Ch3JB!-N*o}pNHjVR$I^B8<2@nP7tPBS>b(H+ z0bhlVmuWoPu{PMthNm={yCh~0T z;z9E8)m7wW^GxdH=G8>iz{Kgp%Dk^kf<6@rwm+Lm(0W@flIEj1nI_V$d!tTknCwQ+*Om-y@x z4f=2m5y5SHZE|$cs&*TM&P~k}$Zne_ylt3&?L&zRTUe=tP5MYYUeyF}pzI&gI|vnx z%$x#=vUKwb3`a(p`lvFoh>IZ(>OEgWlC2QrNqs`cNSyk6;@|o~?Jtnw{_8$Nyeish zZ(7q%{pI?VP(#g$%>-%tAA0X!MPl?F$NWvef@)Ulo-Y}>Xc+b}7UnQewU}&u{c$t* zCU?M>IxpPne*CH7Cv5n9<&2wV`NZ$RkHiT%3NxIZI-T+1iu`7Xg&`B*o3*ZK1+s|| zxOq#@bfS}L??K2?0AV*Yvda<-WNDz^*HRS$%MawjuP!@O#}*})x7TwR z>ebcA8&kG6(*<;V&JT&=s`F`vjxM@7nNuTeo!fwb_5aay)?rP*@7v$TfYBS}NJ#~x z8$=jmAR-`L(lMnw6&Og2kWi#sa+H9ygwis?4enr1W`zf5-9cul+UHICkF` z=XIXv>$MYwmOn+14+yUv#rN9(GGE9c(40}zxCFmm(i2{Xb;N6%R*T=CeP~MuGfjJg z59OhdW!GeO=^>KA7!1~3b>c>U++PJ1jpt|X!P zNLW)HgLyBO_qw>Vkr8S&kc-36CcVDr_m zP8efO(k(@-=_4NFyK{RZmcOOsy}SQ=ti~`IV=^sAong)CSf)LYT;^P6U~>Xm!D-S+ zHu4pNquiv{d3eMJaJfR?tJved$wOq?Tu1%0SuMr#dc*=ntm5}F-*Y-9hfl)t{R{Uf zK*HrC>b1`5VlGmNQWf=rDVy`Juth{i`*rOYQN9XlUZKY*Ba}={UCs~~(j302cisP? zLUX9FHo^gH!Tj+pl+3Q80~d{pi8H7(k~8@9wujA)g${LKar$|15V}y1ivl_$Udfw? zKC=okl=Cr7J&?gY@w}G@2DdAtV4O20(cOOaw`MFlrU1ZEUvlCIk0iJ~cCh*3tA29F zM>jBmf{FI}>8Ke1D8&<3@x3!57KA0RbPgM&+V@~r=$-T(}OgyQo1 zDTC?yBY`@GR)CD}J4tLEQN6{p>$lq1fPFi}Vpo3=rM zyGPCdt2suXmdOK#864ksV0=WW@l$zj<2=W!c(0_%+Fh5Cg_Fn7tuw<&TIewgrn)&p zrw!bY$3ShymdTm06AxjJ{+vufP^7p?HC6SfuhZ;-o7Hj3PvQRhtDgiJbu9Jz_H6h8 zXx+Yu6!lZM@;o7}?{0C-f-uxCxD=-Lte*m_pE_&A6Aedm!De1N=%vl9{>N2!a3wjH z%3o^Xs_cwek8#vl_awD?Qu7|`U7qaE0S4+Wr|EL0{m6e;z%q~BY1N)I>ot39gq5_% z!rtm0$&R0X^ZOXDq7Rgtz?*?WdO_0D>pi_!z~wWY)#`f+oP)Ms;qcXOaAHsXOyBFNn{o&g|3+ z##=?z^wwrN_&Y*H8W@T1kBXFU6D%e==w+KT94y7R4%gORYX=v3b-nonv`#;VMdtK6 z#IJegS42IHnfv+g&+zqXcf>!dAy@9Z=1J+FE+YyLc0-rz3VXXj+p>E7 zK6kk3f#Z)I1_U+o?Q9DxzRyMO+O4T1oKGJerrJeb%@sxJE6EJ5jaB2HT1z0SEZgp? zi3?W3l?<5v%W7D@^o5iydig(9vQew2&V}`=7K}J>dTsuFJ1;i*vg;Zp?-!3CK-T6Q zzEIpV+m)!S47E;t1|aL2N!;6O)-zP$y>|fRE0ps{1@MtX^j?qSUH%cKa?sXwaR?A5 zmXB2Kmeub@z^ohQwzjrrgId5kj>W_SH$L;40s23-_iz(Gka+=GOgIO-a6qarUtA zIaz9aOq4-wRW2)H+(l^Y#gS-*n+TTRwi2C_LG54=oVcfr6cs_v#oO}5f#|E9gC$aM zIA}F@B1&5N?&cI!`r2eg5~w(jO@w*+?lBq2D~6zh$3wTPVA>cStF~6Y**_^vJpPZ3 z5;+q_I6L@kFf8f`+69izj~*8r9i^2%+g^L6Bb6J%1sS0r{8ifiD9i2VN_W;|T8)s_NM# zr7$-i>2OjKi$S8ZY{uXpRs(G6>gg8Ed^vZ}?X$0o3C6a{kK3u=)-p30 z@%WFHQ@?fx+`=V)Y6stjsUf@VuL#9~u1uW!kss{J)8@JPo{jkNQ z`jQOCsD$T2CR#6e1z>yfNn81kju@qq;FP*Vwn6KKyn%YD@}Z~s8ARO?7gjwSJtAEf z{z6gf4IE7!=v7bMLB&Pp$fIQ+M6V?{!#LL0oia?tPZ8UcZ7`Zm)1f7(X>={!5lgQ* zl^73VhQSwU;oOFa>``c0e@1^T|IO```58?*77(6~93z9GMqZa8p?IvW-=NT8-fNCu z$8DS0EF8ZB?a*q1b?EApKBw_K<4F7b9E@?Q;ov&(N~T3}az;^oGwed9H9JTd8S{X^ z4H2Fd+bgur#qaO!_4ao%N7dN3+qS@H@jEDs=U?^pQ3nQ|PX?lOv%w%m`?*$6-Im)o zy{OsL6q?c(#&-%SPz5cFk>ELLn)ekd=>dzo?*1%6T&W=fBfFm;O22^;N!W z{zUun&PpB|cn8EjPFIGGCf2fg7NLe7RCW=fUz)es(k;LdSC{N1|559`*VU~3(Dm~$ zcw3F>qs4P&&b*l5r&oucWqrFAAr_+)pzz*`J`qNAh^lJC+^#7p$4}>5(Z53mOQ5RC zUB=z`C{-=u$&+55wrWoxULVvI9{Ep5GZ`sFJi0veO_B06+jYnVKnD%J`PpY@_u@l= zs@7>)Fwp<0H+?5Ev}4hWcPc*%7^TO&|7FKLoR)nt7S?qJh%vjXSx;Dg{2IPnSP?5E z2>`^@BHoGJw+y5^+VSi7A8bpn*Q!n)+nPMBvIQ^8XtJtvqb{kiyznZ2cs=g@qNz#% zz&Oa6A0DRbGXq4Mm*G#}>Gd0&Ix)uGh}mr-j!7?whaxO9Q;%T!yNe=*oCnjx!%8te zU0i0a;T%7<+7w7XFn*u32K*+rCAVCdoWx)Y-Bq$h*Jvm|-ng|HF9!IZbHuGF7EW#*hh1&#s&8&w zq@M2nIlO!BbbMhYk#(p_KW*XkZlqYm=;MA6>BniKd%|POP1oF9W>(?3-8$FYD=bG^ z-_zU*U(TYG2Q{sF!U-^PCmlUHQ~XN}9q>D%@xdBV*z01J;mTcw;q?+z63LgWWW`=Pn?@y`-_ySsDd zfh5!<^Qt5*koCMGTnS#vFI;2Ju5it+*l9|F9dMHl-Y(kNF2A?7Ny%FT))!+<8NQiH z{4&u2_?NoPCRMqZ%#8L2zVdRi0%(Gi4Lz?Rj}{7xsdsjY`j3yz;n`c1dR?`uCcLr3}KC~>{zn^QMZ^1 zw-p1<(Rb|Y{L(5x{cP4Vx`w=zWHA(9Ii`Aj%>0hC zPjDUR@d=o+5Sg-xe}T;DthOv&X0?#Q1avdbHc_Y1F?s}Zf@(4V^%-;x?SLrC9)C-J z7a%!pgdKo_R@q`OP^ge3!2$O8u^Cjcq#4YY$eNwxFUxnjI%w04ClK(=6X6aV^R zL=Oftt(6DU4E4&so6{ESnVAac3b#b*seg*?GZ>+X>8n~O8!2&h;w3X6w~ro)q8do& zTpXaPS}JyqA!aWws-}x!W`^S=nI}3e0J`9RLKZ#*xDG*m2X2iZ+K?49Wt+25nhcBc zo9R0rzkZej7LGQZc*hH$2@o$XDP|2M$MAy$Z=(H6&qaBjn27zcaQU1|&3ZW#5)!Kr zdBXwFQWkkBaO_d>U#I;PZU&jXxhq3dM@CzE{^5mE^S0k+hs*?V7Mqa+sKeCaF8_kK z&n+G28^m4BRQhCQ)gxA16(MQ__bkB&)!bM8T-eW#904{IGy5gV_fvbG$&A@iFKc#& zY0j6TJ%^t$_sNE1LTAFm4aY83;@F?%m030S`E!qIq^~_hP9W^*QSOeEW>txIm_=?j zv2S+!{pQbHVfCBRclmtGeed3lAigA%L68dsGib{>zHFXRiBX#{rCqT_8FY)QK%`!1 z7gl_`u#4>GEc}iGxZ1!&tw3MzGM=(?QGD8HA4d324BUO-2^5l3c zzW`wKF}D_=O%&YW-MQ#h-UbvVq78 ziQ3=8*vAv$E8O8p>i>qqG4tWF&kldil+}AajAv}0->2`FBp3Jqm(-qEQ;KQemfi83AbT}5vCe%H87w>C_AqU{Sf4duI< zMs`oHA1n>LJuu&vq??wV^mIERae;Kl^8LMl*?w{0hOp?7P>t&n*U9r^lz7GcQHu7j z9v8=ATb46PyIzYbT){_gv#~(ymg+{+dbzfEjp^y{U$SB^)zDO(%ig^aPedRnZpihZ zi}Gz1z#_!|wkD`~S!i34xKHpjzLqQd%F>3mZ!`%&8^0KPE4n7Vbg*_7RB&H@^+Nh@ zNTmDu$!>$)R_Mf-wElE>JN=rT|LC-HIk1OjR_K?dpT_+Fb`$5v)Sv$SJ=9qIyelU? zTRU_d{_l5yz|f)JG++PWRLgh>VDUV@nXNnLzIeTJp&mG%H@-sw=V12HuXmAOueX8# zY-!sMZ_=!Mxk=`wQ|{^3_|efd9)Kt@Od7^E`v%WS)Ak2)>RW=wsVd*S3x6kLw0!EH z6Yoleq$g=ibUeSqr=WMVF?O`^S<;`W|L6!H*-K1&2o?oBJUc&*y!sK@-5n9R{|axlw+j91fY~tXOL& zhFVrArS|(=k5iKHZyjtxcINUZrmF>I6Q8J#H|MgRZd4Cz7NUB0!AU@3y;etM){W5Jp~(S#xTILc}aFx1+Oz zEIXmA;~Awa-&RZ%o;a0ect-$=HVFJ39|U=pGegTsj@@(tET_q99xEe_9}Y&`=_%ZD zm*{AtAmledl6*lvwYTiwWxRVlc7X5^_b>bvo@)qF#68Qw9m-Dj%XT=BPDrf`yn>X0 z3Wr~OlK1M%4yd&^Q`(W&i0c2G|`kMm|z7k5>`Arwg7t!VnEU|DSX9~=w z#UdvN&i(;KXIS<2k%GSzo>%1{m=f~)ZYc+NAqvb@i>5}X&#=zsUk?a1eM8+u0p+J1 zpdWe_Mi-Mxbu(1&a;Es-nx%0PGK8}XhUi;_lbPBIN|z|B?uh*yUc9hG%tg8cH|Wtn z`Y_po^$`%z3JMOWeZ-Bvf$KxSS;(zBnjC0Xe6P>c_Fr?G!QZ4)d}Zgs4~;F2dP#!F?tz?bW8gSW(C2CJ7)lqwlsFF(-^OF32P@nInfTjsAQYf2+XV z{=a8ePbcq7HQxxT38Yzeu*?jdIKE@Oxgo!NasQ!`G|O#i-L?9R@{Eh{{EF)C3hGA` zASqz(v-*6oAJj5mo|+UL5AUkKy?3KB{z>OE!GT3R)BO_Vy+MwlvLOl44mT7NxzQ zF7^kZYIg9BA9GQXlVitEd1HDa`)1<~>9@Q30iC8Y1NcRBv<3i2-u23{4M!`ZxqW@v z`yIAa0F41q9!OjjuBFJ&yZc9NS(+|D`BeS|;HZ(X!zs%0CJo&H5}JYJWl9pfv9n>} zJIY0d817^j zbd)*-Anr!osAtCnZ&E;aVdaI7g*PeVmm+a3;I^GU>8g_|j@4!{F*lkS{XjPgY%?g; znMTPk1A}h&32RYDDOpj-jASl?-c%gA{gDtTjV`ySe~t>4JDQYZfnieq2;WtB*%>6t zgTcck-4RM%*d4T^r#x9AuvNW7?gH)5pz<$ik6OU`u0G$nYJPDI4px`kqV^*Sow z$j?9Csv0dBAo1%SSRk&|^P)8_vQES~@zvKm_w=+CnJ6$GovlsGrJ4?w7=9&xs)3~! zqLyP@y>ezo@kzo)$x+q%$2)u4EV~z3oVSi3VnY>xbt(ZrgdfbarL?&`dLxvd1x$~B5TooGZ~tJ4_Ju4 zqxAE&eZPXt1>Y{Ky1WWQ1t!C}ZEBF|(3*h-8QEs8ns1fT_~6?rQzV?xpYLuxe$}H; zFE+nV$=;sN%-&D(WvO!2_<^yHRPkLa7=P#N)g1`^KsrFmCPL2@>m!F+!IC^BFa3|J z5KL11>{19sY{f2HwR?L4c;PyoO$?mOUvd&F_XTXSi>!HsX7=%?kUZiUEJJJV8qR)e zTrj6P_?>;`IL>Gof=NM4z1N*e^v4`o#UOy*k;e1T9JS}yqtb*v*Wb)mLZ;1e{B!Wu z@F%NezdY@X$EUANemyiqnf=Gh?q9IWr+SPX63ry}47s zph11G_D1x6P8OeI(aIB$Pb}eU?aoB*N`wBjhTBT@wly9+7=Nhffiv+j8n>w}cU^zbCztwcH&f{P~;A(qGxxr^a@e>d9Mg!o$Po12L9W2wd-6 ze0a?jk4OHLS-X794X5DIs7o`Fi}hR%)br>xbw&fVO3U8C7z5VBp@hd1G)r+VmVl@b zaQ*M`kAH-E0N8STczALi@ya#y?=NPjm;S&e>%cb4K0C)4>d#}_au}l0dEwSV%{vHi z%?$^>%6B}0Idt3h7N}*qR7dVOWZN!J?zTL=GUd<)B+=vJC({ApB-7)OvwdCK@a0Ol z)-@0h%DlWUZ+tUAdAz^f>R4~?_x(r}fE%`o%mx4&$6ovEfl|E(+}ZQ{e%IUh{h_#{ zGfpEF)$3$2si|W{k$*epJz7bgtfNOjAW;L>KRqRz0O5DEb(!kmv8ohI?U_Z~n)3wS_=iU}1e$7h$Zl z^6J}(^umM!rOW2k-w;*1MLhnzCsOH-O|FFtL)R5H@~d4#Fm|EVY%SKUR@QiF;oV6yuj18T?F=ecVTmWovpo2`u>(A zF~%3_JLihbI_uHN%SPk#{ez7CHGj*`T6$Vw7Rbmn^s+l|OZ#~^k%4}>78;m_e<|T+ zpyI<+JSen|4a0Srz0zKM#7nqk+xVtEw?oMRlsr)Kl^+SYsih5&SUh#~rUyo_${Q}} zg7zcITOP)v)6x%2MP3F9cUVyo(lb_i3(|JmV?>-Q%xeCGehieYH@RbM;?o>I#uGCo zs|RD4*(75T~;B52bYDv0C zXAbTkzmd5}C(W)m_vLCO8JkKPyGnq2U9JS8dMgq5D%JNl>P}m{4U>f%c8kO#@{x<& z)i*+t?@=Kj{x6LH*-_`u7h>~HQ0IbL-8BKrMP$006KyO$O;;UWd+rEYnXYrP zPxhkaOpswmoKNvgTf2- zL06d5-+f?2MuEno&?qu`lbMlmINM_S{hhjBuNY!>rmeA(uDw!Bbq60@+uhgrg6{Y7VvES75%SkZ)v6Rdui@`+S5 zYMt;XzC=hFNnR`cnTYo8`Tt&k5az}x5q93tJE(MZQ(Y~Id9X^HiFxQwzZ57hv`{o3)Yt!29zvunpKH%WPja#3N1VsPuSyut&+?8X z=55kx!OyP`2K5zh>$NF+Dd^3)r$@A$T?M1o$FZ}rD1i&f?ZP{#bg zbOQ+-k-~z$KP%*#cYP>v`(bhljT?`#BPQLWvzwKK-9S4X%Z8c^9)N<7N)r5h#8FCE z8V2WxfV)n%Acv`^ZS}jGO1*zWijHO)zWTCp1z7$Plh9ip_}hleg`>+pFH+U+<{k$b zrw)QIeH7P2FSA0-Mvstr2V+?hrUwd>O670VxUr4$n&!K6H4>ARf2P7wF@SqRwJF{) z%D#8`!Pp04Js|rp2J7X4Mp{x_4H75D1RPs_)w5h~sEmA!J3K#(VBiIS4yL3L<&)IYeB1TVN{icn@u4 zqnXoHhe^fj#y>$;T5zjvMlC_i6QTmW{yz}m>G`|MBq!jIGc zOW`zqlx5gD>S(pPFD&QWJ?~*McAN_=F@Sc)xnZM^8&{=~kDXZ?0iXRHZ~EbzGEaK* z9|_wHdjoN$H5Fh&zw**R=zR9&OmdqG%$s$~1*)nnGk}JsX<1+$oin9^@glWb24<07 z(T?jH8foi$tvFBM`ULn0W0S9?JNZ^0Wguzur4(D^Hl*r7Pw>egBoYOJl#&xN15wTf z@u0xd3RPLhm*?FAiu)%K0ZiMa5K4`b4+B1Q z;BClLWe^ubC|B`wK$wJKY|6#$UA#@NBO{99zl}z8&cUceE@!9mxo}J&2$Zw}vt(@{ zW4(=#JetC+w1Oh{Jp!YtDey?@mKW&#J#Z&-pNRw8SJYA)g)TTLe&}4!Vc*J}v>6Le z7P$#cr*ZWobUjb8*4=zBG}Fn-%lr!U7FxSchuTZ}oUdL^lBU27H%ag%iWvIHI^#rn zl(ql@G;D7tv0VNun;~vWy(a%vM%wN{n#(IujI(_UJIC1LEl2E25wf_nT>O-eTON|1 z0w{fB7PYD!(PgK`CuF;fvW4D~-Nre0^WC{W=DEY0>N7v;xj?O7@&K2pf>1QWWqzT@c8h zFF!ec83ha=WBcb9V{_rb*4_$RyXEI^O=&Yqh(PHj!Uui}qmKxpahj7Q{D@zQ7X2RHewK?7J)LrDvcR=qam^_%p%X@(|AD?C=^AjMV0|)A}cD4 zm~7bipK)Z+3Z9eN(al&|R)dm^QayS8RXQ}8i$?hlu`C5oZ$-Y%qWi~R>#`YsY5Cv# zo9`%Y1@9U+)e@rm*z~SHvVLm?HQ}N$-~GCk`Z^~b^eTr6^yQOZ;gGLD+||2hrpp7) zHG#!n0z4C4o9B5PT`)30FZE>+W@SdMn>Sy-a;v|P6eIlBlLqm~5Ltif3b+HXzs~=j zXw)s&cGUx9Z2->*v`)Ro-(6`~;8UiOhC8qWtOVF-<*D#|)&Tf1hAfbP4 zRrWKU3#^>J=a-`ARLZ*g?ahTeuuhNB#yHH%4PRA{WEeSaA}ul5BVfjguF)4q$9{U% z^BzH%fR3fOi*W-$piWjvoxZqmw+-mB-OoXw2S?cq`U51CX~}ZEp&MP3d6W+aSmM3@mo|x&PR5Ur~ zTRRsj45U%~LX=~*Er0v5=~n`MjYZ&Xzh2&RY%`T!r`<%G@8i6`0m_Kjxl;uM$wOYa zy#C?U*{NNF_p(Bs-bz{G^|{oqsQG{rY7*w&F?IXTD#C#OGnDSrIyU*`Nb*G*w zv5ejbG=T1T?THESc)*n?G$fg7pmdZe1FW$uf)KZYXug*T#nirB>6^Rt7407OkTth{+LL{;`x}pK)@Rx%vKKF3 zRtqCg(b>QX6~D-}fJMFgI0VNaIPV$5!gXCNrArBor81rFQoNL!-#ea132D|a zItLFizb5lbREm`p8=Qr5L+zaT5Fjj{ed5T6)fD@BFh>>LyB&*qH-!`_=@pg9sF!#U zfH6Ol-Z(l_AsX-f3~d7>(4_l_!ub|wKNc7`hLA$eJz-%eCX!UuNfkna!E=4XIE?Q_ z)7+mZ3{=+&R5#J`5pZ_=K%ZA#aC;wZAR{BTt?S{%)))-elruOcXvOR$Wz{de|1)w% zK$P%h-(M^;V3GnUkZI7^%=vl%3uW4m3ml^KMIY~*+(fC<>E7Toy|q3vfJ@QT1##*O zu6A`%LuJcB;)z5zQxFw>g_k%MV*t7F1~M;($Ps??MBU!6D%>d9Y?>~xIQf9w+U6NQ z2+9D7HktcHsAL!&Pry*$MgPprt7(ZaRFDjk6df#3PiK$*1xJR4)UH;`GZUjm2Duqu z?LeHY zg%Xi}cYD*m17*bk(94Rg_(|c`+r?JTq%JOai>D(_T)y|;VQOc{t!7SzF5ua+Y0Ji! z@;^@%ul!W#roZ^Rkxt$&UD2%k{Tp$cTc2b)@#|#mSQS{ebj{M6Ohgt9tNayN{#uE_ zh302TH{{lfT4pto_RJSMpMR3vGuJ!YaAngW9q+x_>1?pGTbj($=5(T2S?^0xtL!h& z0Mv8g2l4&&jPSo#TdCu2k4ZsY5A*($)OGB!T}Hzam=s(sGk1DO!17E|@1=0ZZdh03 zUuoTb>pKUehUVwJ5#*uehWZg#m=?(+pqYOZ> z-nGy#5eTP0)UC_5;Kk6^9;r+M1_A}nU%+qg42E_2oUXz0P zFwU{`vhbvl@)L5i(7ou8SHHW>XMc@-yOV8 zNXHAhP6>$r6m2H6PTMw)4ydS8fi|pz{;dn?p~kY%!h`;_A5Oh{BzSLXLxXpvT6jlg zt(nRepxD&K2M$`=#rq=THkuSxf#j=$&nZ$fiJ{+xb2y^ILX_idqHWhCQ7mh$C-taS zxO~>FW%>G+5*aGUqM@xw^-iksgjH_+)#b0j^cNTTTWbIlDfI6#35a{1KA3z^RA~42 z(5`p<^ys)p{9b`rxrtw)&WQ(piBV3E2^KY)DA-9OQ4sx7E0}EX%-5`T5*lnMyq9J~ z*y0RM6_?Qv?NGUt5OCbKcgFTvz%{?ASGj2M-FOjK?MnKh5KfAns%0H7{jLZDNvVlw z?Z|tYaaM-v`m+NY-ZHd6ikyzNnKYQy;0SU97b~DFghs`5viy!m-7}jRS#VEG)4O9I z;Mlxi50ysAk~JIc#_j|$f|@v#n9Y5L3~c5E+~QVuT9#t(As}6BX*6WM+x^w1?O3f?F7}rFp)|ER7bP56}XvRntl*Y2fRk`VX4w+QC zfDskak`u8&&0m$nnD+2cRLQS4JL#M|y$^9aVKroI%|!D(N|n5VZ$7v>+TIjV!E5`=h=v5p;X zW5>-=X7A!^@JS$$;tY3>2=8kq+%Bz<%S1Vilsr+L-9hV!Eh@*5mI-ahuUY0>$Q_$m zvw!~PNsryp^$pb}dn4$5RPD>o8cL0=9XXJw=I+fm?c@SpPSa2?r^?(#sO;v5tPH=K z!yZ35f;U}s2E3(dyRpQTS1RxRkru}bEg4FD$w+9t9Yur7Db0J0RWQ4d^pw7ZRWP8G zG&4W!oz`y{9yB?9_~-{^c0|!`l3PyYL*EzFWDmtL*cF5b|1o5U@56w+sM70P z9hd8B-v3j@w#GJz3J;l`V7w89klzmwOrw_ zH+P@c+QTgJ@3e&45+GU&m3VjUxWN$#A-6ZC_XB!$caQyS{<`S%xYe>C84s?wJ;4q-C0>#J>L;ZTg*->ob;Hf*6@i~JfPk0et&XIm`kPsB?E@H z)bQnDA;4?bkR=~izdQ88wzpT$wf?+H#HQiY0jVP#-n&pMfY0Alq1DLU^!ijc=RP%^ zwt1jBgf!pP{O<$N_U-QZl|x?5U37cGqF47kcP13_VS8#&E7u-tEOM}9x5ncV+$ zayrVbJXpM6cGK77SXy^la%ot-kyyRp4fO7{T0M9AxE9iDQ@?f8^5dfR0T!@X9bYAT zNk}}ve}D*=j~&|_TblY$w2{QLgu`h6yVvKC4Xh0TTZ^}Oe@K_LxYFc*+(E;O;hp9M z-i?6m_QC;K0ic!@EX{XgpJjTWd|Rx#pN5H)n@kzaDXq#B(ZCLy%nzSY~m~E@@6|TN`*Q8G}(z} zjqSQ*+c4O)Sv0Js{_t|iEl59Ch14$IDQ8CSUG&g>TFk46j94lQC0cEUdgX4Ox!z># zs&}`@OgeUJ4l;2bzbQZR7(0Z|W zI(NO{hqqd8yOpTMT*};-nhnr^c#r4wOnMVAk@pmq#$0$Js}SD%U#D!?Ro+(-xfs7>8eY|BJP*x$_lKCl|{5_s<(Xnfp< zQ!$e=eaIhN`+x>b$s;1jfe`*IP{#yo3WJK<6Z>>+6JHsrI?mW*W2!)~KAiptio7|Y z_y#pz2s*)xT&$&FiiJTH=WFkcS7)qOfz|~u$;mBcOaBp>-4u-nIF%%&Wun~4<9R`8 zH6={S>QxFt=^Q0Aet!P5q2ic0BKoKL2Qh=hsOBdb7T47SWy}*l|Di@cY92|ZRew#0 zW}#Ad+){PTM3+-VMK!Ci??=6>6!$~%%G~!qF=^_Y`{#-FgS@{nG$o(TM-qjd7KEHa@ItlK1{kd5N@Y($z3IUK2?_^G zLBO}l!nkPbEX;ncnyslak{sn9O{^eMuIxMp zrIRBeX`K^CDw!|*xn=2GL^k7)xk3;Piq3zE@n73p7u^-9!IGP#V6=M z4WGFf9qZ7Dl>-W$mQUn*&!ah{XBN~!qXNYYhuWP}rqb7QEydT@`#@Htq_>+-i17Cr zX`D6BpTYB0C-4@p&{Zo)>1)2`5Tl#H=Aa<{&9E=dH!7?|b+xebpNikeG=ZR-juiFv z22FW4HME=q0x21<3DMhEw>pr4+UNNVhdA?hgy|6Q`2{dnvRh796hW9Q2Yy>v3HbM> zL~X^mZ!^w-pQlB6-C+hqdF|0A61c7SbX+0#trk?~oy2yxVK9+_*>vM{D;T{qb|>zj zCG;b1VPR?!;YLY=<512nZRC}n3u4xy#|fosWrsZpS-kvgg)Z6Yi@l4aiTD^}N)z+% z@39nMqh<*CBlJ#7cGBM2es#6#aiFaD2EUf`$;(F%O|{6Yc;R;?$y`^rvTkYtWzxCh zKpti=l)|5vuhan<=lV44EBI;Q)>*1r&&@H+FJivY`4#Cp;T&iXdEoiOEo-`ioznfO zSWKLGGVUm!B=q3H1Dm-Py=_uG)vvKRHM)KP{OC^a_30QoB1HHIOU^J-?k%#Vf56xe zRAp^>_eMsjs;H^)e!bYZJYNfMn+E39y77BSPq^bACSMFX8a{d)Ov4MDdXpROA2qsp zhS&aQgO==c=VI%s&sze>@>q(BQ(%5{__~j1WPWnHJ9SO_twK@LkZ-PjWm`r?f7mS> z|E@*b2S4Prx|e?-zFdzATSuCWjc0sRnaoUz_CD#7_zo0kt*^kwO#hu7ZBb7d%>oAO z@6(lYbLKL{-1CS~MNZlUouDSox%wcEItJt88vt^x;WV#Ydf@<%%w=6sPJOxa`b_qk zUbXHtvs1uuzQ0a+EnwU4ioJ>;6-CnM@QjveU;61H4+xofZq3ZP%TN$v>#XkFtM#yk2 zKIF@R{smBaGp!=p716t#WKFEi_)k2y@``t>BLlKG`5>~>_F&c-@aqF$HQ5Q{+_-nv zfCdB*7djSz!yNr(U*3B;@?DX{#lC!8X8w`{;0y=cIps7RD`ywifrjlbZG*p`b_H#1 zs?rw#wMzBZiieTgeKL8nc;SPQje>~ zoP3GdTlJ{?U$VDCMDB@g)yh{Z@$plqGiv@S#X{@70$KFRSgfx(8yo2GHk zSWRSyr6)%QSW$2URW|57_J`%)lSClK7x=B&pWz4HcuG*m&ynUOD1@#dq2*BW%KyqT34+#c%r56-5 zvHpcywd?=A6_a_{zsCkj44nX0hwzbfrMM{x)~?xHrz)LLodko-nhLva=!=Yxf3A{Y z(PbavPzP)}zI8uM_>6S7%N$MmrgHjL5Zr!2k}Rc=J?h;1|2Yn-C)H5hsX}3l_HC?^ z2293j?~6mKp!fqT-tBdi!Tp;nB`6yEYLwG?i0|vyQYNWidmS^O&rErf?H=Gqa+)w7Q)gAr)nELrR#hvxbQs zLiS>g*o1SzVyn6Mu`Q2cQJAtD*@+wwvKaygnM`2to3IiP{!QX{mZN8bG6;2YwR9b> z!fjsyKem=m;%_k$juI4OO6O;{8uu~S&y8b;Rnv^$b!eIWpm2VzKcASCW%Z5f=bujm zruhW7KOepsI`M1M+a7%xiPJZg0HDrczfX(PqdPcwkdQke_pU$AOnoYz{-gi~peSNc z7?8;_-7CHl1|CMnh&R@wR5c_@#2)`81IQ%lE=>sC>77++qT9)znfP3$n^p6&Cg4yN z@S^)%2xj7#uR{j)Ja(?=a`|R&5&ehAqV-EM?Tf>XP@&jVQ(;CXreYTvg*U_3as!G*j_K6S5ag0KlsP($3>%K(VQBkL^yGi&;8x{9XZmP_(_#_{0Y$W86+sb#qS2z0)W_1@_bNl% zr~`2puE`Zx=GcDF?QT2bm|sT~03Pl#H8`oL-Fg9>HOFCc%^QTQFP#^%dUM};EE>*x zmg^L5VoY0JVX|5#=e)FjkN60*^GkXy4 zq%*p>B^8(iRMSovQyb#7F#z!9qUVLWd(30by9i%7Y7?7%W57baeG$P9+&E93c#3D; zC&?dW#9zoRR2u30_v<8#J|6VMZ6ZlAW$P4p zUsBJkD}a{3&V2I=PZ;meV{9(XU_0r@mei|^d+WPflUO&+AJbpjJ`wx!IkA+oG>qpx z!0XTL-kD8)&UTI5U)=#ay`vl)aKncPSP|f_`I?p39+ykt(%4EA`LavC_CNZd)snZU z8up+22OCHJ=fK}=D3kwoNp-4!&(aM&rE1qk$NCPO5+bIL8uzVB_y2nVj5;2X!-#AN z9VggX@LMyQ;u0{NcZR#1VM^?dvT>sE$~osnXmTSZJME`8s&)IXcdGvuQd*INauye7 zSn{1I_R$7680Hh8Im&gdA;cxNmmr~4Ob*5Oie|7G$ zT)5K`UsaN zUQwvV9KN}&x~~BH9mJ8iSyU)!TA=5Cl>mkrE|wFpGn8ChuZrFF!2-R*;Th<9=%(MxB~4MThv510_Z=j}TwD73jcoKUM*+?uY3Qn-(Sl;~P}Zqq;<%IH}2r?Q&)o9J9Lub}^3ja6lJNXQlKOfq*n2a|{dm+5d^6I$ZpHr8O#0573 z;Go;}{5>xEX_p@RMSk)8?5rcMc(I$x6E?0m;q6`7`>!Bt>@R>s{C8CJ@2u#=^xv;6 zHUHut%f0_X{vS=}8OY}Qw&9o!HDVRDWA8nyq;?gx_a3Reca0b&MvYbx)N1Wjlptp9 zT2-q=N~?D9Ls2EX&;P^wJs*hVc0Jd9p2zV#R)xK*(x)qw6)4y7O9SX>^EzYQX{*G7 zFHoDMkAUV&S3>wy5AeQNiRNzayXl=q_Wax2-_EHz-Hq&YXvc=ET}Y1Xr!>Uj6%9eKpf4Ej^*QltBj)s;nD6*k4{dT}PbfWpH@L)CL3E#t&!)76C)-Js%4W%Q+e9K|`6&DrSNOt`X+oV4S^z?_FCG(pDPM!A9Yin!Qe&$fK3g+ zrb+y7^uo`)J{!byc!Txp6JPOd+X3DVEY>D#Yhq$uKd8rEJnu>R@!hC^A)rO|?sDG`puPj`5_Y4m-G!H`WIto_IZFbv>Q(po3m8Oe{-T5`&gsyj&3K@d> z8ikc)k|XtQdMH$3i1+=7mS_QrR!JxrawUv_)~-w!R)+cz%XG3mjLpq1X7; zpEcgvMO2fS~EaW z7cP&uAj$=~d*dsuK@Ud?2w()iuC7c; zYpm0*(Ph#cD#+-v6+=7afBpS0yenhFU1^?R*tX4by7JQKp|cvLNxGy)ie&sdPa|1E z@MLZ6!hPZ_vlrDl&URJyt3AG?`81ED-b+?_uvX=)O14xp3K-%z&A=iROqMTRa5{Sr zrBr&{AL)#Agaj181ctOAe--Bm4IValM;KHULLNI%w}pEZB-Ldj52I0_G6qIP)WFSX(pIZzJ7L z(V?st8=BuL0(bb>Ji4Ev;u=n^uaR6{k&gz_OQFJ#FGe@#=A5n$fUQ;)lo)Orq9j+U zbS_xRO<(r}tvCPCi104q5Tvq*@9l(l!dHsng;WA%wesn zuTGhuNlmJ;3z2@be>vmQ3cx} z05QE!8(dPFi*u7p*lE8q3VpmAPv4pppQR8 zm{j^e$4S_K>JA?GeoEZY3k4(`;AU`>MjC$7i!(?nU{;0oGn{DLSJPT zjeOi$kplqGA*|ai;y&2Ly9_QA`mclT<+Q(Ua_E!usa|dbV9#!Sj#M7(h2QX*O%7^c zS!plQd_%EuZ-D!Q^cJ z@~b$bOyWTo*H1a}`aB;n)k^!+T+Ga*oj1ax)jH~5l&$SOE@BP8f-j^fJ_#8vxzHz< zQ9a19(^F~CY}D4|sr&>FX zmeYwm>L8N#w40;Yt2Crc1IUmwLQw@pc(*d=9)9og?@3JW;bLL0&4^t6(mqh1`RHRH z#CidE=uM`VQ@VPs8WtZv8E2-s`YZ6tNYp#Ods6Z2OMZMUx#Q!ATo2aKGheKX6YD6) zkza|5stKq6XGP#w48s7)OywSj#=I-#m-^^cZ*$-=HdrY-=Ek~Wc>*7*QX+o^xPaJ3 zQQ%cOXJC83qL&Dq{@!xpPiGEelzI*>MmMT@y3sY0hd0;P9^F%CPHpx;|G(HQsK@N; z%(Hnm1RR!YzT=IT+pVNE$S5kaYpHA&z-D@Sng*|&in!UpImr^s! zrZqHbdaWn}SU?QJu-+WW6ixrQk0>^YYlPScl;gr^INx4|W7{ zpG;D2qA^p_U@rK+_|kqv!PlZdqrpfeZS8m=a)`to0@`xHZR+$`H(ih#;*KzlsDffO zVd^`x?k5dR@yQPb>N?$sbrh>i=~oF7>x?b)1gvG%2t$ealZ%$qQE#)6_n}Z)0%)kV zWAwZZmlTvnNUz4S_;oD}O}=2qJ(Fs*G(oc`TkhCLVo$b!g0IS6Zo@g=z=KM&Wxctu z8Lm+tbMPak@9CUrclba+*G>5I!XPzn5zmn^=4^c=BBgr2pwUB9L!*D6!s3e|^B9h) z!IY^}IRBZj8LL}$LSuQUXM?bYETQYrdpAOHG)q~&m0+>1*zi1%v7`Q^JhLHzDT`Zt zjzV$VkD5gPdWWv6KVG;PXJPa)0yh?CD>e2duf_eNW??-s{0fiw}n zjOGv@Fh!2a4YeQCX}T^Fa%i|}o0u4LR36{rH%j(nW<_sez8$Fcumb#c(=D0K+GcK& zj4^vR4?bvW+_SJL3eSvHxj0s0L9OghWPhaiKmMkwenF9#@`B9H1(K~(RGmXeJff3$ z*y&pE2-I&)7FWSQmEO2jt1+qn(TdrSX7({sIF&7%!<-UkCcFdU^X!EC&87<|xN1oX zL!BEZCtVW(l3~cbu|!MCoV|5Vib>#V4kalsDzI0fu>Q`S7z75(i`0&)B*Lwk}~Z+a7&b@b#Y~@!midc;|(Htj3Aczt9TcdpOv8B zA@=GLJbaGSm96h0)SmSVt*TGqRDMY^sM8*HB`H?lThMlUhgztoGbdG2Fq8a14-J$t zsS&m@A>no#)IA!awoiBBBO)<#K8f30m#=Z69}{)=X(n1*7r#rpd1&;r&qkhz6F(J1gP48ZlxEK-UXFT`Q~-QaCFGh z1;E`9viP$xX-j8*$T!1^N6rU!GSxwtGzG^t zJbw}q^37*^oJLm=Xel0HK1c}jF4bAv`#tM*0LEHunBw-tW;`-_ZRz6_fd8&^*0n?X zkDXdJqS40W@&Rp@Pk|z)%4V-0=7YVM$dUaI0u5aKJqLRgvxdmeHT#8CRs0v)Z|)Kv zq4zhA$A1q{-{py33xY^L<-O1c;)e56Tgvc#HCu5DkB%kHC~lt|kmsqwwg)LfxhkRv zklJkI==lwvja~$$17)S!y=d0&_6{!T9tB>?)$tvfPakL$eGSLhiJ{MA^v(XU9nM87 z(*9`ii){_=qu$1zg)0NkB;Wp%*_yzwhRgsnZxrTz&Z_?``rpU3=rz;tuInAvVN3g| z$SoP*g$Ku3Pf}hIYy9rY+fD#Kah+NeV-z2)x{{GpKX*K=R~I-JGUeOj1Sgx< zT5b%*oC&tjCu{(WU***!^{%|`*T!rm!1on77Jpjm9 z$|*X<6Z=@fr>9jLG$~>i6EgaJQUCiZYm`5jj`;eXXW=B_QwD|VkvlzA98ET&n&-mu zrkWc0NE4}ab?7W=u zPs~DCM*{?ciWy*Du@4~4_BX%LBli>4e$?4Iw$s~7FcATDwc86xr_fplci z6Q{X)D){5Otq(lgf0_r?j)PX2_vRCkm3syw>xl}O2W4P+eHNAsCd7a0#leI%b?SWn z;q?#9+RpnVrD<+g%cH!Xyua6zRr~s7r(@%@zs!^)S6|v)X6Z5K9}WuK=*fe+)&MCI z?#bujk2(5SV1~isrJi=W2ZnzmVkMYWuhzI*%YGAi#Q2|kz3G+8s%qpqy-falWA_3u z2`AT64ddaZy^@$}(%~wPTHC=BuKKUU%Ysu$e>jvVCP+yw}V_>usgCkm8f{7 zzdx92w@_A17H=r3MJ!=RC~pci`sAYVXz1Xgr5vMw2 zXXUTem1U|{P->~`DYm~oYU(>IIR_q<|6O06Hm%);_Z88gP)4l`W`fI?WoE53cWAhS z!$b>=ef73;q)Q_t!}1E!00b{cT~?MNn(mnm@pQDy?+7too0$( zb`c(_2`%K%p|q4u{C|*$$yAH7-VCVoVJaX_AeMO0qHtfjdYGwYtC5R|@@5azi_W6kAhnNDDGLd|`yE^#YB zgt#*d+K)J2doeg_R#!s(-)J#*a?*G_WXq>uq~Gfk)m~DGpeOiDD%_V5U;Hz2PMeHY zeNDXSLXcs~mu(d5^Y?6NZEF2=dnS6#LHt7X=C4b$J-+A4W+`MN`tL^Ok=;^oG@ayD zK!Gt=JKPhg&em5BrfH+k+aJyoFPVIjo~@CK-}C6AqoYdfX5jcFFz}rn+#&NTp^7WxBkGDdZ^* z&G>D{-kf9MJu4j4Z<=kHS0);PjjY_rp4+6!2}9^3wcki7PzSFEruS(72MeKiZb07} zce%z%QGr}cq{>i|9ay#v|MS0KJweQK$(=|bcMVVgkK$5T&FjpjNoHTyKrRAi&n(QI zMmUm}u6v#;Q+puk^(8BUfzf}-#=Fo%7wC`%KD29E@+cSqo@ucX!4=hXRD+48RXi& z4pjjdw)oxM$7%v|f4QG-MB6r+H}5|^%A32ypH3VD8k@jQ_s7iahEZG^9*KMBh74v9 z9!GHX-dR2mt4$r-UUgzy2XWksW)Eu(nS`QkCm831R#F8*J@lF5FA^idgd9q8X)cM@ zk7r)9cWVDz1{pr-H!SoWgw;0_Jyarqa^JPYWnLZ)W#W*jdN)nwZ&DJ^Qe zXOte>a`bgA9gqn-2cH?2{GfQw2;NOWzmylA@+e9jL zLTd40ReURv8Ydyxd-$#Z>VbQ0v|{2Ik5;0D&70?`oCV9uZ#V#4=)Wsf)rTB_+Qj$y z-*f!)SHHvtY<hLo#ioc zAh6FwtjzW7Ykf+8T$u;2vyPyC9Lbl|T2GjKsD@#o{=yV72(|h}4?x-PwB#;}6yELN zPOYKsdgKHfgnUUC1UaqCFaZ1mqsTYXyT2JS^q{{QGg&*iy9#Ls)T07rg22eQ3bn(% z*{`$tFKB4qD^Uy&H!H+jk!phzVPF;YdnDX7nIad2n&gqyc1h-(V5l?51T_CD`&-@P z4rRHqt;6+S#e(F~^ePx(+WQde2CW&#=4tgGMqhqR{~4<^)8L{hZ4X$M(HET&t)MuS zpinoU;(aDz`fRJ~*=X$YSwB~v2t(lp9GvspVJaH#N}fUGTk+~Pkr~`i_NCMj7ZX*a zfn%%bAS>;9kVVsu%z(7GY1BP4mNL6`zxyx$a<8V^An~>lWzlxBp|PV2$wojXXIWp= zwJ;&z6W;4!HNC`zc?K75jn5QuF6)9-XU>;@BCr=vQlJ2V9Fk_QcVm;>h7xEY^XZ7f~xv$dF9PsN`|KOz99t# zevK$@$Z3Cx!EsfjAawZdXUOJ)kAw+4c}U_KC1FXFqsqZgNt?zVL|{ zI_#4|6>xb7u+4ojAzyO7UTv<1;Z7%JSGPSPANKhy?k~WJa;JfYdZhJv+Ciu|bWozG zu?p|oifb_3Jc&_D$g6s`+d+98(_18lJ~&_eIDp#P{}a>mkdb;vumT%hkB$P>LLK^+ z8@d*`fTMbUxBIt6$m;F+0oD^Iy0oA4^DL73$0%TrOWh4FiMbBn$8L#7Hw^=pHdHkJ zUz^WAkAj%n4Iu3}_#*}N@Ix(BDU6bYx$^2DN|7}aa}arTB7-~p{H5*3W(S8Dz<$lx zxW0}8GK0Y2eh5q+-{>VwFDGT@y9I*yeSQ^LHRQ@|DhJrZC5dYcy!?ms*hw_+KMJE1 z5va(q-Ev}&_$)2N=nv)btVmU-UX7%HPG)zMA#A;TL@N|Mn74C+#I&rQh0PaffH`k8t_Pz#%{K+X+qGTLlYB&&LA)UM9n-sFhGbPCVX;)$FEL$ikBkDV)d>{uGJ zYDsOPZNkhuTyqITKMVx+N{fTkSRvR&0qCtJqZgLZzx3Z zJOVXe!Ye1PKY;4s#ypz&f*>Za!fIws@hMvnS%n@~J6^fB@9kP|pP$7(uV1cDtG&3Z z7tn(}5~rslu@kqs;}726e?A@mMM@Wp*dcVb9%A{pEIH7?xUl-=qXO;U-=r0v#=DuM z5ER2WlW}(E#$}A#F9cVWnxkj>4tYw;l)|l^p8^**C!ZsiuHv)DTzYh~8pLQP?ir|1ovM-+kNBd2@RN2*e1E-LHD7;IAeg~oyZ{UgCtNBbrObA zL5Ua4KLbM1d`$yE60HKgZrU@ZI0;UH&V+a;hzO^58Nzfv;B70Ul=DLZHyukrIxLPg zU54c6FZ)RmLK0_QhP;2P6hmMgCevW1q`an4zdlv~Aa{M~ae;S}&+J4ny93840h!{W z9khc1m}51ZgEnyQ3-q_4E`oGZ86yK;jitHj)`cR*1+r3vl7?;11r>)ObOE16!1HPe zy0dIKdNn`fWP`C%5j>N ze)mAot-X{qu3y=3topYv6*0MvJC!XZNWdD)eF-=r7PLhiVV`KHq=L@Q;}TN25+rF9 z1Oj;nK&8-9y8pCwF581b_@8C?{A~Bx?$qac51k0M|IlnSs2u~^)h$aG2~xd;Ubqoko;l# zKIPcPhfsP2so#s3-I^h$pkfn7fu#NhPst_|%Lao>GqkQCB|ccm4uC?5Vb0(w$T^ua zynye-Fd=d!$JgM%!xsxMypv#WR6bfau$NGs*-;j)$l(s;&mdouz#wWY=Gu)92Ax-w z4w@tVNkVQv9Su|`m)@RSUaL?PHtUlirngPfk8fg(-vf2EPWc4Df*FW$*#fRYD?M_3 zSeRS4P673n8zu|4GC88ev413A_>#t8u3pJIv``)G!}zk~hti+A0D>#b)dIfx0bAy_ zQ-?1a@U+QOZsa^OJLo!`s}hHQxp+t;%D8)ZsrW45;_+wS*6Lk9EskdoL<(_-_6%K( zh1;EW6&MU&!GLnOb_>}5*Rp^(pILp>Uuw@QYceT-N%Cb#)&c`V_I(~9<`EAmny^X5 z3w-d~WRLv)Wf%67Vbl`<8n zql=RQ*tI}+;$u2;jJG^?3SO{eY=n0fRbGQY6*+#Y_U!COx%(k(GbK&j}Si<``X=<5vmohy**@7xQ>H6GGu<Ii@R}tH z476Av=1Ows%2#vL3N-6^72duqs$h|*QD_}J$OIjQpwvNpW&sJQp9{BbO|O*i$!2^1 ztZ+>z2;7WEtL7Q+-3%4sw;oY*X;m_TDZ5k1;`VjQ{y~_1afi!h!z~OZ!2v-sCLk%1 zbZ_)?&bgN;IFc!gty}I@p-sRuZoW@Uld{`tTOf#95XPq9@vwi5p36P-UKKGY(NJ5T zW*KMpWKIS^&BR=8=2^48()<@Aa;m_{AbBbxCK-YhC|KczEac)dP;uLQ#pf zswMQ%5uDbAg1(7*Y2r-ze95ZS3J&cSjg^22SA$=oq{@+n)&WLlBQ|mnwoa(~O&uQiXoivS$Kk=Kdd4k*ZzQ4pY zOeqU@suAW!$zO+teUdc~!B)h2ez#o`AL60J+}xTyXa6}rOn#lfUCt8Db1hKe8~!7% z0BPWsTT&U1Y=#jy$~Q11r#Kr$a~L@E;hS;w?H8FdGe`K#z_-tiAqw+lQYWIBKy3Iu zn93kOy={1Y*grJihkS&)2Ek7Pr=U!Nbdb5cy>Syh&8aF%Hr7LNzj^_oAW0+YS_Cm6 zxMb)R-gj|pYB)ZVkB6zP50jC-W$Pao3Q5e4i^nK+)Nmol@+}tM6u1h$aDmBcKO%5T z>`Ek6GvgtY(@47i=U#`ASR8~z@zb4+_e?aasi{LE<#l%uj^<%`8m>FjhNIbMa6&<>SFc@wt&xsmhYSnkU);^z@zMwAKqB{Ho? zK1)T%J~#@+RE-XPdFoa$Qq**sH4GQ*{Ij(G?ddxV=I`a-73vmiQTe(vnJpmm(zv9O z_yKzW7aiTW1eo2a#LkJGzX~RCM?r5(9h#Qrc3ZFqK%B?9!!}8I+Nlo<+$N)g0m)}a z;^@_&uZ6B4@4JXrclJ5pgjCEN&T$F)cI3Gz4r!8`7_H(rYxoz_?9RbajD;J8Ve0UE zmzNR6&tR|X>lXIrs-BWi%vUMPd0hVatD|8$pp>@dgl>{*%ms^MH8n})vs0>{yi|Jg zipY2_a5~OehpWMSpDzUDNUl$3QD?R!D+@B3pil?zO#|xDKr}YRb*aU&K{Yy3?bOrY z_GEWX;mogTyZ0!paO$Y<_Ao>86}+c!E#~t2vMH}GDMoE*@W+2A`2FL^P6~Y0X76s- z2KH*g_P<$^r6i`<>u`Pm?I6k0MfB?1jC5~ z8a-_aA2#*7OEVis)I~?Lu&o5OF-o`RAEg*s)%aAoE5R8+5w~hL9EeJ*Vfj^*Y+Kps zYGlT6$B?0QmY*$B-qxW&H(C@@?ofY^o8J|Sx)zZ+bn$fs(E`*JLT?@}a^FMLL%ZYH;M=*r8lQ7g|1f-(voiuuZ#1D3JY z@2fGSZFJ(GaUW}s9d}<1!@G8nH=Zn#aZ7QlcZ|>aa!QushV|)hD6+4wRnJQPS^XDR z+Zj#LC)w;L4F6Q1B4)+Aq&#&%GRhQ3#%62Q&>_Uar7f>$7r7J|5xICGGqd3kizk8k zco+IcD7^)M+8JY9@7?4tfPMOm6}jeTz)^alO^=|#emlHK-VCf~3jofIJO`B$g9#yK zOr@go@73rw>xH8_A1o6$;*If2yDT8u**TnaP*XhjSAP8^k3dY#jnD9R&qcZ{XM<8Pt~ChmYwPfQoY|5`E{=g-ezq?0Uwd1 zoz2+}KM0yGT=BEDCj+G|IED2AXc{GqwNu^_+ewGA%!F#Rgj=t{z%EQbe7^dQ?sjHhX(Tv1;YNz zNX6cgmGma|K7^38Rqt;)-HL=@_=owoUxrO!ctOL=CgQV{@q zRqg=g)3Ye6?>HRVj&sY2$zc1`dG@d!`@bc(eU%3xqVgs3o5N^K_jhr?bQ5y*Ff~W{ zO`}!4e4!KTep`=qJ@p+_WsNH@0)uPJkh580qlc~>T>vPW)~9pxfV#2|a6>zq>spE2Ti^^}t2~Ru02uM!lI@7%?f+4357+*; zQLj)|2~C4{{{9ye^{}_fcecI8HCnaL0VpD+Y~(oD+glW#RaITV{*0oVc4A_`9UW1N zuQ@!eGNBtM!r=f&{MG5@??YH((yOU5iBAV)Hknad<|1{8YOmB$A>`c1dlylt_}4bD z=jD9#@Tlk*t8WI|-2q$E*@Y}MBr9!AT^3K>$@gtV#@9tbG{>L0W$G|m4Z8%e7b|Zy zH4>9{boH_!Uw$OD)MY?}!-C1^)ze`VRI;L`O{jm*q%EXP{3W2ZV)tKI>-r%R-N$5} zD85~L3qqBYa5TVlMFmn=oSPw4QdTuYl6@2#3e#}7PAU%xf>zcD?z|9DJhL=$899C` z`rX1c*BOLxBzDgtD_>JyYjb(SItHt=BI_UcbFKrn-^FSqqJvc2%^x{E<3YyFBl=y^ z80Ixc`W*3DX_+?8v)|Ejt$)cwnqgYj4?i5XV|{Pnd%Y-K&N0sw zM#4K(;AU#Z8R{P*>>MQMQatLB<1FjCk>pP5yQd4*!TGc>883;bITN{^i&&TV8#1c< zKR=FqVxG@UjIe<%#Ie08Z7H8jPjODy-z$JPjYuYe2;$f(?qNU*77Y6Wx?s7?72tWg~~xt{W`G$f>yH42P;FP%4vC4Ss7z9OqlN^x=}B@ggy91 zX@+|YxvXjy2MLxENOf@2LJ6RyI59f`S^q%pF$E~W!X@W-VmS#KR9tOT&iin-dxQ|R z%g5>0os2g}x0kmj$>#*YBpo%zA8%)#p-`PjWZI&MIX*m0TvI4s`Mn0E7s^Bzd(d8) zDYzcl!&lyW^bFfVNJ^so~g) zFyPXe2G-|R4JY}`*`Sri=iRY-^Rz@nqeC;9nH0Z&xqnOQu=82kcjMth$hA*|?q-;% zQs9Hp0fx878x8LE4RS!AXJ#9Sl3%|w5N2!)DhBR9XQVY&fsihpVloe$;hWKqafW5} z|D84-1(A}8Ifq9_NlqP_iE5T2_x3kyU-iTs?ziT!Bn;YVjKth849F$)j8+BAYoKpO zKr{eIcpO{-Ktj2Rg%+>RG8~zH@DF?Uu5f&^WjU{cfP)A~N&D{^a|eYQLaoIy!2bx1 z?C^q0^6SFNniM@M01D8zw)Az_W3uq(_KJof5jbMx;#7t^!h^62o$ z`T&%%F8+~)S_ekjxUis7|IB7TH;s?af@4(jX#!Jz#B^k*?Z16Xy=13u+eRO3hD#=7 zG@#42QBXE{aBOEOApBwPDAUEo12e|#pxA@&-`fi*q4rHnL9uoYOTar~(n;|U3ly{Jj`d*=4(oHAN)_*-{h>`?{|IPV+G(=@S}E^8OSCmVkXzYm*$Nm>gE-%>)wI@eFO{pLWJ*DBhb}FN}Wm+4`kJv5?M#UK#KFbqfHKukgY3 zmVd=(9CCVW8ZiqYliainviAxbETH6LlV{;;iQy)`&19?ai2bJRi=`uA*&m|JzOB3% z)?}>d#ruM@^nUgLNs@M*1Jy@oIyDQvK;*MjJh&sGOR@{#>AQqI_< ztPVlJT*b^vM@t9M$C6d#t-q9(H9>G+tQ?EMV7;&LmG7i5v%%`>0L1WMD>&>9#tfd1 zs^(PRw5zTyyg%>P-a;EhVB+LY1L@e z;2;(+&%w{JO-K%z8mC7hS?RmsN5h)$7hOzpjdinE9DktiE|4j32923R(#a$oUw6cR z)Hh1?Fg+<;Fl^)VV($N#18qe)`q!me5HLWP4ZCklRRlsn{=z2JF~$ru3=CzN=xN;B z$+s$h-Yh9zdsFQZ)Npd<$0bO2tXBGg)(y6tVe-Gy)Yo;x3G2V1Y>XsKL(>%tSX^-V z@u+-72|^|&ItePIz*$8*vL6b6QOVfdR$y`dw-yC#hptd7=DIb5F=WVgluZ#ZBO!GG1D^0F6MG0Ek zAz8XWi%j)4CT`kt@0NT9-Xmrol2PDR@P{=%_x{(}6Jm%k9Gp;%ttQ?YgQKkkX(Z>B z*lIUC9btn?GUf}wy=&=ORv8DoH>l}NbRtY=S__%(uJY#9*5$SjE|p#btPzK$R|De} z!t5?K=lHX2)fItI2M`K~>=nuLf_j=*ho(ia3(IGt(kACjNA|x_Gnz0iY#e_J!QpZ2 z`9KN*7=xxSFjMBv5wQ<|i>r_}Yo8^S!+VO`P-*&Cn)bt@B8+pMB0^looR*>(2bI{y zWRtm;KJ3keU!TF;P(N{pO#?a%a}y~0S~8PBJ>7#fd2aXP;XTbCft^K9Ef^`ef+f%A z{+^sjWz?_d3=h&5Fs`; zukoW3BAfoVmTaa{dF=lyliD|^fdT6nQxnjrVN6~qkCtR?>}Z zI8a9IDNLH31g1)DJ2CbD4(t@k^_d1T`93a@k&#Hr+Pz~S1TR-ORaw3G85K}$qHFzG z0$>}?GpYjJ7Hul0gF}y`)E8tGW8c_HB0(IHAS3_RHfy_-bhI5c z#8zfS6X{75%6gYgO%7ENF;U?=U5A?on#8LTL!<&z5ysi&&ZHRzhWayl`KwIXitmvG z2>Ug00JNC7#1R|w{9(pm(KE?b=eCfc0UViZVd*;nT@pw)HEXv(In~d`<{8N;#o}~k zg(`dZpx^-m1JN_HAkRtKk7M+x9JT+}i(Gz<#Su-PdXwu-P9CD-oar!dt6_QRI~i63 zA1wFA##M%BE2u;H<^+02R6G<53QvG4Q{D@Lbg{KAiO#y$N9lO#%5?>1O1axiv`cuYu8w_zpxRNbNQ2asv)zPz6_fVd@=O1;^Egm{kc#?<_b@A zoLv8|VCX7bO0Z1xg@pAB!_*i7xyxN0`W`K@RZRxUbi%TPQcj61ZbdQyseB>=B>|^? zPEF?7*?re}y*ghy`}Mez>?Y1kZ<+& z0$48CXqVKYe3tG;|LfjSf~qBG=CQL=Rk#L~jsZiqKl&*7e+(ruM9mW{#-~l%;2lyY zZ>2anLX7Hu2WmSi=Aq~8#nY+-Pm|Q{ZVoKuA}nm^hZ5E8^}e`92bPWM!nCEg~9A+;6f2_Z{a`2$b4yLW`PS z9|rfW{K5K2QgZp^vMfJ|?WH&+=1V)kRaM;~1&GBSJ=V&~s;Il8?J3;=B;=t=Swx5{ zVSi{4|8Rkv(tWPRFf6bd+xvZlO->%%42MGfJ>@<6a6Rm63^H2wez}rK5wG?YlsD8< zn{#S>T)+b~Lz+B{hJoDV(}3beA;&`wH5)w*Owm%)Cgbp2&66)xFaT#Us{Cxqhf&~_ zXLF!UiunWq4Y0Ws&HI6WxJ?1t2fnSpD+Tk6b0-dOZf?F(Bdd$UfTO!F>gMLWVE)VX zhc*29?FoYa+vKj3G-js{md zQ+8JM9!;s$6R|moMe^TPE$-&RTkat5En_|XDbW}6m13sXqHBvz({ZT?Lelm~TB#JS zf||u%QAcvy$)L_ZCgU5Xo-#C&BbHSvNN^V9;RxS*(*ZM5Vm{5b?;+#*tjuEzP)*(! z`L^#<^OqCxp(SlFP9f4Fu!ID1F(kK6TEUgvhxk5?e}-o(OTl*j-yi;e`)+Q44sLfZ z)rJJ;Cxxjc05g_sEY$&@La-9PfDrpno(e>awUT^p?e6ZmIi0z^9__omI=;3~s;}+T ztN6Lt96D8saRN=-ufkvm6l>ftY&e?}#H2}{h)mVUNFq;dy97r}&gx7= z#6hz=S^mbiK@d-577JO%i-b=p^O>=g8?ZR;K*wgm=Y{jx8t`N1Qp*4)P-SDSq?R%L zCF=jP03q7aA%-RTc5D=n*;Z9p?WeblYdQK&eP6_?#kd4^C`w@jh1S09X=%ENndGWz z=wmCHyq@^-n%yS^30*d*0g6s5)s`~H{=~z>fyXavvrQpZA%S7q!j2(vTZSO8-6PyG zr6g%1(~}^n)+cLy`0)K1{ORCLKwq>~LvkKnJdR2TROwh+z%R|+U%zY@G%l7(1vlP1 zGngJJl$6I;!SB3b~`rhcotq>CN{|G;=YWcB1}A&0tMjS`fEkHL`N0;U}Z;SSVp zI8@S>BY+W7IFldlX_^v@!3GlP6TvRTQWheWmBlMeCf*YFOeERbAjEv;j-~bSui+s? z&xpfd+`TD>O0g$;^T@l^%tNm01a|fLwJg$fU`Izi-Or@vDB)MA_%b?JxnZnL4OcMX zf1mBgE32Uh3aB7ya1e3J{SB~QZLKD2Lpyh&)*H27mbK!ucfpE^P*R~B*ulyJ%t2hM|1t|+f$Ob=A>7q zU?NhfPRX!I1{yK|iq-i6!@{L#G-T-7`1YJQXN&2wTFy-C4suwl~Z>znR zn!KG%KE*!T?1RPoUih362~6>_gzJol+}uQZu5{oU2!4b|V~R$dPn-H~YBO#xw_^cH z%J%5s$&$mv?Yt!m4ckV>3`c}%IKRvJBLTxui>atU}BBM-% zbYuVCj>olN-t*=;H>qai zonARF%j%8B0NNheRx`9^XhX-O)C}*%((#8__X4d|T~&66HMunSGLP?yl%BdO?uf(L zSsIWCRn6`GxC!Xo6U*ZPS|GX;=e`(HBUxdoqeFI;hpfIycTRBUH+gGZAq~vMSNqP* zfAeB5@jwwi=j+TIyblkA|J|m81k*I1$94pbR;HkwvhO{mrbg-wQMKTHH(gjgDx4QJ zPka91vXdS~?hbYeLpR#&Hme@V?~9id=QGFa&waEMxw*OM1NKqn5v`Fx$0KMhQ^VywLczna!hdYqNY(}=O7+`3I4G{=q$86S`jrXS#`acC_(uU(R7)id& z!w6vkgyYQWE&_rd=x5xdUeLSfgtU=c4mAF@mA9x#q2w=Ta=}?@^0{%n^AL+(%RDV= z-4wC6@~wqeRCE1&MTh2U&t@KX>Dh=!(a<@A2jYof?>SC` zdoqAeqh-@=*LP%djT0j%HJh7XL(Z@{$I>qC!TtLk33OR>*(MFq{)Qkvi@FIZ&i?u& zDsX+Jt20%3B^Au{Th_yU4N`ddy9fa#LaqNkE`P_Li^o!PP2O<$jiUc2bB^f%wba!V zG@FU}%r!0++M%tD2TjBP2IC3T&rkJc`}W%5_W0;_do*)NiXydKvmd&nM`g}-LPbn7 zD+(6wNU)L(7X+Ei|Em8#n$A0(%K!iW=a`2M&apy-V}xwS7AKC8?5t$(WN$LFPBzIn zw#-9j<}tIg-)0>`RuL-M;d_04x7+W3-E^YY^}3$V$K!tIlqza|Jzzw_A907S__nC1 z?l^Tc=y(51o#-OtPcXh1jl=>KPr6%Brg#JkvjDxxRvu4uoOChVeDW+ya3kVFK_uSir5}n)4p&XSY&Eq%1UcXcF#yvl+54H zFM*n|-g&b8(YS@v8)WjnH(Yrd+kh#>jrb6Ov{2^K|IlPWMxb=sy)|qwB47Uae!5!D5^b*l#5tG)QN}Z)(E=U z>D}ax$7*6K_NhLVrrEQ9tnZg~IDYCsbXkk40jZ&(7%~jn`W5T@%6IX^?W^WTl&mlX zBDsdfHxciujdSy#4g`C~u(XK=sF8z6ZzIu$M81ZJ4-JXtrg-S0dMh!t(UJ%eN2r7? z5=^5>4Qaj5;+7WkNB)6f@*oY_yr*qzQk;@A6h;kg+Ce{$xFhI-QTm&5lYX9Fi7p!P zE|lO2))BqF2D7KXVypap`A|g~k@E_kE1z8aFfdg}>0Jo@15l2U6}hpKjVB*yrh0z@yZ!ALA8=bG_6iQ_%Cy}oz!9Zo%*TXxB<#;G5({NzNA+j>2z|c ztAN_mdl6(70-hmK0i$Bbri|8E02H!yRDl-`4ZqyGEUY`4{qVI85eHD8kIw%EhMxg& z!oiNK-+!cZ-uWgNXKK?Cv^!emxsV{PW%pLUf)!u3q57`Xo9cf;J3leFj<4<~G=<+h z&1hXIc2*7M+?Pyj`>?os@Lv7+_#=HHPzK~%Yt z(+ci2oMHbqJ!aa!k3NrIAK&wm-cQJYu%4-X2{cjvUM;n_k-~tH5?czBGNPo#O*(h} zcZh)Mi*=8Es$3r>D6z!5H77~z7H2u^ zf1#?Yys_yIw*pecuK!$$RJ@?k_;}(O-WIZ(GHgfph8DSE`?9BjtB4%rjIFisea^HD z0Woq)^3#@J;sZH!TphQcUdZBK;ehX6{3syck_^I7dswk}a6G$14rkU`+&GWM5GDk2 zC$p}vyptmj{N+I-vg{%|gSK8vO1>7-Z;S8rOv18Zcn^d9nzZ9+-1z&|3+v9972~@*I@yxr&n9cDOdGR1*P$qVR`dBvHs2O zcmJ%&n5UAAW>vf6EjtSz7sT2&x@Rp;{PAvw9&MHag{ZB4zwZuR1&0BriPy(_iyN26 z=Z^prhnCFo6@aSQm@R&W=Kt$`eFBgkFE8amXTMKaXjc!V)5kpbFRvTju@jDxR2z$n zS-dTU1?9DSnPbf()s9`si%cE$<{yzbl8OK!yjyOj zw%jq-t}9Pa*uVz=r2(x!p5KxgL+BsUx7iLE%E6F)jyZ@z>3|a!o^k}Xh z92kc-KF^ug)R!viO&Ex!PgSwz;D|>@Z!;+jCHIlevw;Ok#EAv4M{B#TK6GYBd8*~M zK?TEJd2={8u0tl<&LVY?Y0sG*ZU^Bc@gXT5VUAGq^fs|81r<$Yya&KD+Tg zc3esOIg(jG6`?Ce!!0poY7#t?{sk+M=kMDZi$+n31lc8-$Qx#Ww>qRh>h z%sw+ji8Rq zxs$l0S7fG1uCDj@dxkGbnW3XTf^w55n>2YwxiTFHu7d)+Z}X(2^rmA4oWOU#k{Ov0 z`#4l6)A;2kEVL_@&~d30c2>4C&6^H__cxNXIUw0FKz2@m3o5|nPd_WrN)6}++2jtcV+Z1 zjtxGPY9P5U1N5hh3#gXnidU8koMEPvD=wkHp_u}akG)ucUBBo5tM~GR1P!CA=IiK4 zWC0mTlOed310k_BmI(2txQ0&*GjnNd#g0<%b_~#z62mQEAE$hfelIGojckg%w}IZt zLU_?Z=giuHT)IQMb*ty>^s8TW9AnRxeckxC{)XKbkAX=gIDk;iUaa?X zDlh5?#$TkwkAQW-tOnX|`Lo}O&xFb?fOHMXo&R$l=#15whkLcNp5T)(A1pxkpsd(f z;>@4vzQW9UZ!%H=LUwIK&am%;uC3?U1r;$=v!Mz--NPf76aL?`n)Z&bG6s!Th=>{I z2@1t}41L5XP!B^_($TGN{>`0&cn`n^wBLF6qIM6fAUVr~P`86F_=o;aoL0m|Dz7Yj+f5ZsVR{og<&S;H5(==e1GUCo$nH8I{fBp z@!0!yZ{5zV;kMO7V(GHdF~1J;Re!v;>zV%@pl^1$dhPf>FYL<>^QpyW4!L!gF>RZ9 zg(<_p-p3Xt;WIoqt*}pX=&`z@37PQky1KqH;uRC+I8=sZ@s&bq1qLx6JaYX_(P^$I zIcZv^H~Q$r19vQIc23_bTqUm~83%}zmzqgM`h&{s&{C{aEbQeUgK@u%jQ=u*GJu*o z9bKi1T^eHKfhRV3F^l8q=|)DN8X}@lVvWZARJnUJ8BHF7y`jBfX`V zqR3AYydO~wv}2@5S|HRIL9WlE;Zm9Il(C>CiV~IJE}_Nn;3X)TigJiwoRr{f=f$1` zCH1*>y|Ip4lwd@+0{m6b^rZTVNlHJh*U89&wlyYsmjV*|S4 zFuJ+iIw+RQH=ihS5r)6`57IWz@gm&$hKTN!$%S^3_`g89VNm(Oh~fB0t9A(nwWDb; zk)gcl6?P3?WMbh%6aRu#<(m~m@+8Znty}2dvo=liO^ZNoPW+sVp(uG^_Gi)u3)I0z zHNz3i4=b%se;-xET6dWuzO8%m`ItdN3BHo_wd~kDp8{`7Ms(+j@J8Uv^B;p$9<%$G zg!^)Wj0we7I_)7>7Y}wmhhG5o)QHg^;+AzgEADX^4IQR&aYJDmq?VVgwPbYs$oeld zx}=>pW?}C*tjVh8Vj4*wC=1P