From 40079173b5385a6f0b3627494c74f102a5bcf89e Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Wed, 17 Feb 2021 21:47:33 +0000 Subject: [PATCH 01/82] initial commit - transfered repos --- .gitignore | 2 + README.md | 31 +- resources/autoload.php | 29 + resources/config.php.example | 66 + resources/etc/skel/home/.bash_logout | 7 + resources/etc/skel/home/.bashrc | 117 ++ resources/etc/skel/home/.profile | 27 + resources/init/ldap.php | 17 + resources/init/shib.php | 23 + resources/init/slurm.php | 2 + resources/init/smtp.php | 25 + resources/init/sql.php | 2 + resources/libraries/ldap.php | 438 ++++++ resources/libraries/slurm.php | 151 ++ resources/libraries/template_mailer.php | 35 + resources/libraries/unity-account.php | 258 +++ resources/libraries/unity-ldap.php | 161 ++ resources/libraries/unity-sql.php | 83 + resources/libraries/unity-user.php | 367 +++++ resources/locale/en.php | 164 ++ resources/templates/footer.php | 17 + resources/templates/globals.php | 25 + resources/templates/header.php | 60 + resources/templates/mail/admin_approve_pi.php | 10 + resources/templates/mail/admin_deny_pi.php | 10 + resources/templates/mail/admin_disband_pi.php | 10 + resources/templates/mail/contact_form.php | 10 + resources/templates/mail/deny_pi.php | 10 + resources/templates/mail/footer.php | 3 + resources/templates/mail/join_pi.php | 10 + resources/templates/mail/left_user.php | 14 + resources/templates/mail/mass_email.php | 12 + .../templates/mail/new_group_request.php | 16 + resources/templates/mail/new_pi_request.php | 15 + resources/templates/mail/rem_pi.php | 10 + resources/templates/messages.php | 5 + vhost.conf.example | 78 + webroot/admin/mass_email.php | 73 + webroot/admin/user-mgmt.php | 188 +++ webroot/cluster-status.php | 84 + webroot/contact.php | 59 + webroot/css/global.css | 331 ++++ webroot/css/modal.css | 65 + webroot/css/navbar.css | 120 ++ webroot/css/vars.css | 24 + webroot/index.php | 13 + webroot/js/ajax/ssh_generate.php | 24 + webroot/js/ckeditor.js | 6 + webroot/js/eds/idpselect.css | 195 +++ webroot/js/eds/idpselect.js | 1384 +++++++++++++++++ webroot/js/eds/idpselect_config.js | 73 + webroot/js/global.js | 64 + webroot/js/modal.js | 15 + webroot/panel-auth.php | 17 + webroot/panel/account.php | 162 ++ webroot/panel/groups.php | 177 +++ webroot/panel/index.php | 7 + webroot/panel/modal/new_pi.php | 43 + webroot/panel/modal/pi_search.php | 27 + webroot/panel/new_account.php | 70 + webroot/panel/pi.php | 132 ++ webroot/panel/set_dev_env.php | 5 + webroot/priv.php | 26 + webroot/res/logo.png | Bin 0 -> 2710 bytes webroot/res/menu.png | Bin 0 -> 4465 bytes webroot/res/mghpcc-image.png | Bin 0 -> 392686 bytes webroot/res/mghpcc.png | Bin 0 -> 39911 bytes webroot/res/umass.png | Bin 0 -> 13431 bytes 68 files changed, 5702 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 resources/autoload.php create mode 100644 resources/config.php.example create mode 100644 resources/etc/skel/home/.bash_logout create mode 100644 resources/etc/skel/home/.bashrc create mode 100644 resources/etc/skel/home/.profile create mode 100644 resources/init/ldap.php create mode 100644 resources/init/shib.php create mode 100644 resources/init/slurm.php create mode 100644 resources/init/smtp.php create mode 100644 resources/init/sql.php create mode 100644 resources/libraries/ldap.php create mode 100644 resources/libraries/slurm.php create mode 100644 resources/libraries/template_mailer.php create mode 100644 resources/libraries/unity-account.php create mode 100644 resources/libraries/unity-ldap.php create mode 100644 resources/libraries/unity-sql.php create mode 100644 resources/libraries/unity-user.php create mode 100644 resources/locale/en.php create mode 100644 resources/templates/footer.php create mode 100644 resources/templates/globals.php create mode 100644 resources/templates/header.php create mode 100644 resources/templates/mail/admin_approve_pi.php create mode 100644 resources/templates/mail/admin_deny_pi.php create mode 100644 resources/templates/mail/admin_disband_pi.php create mode 100644 resources/templates/mail/contact_form.php create mode 100644 resources/templates/mail/deny_pi.php create mode 100644 resources/templates/mail/footer.php create mode 100644 resources/templates/mail/join_pi.php create mode 100644 resources/templates/mail/left_user.php create mode 100644 resources/templates/mail/mass_email.php create mode 100644 resources/templates/mail/new_group_request.php create mode 100644 resources/templates/mail/new_pi_request.php create mode 100644 resources/templates/mail/rem_pi.php create mode 100644 resources/templates/messages.php create mode 100644 vhost.conf.example create mode 100644 webroot/admin/mass_email.php create mode 100644 webroot/admin/user-mgmt.php create mode 100644 webroot/cluster-status.php create mode 100644 webroot/contact.php create mode 100644 webroot/css/global.css create mode 100644 webroot/css/modal.css create mode 100644 webroot/css/navbar.css create mode 100644 webroot/css/vars.css create mode 100644 webroot/index.php create mode 100644 webroot/js/ajax/ssh_generate.php create mode 100644 webroot/js/ckeditor.js create mode 100644 webroot/js/eds/idpselect.css create mode 100644 webroot/js/eds/idpselect.js create mode 100644 webroot/js/eds/idpselect_config.js create mode 100644 webroot/js/global.js create mode 100644 webroot/js/modal.js create mode 100644 webroot/panel-auth.php create mode 100644 webroot/panel/account.php create mode 100644 webroot/panel/groups.php create mode 100644 webroot/panel/index.php create mode 100644 webroot/panel/modal/new_pi.php create mode 100644 webroot/panel/modal/pi_search.php create mode 100644 webroot/panel/new_account.php create mode 100644 webroot/panel/pi.php create mode 100644 webroot/panel/set_dev_env.php create mode 100644 webroot/priv.php create mode 100644 webroot/res/logo.png create mode 100644 webroot/res/menu.png create mode 100644 webroot/res/mghpcc-image.png create mode 100644 webroot/res/mghpcc.png create mode 100644 webroot/res/umass.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..2f4a316b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +resources/config.php +resources/libraries/composer/ \ No newline at end of file diff --git a/README.md b/README.md index 561731e5..b8651faa 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,29 @@ -# unity-web-portal -Web portal for the Unity Cluster +# Unity Cluster Website # + +### Installation ### +1. Prerequisites + 1. OpenLDAP Server with Admin Credentials, correct schema + 1. SQL Server, correct schema + 1. Slurm commands accessible on this host, `www-data` (or whatever the web server user is) should be an operator in `sacctmgr` + 1. SMTP Server + 1. Some HTTP Authentication mechanism (such as Shibboleth SP) +1. Install required PHP Libraries: + 1. Install composer `apt install composer` + 1. Create directory and navigate to `resources/libraries/composer` + 1. Install phpmailer: `composer require phpmailer/phpmailer` + 1. Install phpseclib: `composer require phpseclib/phpseclib` + 1. Install php-ldap `apt install php-ldap` +1. Setup config File `resources/config.php`, use the `resoures/config.php.example` as a reference +1. Apache Configs + + + +#### Directory Structure #### +* `/webroot` - Public root of the website (http document root) +* `/resources` - Private directory containing php files not necessary to be public. + +The unity/webroot directory should be the **only** publicly accessible location (DocumentRoot in htdocs). The resources directory contains many php scripts that are referenced absolutely in the config. + +#### Server Setup #### +This website has a public and private interface. The private interface is authenticated using a shibboleth SP. The following files/directories must be behind a shibboleth SP (configured through apache). +* `/panel` \ No newline at end of file diff --git a/resources/autoload.php b/resources/autoload.php new file mode 100644 index 00000000..7b2267c7 --- /dev/null +++ b/resources/autoload.php @@ -0,0 +1,29 @@ +here"); +} + +require_once config::PATHS["templates"] . "/globals.php"; + +require_once config::PATHS["libraries"] . "/slurm.php"; +require_once config::PATHS["libraries"] . "/unity-ldap.php"; +require_once config::PATHS["libraries"] . "/unity-user.php"; +require_once config::PATHS["libraries"] . "/unity-account.php"; +require_once config::PATHS["libraries"] . "/unity-sql.php"; + +require_once config::PATHS["init"] . "/slurm.php"; +require_once config::PATHS["init"] . "/sql.php"; +require_once config::PATHS["init"] . "/shib.php"; +require_once config::PATHS["init"] . "/ldap.php"; +require_once config::PATHS["init"] . "/smtp.php"; + +// Load Locale +require_once config::PATHS["locale"] . "/" . config::LOCALE . ".php"; // Loads the locale class \ No newline at end of file diff --git a/resources/config.php.example b/resources/config.php.example new file mode 100644 index 00000000..d6ac107a --- /dev/null +++ b/resources/config.php.example @@ -0,0 +1,66 @@ + ROOT . "/resources/templates", + "libraries" => ROOT . "/resources/libraries", + "locale" => ROOT . "/resources/locale", + "init" => ROOT . "/resources/init" + ); + + public const LDAP = array( + "dn" => "", // Bind DN + "pass" => "", // Bind Password + "host" => "" // Hostname + ); + + public const SQL = array( + "host" => "", // MySQL Server hostname + "user" => "", // MySQL Server Username + "pass" => "", // MySQL Server Password + "db" => "unity" // MySQL Server DB + ); + + public const SLURM = array( + "cluster" => "unity", // Cluster name registered in sacctmgr + ); + + public const MAIL = array( + "host" => "", // SMTP server hostname + "user" => "", // SMTP Server username + "pass" => "", // SMTP Server password + "addresses" => array( + "contact" => array("hpc@it.umass.edu", "UMass HPC"), // Administrative Email + "sender" => array("info@unity.rc.umass.edu", "Unity Cluster") // Sender Email (can be fake) + ) + ); + + public const LOCALE = "en"; // Select locale + + public const CLUSTER = array( + "name" => "", // Cluster Name + "org" => "", // Organization Name + "desc" => "" // Organization Description + ); +} diff --git a/resources/etc/skel/home/.bash_logout b/resources/etc/skel/home/.bash_logout new file mode 100644 index 00000000..a465a9d0 --- /dev/null +++ b/resources/etc/skel/home/.bash_logout @@ -0,0 +1,7 @@ +# ~/.bash_logout: executed by bash(1) when login shell exits. + +# when leaving the console clear the screen to increase privacy + +if [ "$SHLVL" = 1 ]; then + [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q +fi \ No newline at end of file diff --git a/resources/etc/skel/home/.bashrc b/resources/etc/skel/home/.bashrc new file mode 100644 index 00000000..27a2f56e --- /dev/null +++ b/resources/etc/skel/home/.bashrc @@ -0,0 +1,117 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +#force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +alias ll='ls -alF' +alias la='ls -A' +alias l='ls -CF' + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi \ No newline at end of file diff --git a/resources/etc/skel/home/.profile b/resources/etc/skel/home/.profile new file mode 100644 index 00000000..456110de --- /dev/null +++ b/resources/etc/skel/home/.profile @@ -0,0 +1,27 @@ +# ~/.profile: executed by the command interpreter for login shells. +# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login +# exists. +# see /usr/share/doc/bash/examples/startup-files for examples. +# the files are located in the bash-doc package. + +# the default umask is set in /etc/profile; for setting the umask +# for ssh logins, install and configure the libpam-umask package. +#umask 022 + +# if running bash +if [ -n "$BASH_VERSION" ]; then + # include .bashrc if it exists + if [ -f "$HOME/.bashrc" ]; then + . "$HOME/.bashrc" + fi +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/bin" ] ; then + PATH="$HOME/bin:$PATH" +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/.local/bin" ] ; then + PATH="$HOME/.local/bin:$PATH" +fi \ No newline at end of file diff --git a/resources/init/ldap.php b/resources/init/ldap.php new file mode 100644 index 00000000..9121edb2 --- /dev/null +++ b/resources/init/ldap.php @@ -0,0 +1,17 @@ +exists()) { + $_SESSION["user-state"] = "present"; + $_SESSION["is_pi"] = $user->isPI(); + } else { + // User does not exist on the LDAP + $_SESSION["user-state"] = "none"; + redirect(config::PREFIX . "/panel/new_account.php"); + } +} \ No newline at end of file diff --git a/resources/init/shib.php b/resources/init/shib.php new file mode 100644 index 00000000..a9641651 --- /dev/null +++ b/resources/init/shib.php @@ -0,0 +1,23 @@ + EPPN_to_uid($_SERVER["REMOTE_USER"]), + "firstname" => $_SERVER["givenName"], + "lastname" => $_SERVER["sn"], + "name" => $_SERVER["givenName"] . " " . $_SERVER["sn"], + "mail" => isset($_SERVER["mail"]) ? $_SERVER["mail"] : $_SERVER["eppn"] // Fallback to EPPN if mail is not set + ); + $_SESSION["SHIB"] = $SHIB; // Set the session var for non-authenticated pages +} \ No newline at end of file diff --git a/resources/init/slurm.php b/resources/init/slurm.php new file mode 100644 index 00000000..058d4d09 --- /dev/null +++ b/resources/init/slurm.php @@ -0,0 +1,2 @@ +isSMTP(); +$mailer->SMTPOptions = array( + 'ssl' => array( + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true + ) +); +//$mailer->SMTPDebug = 4; // DEBUG +$mailer->Host = config::MAIL["host"]; +$mailer->Port = 465; +$mailer->SMTPSecure = "ssl"; +$mailer->SMTPAuth = true; +$mailer->Username = config::MAIL["user"]; +$mailer->Password = config::MAIL["pass"]; \ No newline at end of file diff --git a/resources/init/sql.php b/resources/init/sql.php new file mode 100644 index 00000000..791ee78d --- /dev/null +++ b/resources/init/sql.php @@ -0,0 +1,2 @@ + + * @version 1.0.0 + * @since 7.2.0 + */ +class ldapEntry { + private $conn; // LDAP connection link + private $dn; // Distinguished Name of the Entry + + private $object; // Array containing the attributes of the entry as it looks on the server + private $mods; // Array containing modifications to $object array that have yet to be applied + + /** + * Constructor that creates an ldapEntry object + * + * @param link_identifier $conn LDAP connection link from ldap_connect, ldap_bind must have already been used + * @param string $dn Distinguished Name of the requested entry + */ + public function __construct($conn, $dn) { + $this->conn = $conn; + $this->dn = $dn; + $this->pullObject(); + } + + /** + * Pulls an entry from the ldap connection, and sets $object If entry does not exist, $object = null. + */ + private function pullObject() { + $search = @ldap_get_entries($this->conn, ldap_read($this->conn, $this->dn, "(objectclass=*)")); + ldapConn::stripCount($search); + + if (isset($search)) { + // Object Exists + if (count($search) > 1) { // 1 For LDAP count element, and 1 for actual object + // Duplicate Objects Found + die("FATAL: Call to ldapObject with non-unique DN."); + } else { + $this->object = $search[0]; + } + } + } + + /** + * Gets the Distinguished Name (DN) of the Entry + * + * @return string DN of the entry + */ + public function getDN() { + return $this->dn; + } + + /** + * Gets the Relative Distinguished Name (RDN) of the Entry + * + * @return string RDN of the entry + */ + public function getRDN() { + return substr($this->dn, 0, strpos($this->dn, ',')); + } + + /** + * Checks whether entry exists on the LDAP server, modifications that haven't been applied don't count + * + * @return bool True if entry exists, False if it does not exist + */ + public function exists() { + return !is_null($this->object); + } + + /** + * Writes changes set in $mods array to the LDAP entry on the server. + * + * @return bool True on success, False on failure + */ + public function write() { + if ($this->object == NULL) { + $success = ldap_add($this->conn, $this->dn, $this->mods); // Create a New Entry + } else { + if ($this->mods == NULL) { + throw new Exception("No modifications were made"); + } else { + $success = ldap_mod_replace($this->conn, $this->dn, $this->mods); // Modify Existing Entry + } + } + + if ($success) { + $this->pullObject(); // Refresh $object array + $this->mods = NULL; // Reset Modifications Array to Null + } + return $success; + } + + /** + * Deletes the entry (no need to call write()) + * + * @return bool True on success, False on failure + */ + public function delete() { + if ($this->object == NULL) { + return true; + } else { + if(ldap_delete($this->conn, $this->dn)) { + $this->pullObject(); + $this->mods = NULL; + return true; + } else { + return false; + } + } + } + + /** + * Moves the entry to a new location + * + * @param string $destination Destination CN to move this entry + * @return mixed ldapEntry of the new entry if successful, false on failure + */ + public function move($destination) { + $newRDN = substr($destination, 0, strpos($destination, ',')); + $newParent = substr($destination, strpos($destination, ',') + 1); + if (ldap_rename($this->conn, $this->dn, $newRDN, $newParent, true)) { + $this->pullObject(); // Refresh the existing entry + return new ldapEntry($this->conn, $destination); + } else { + return false; + } + } + + /** + * Gets the immediate parent of the entry + * + * @return ldapEntry The parent of the current Entry + */ + public function getParent() { + return new ldapEntry($this->conn, substr($this->dn, strpos($this->dn, ',') + 1)); //TODO edge case for parent being non-existent (part of base dn) + } + + /** + * Gets an array of children of the entry + * + * @param boolean $recursive (optional) If true, recursive search. Default is false. + * @param string $filter (optional) Filter matching LDAP search filter syntax + * @return array Array of children entries + */ + public function getChildrenArray($recursive = false, $filter = "(objectclass=*)") { + if ($recursive) { + $search = ldap_search($this->conn, $this->dn, $filter); + } else { + $search = ldap_list($this->conn, $this->dn, $filter); + } + + $search_entries = @ldap_get_entries($this->conn, $search); + ldapConn::stripCount($search_entries); + + if (count($search_entries) > 0 && $search_entries[0]["dn"] == $this->getDN()) { + array_shift($search_entries); + } + + return $search_entries; + } + + /** + * Gets an array of the children of the entry saved as ldapEntry class + * + * @param bool $recursive (optional) If true, recursive search. Default is false. + * @param string $filter (optional) Filter matching LDAP search filter syntax + * @return array Array of children ldapEntry objects + */ + public function getChildren($recursive = false, $filter = "(objectclass=*)") { + $children_array = $this->getChildrenArray($recursive, $filter); + + $output = array(); + foreach ($children_array as $child) { + array_push($output, new ldapEntry($this->conn, $child["dn"])); + } + + return $output; + } + + /** + * Gets a single child using RDN + * + * @param string $rdn RDN of requested child + * @return ldapEntry object of the child + */ + public function getChild($rdn) { + return new ldapEntry($this->conn, $rdn . "," . $this->dn); + } + + /** + * Checks if entry has any children + * + * @return boolean True if yes, False if no + */ + public function hasChildren() { + return count($this->getChildrenArray()) > 0; + } + + /** + * Gets the number of children of the entry + * + * @param boolean $recursive (optional) If true, recursive search. Default is false. + * @return int Number of children of entry + */ + public function numChildren($recursive = false) { + return count($this->getChildrenArray($recursive)); + } + + /** + * Sets the value of a single attribute in the LDAP object (This will overwrite any existing values in the attribute) + * + * @param string $attr Attribute Key Name to modify + * @param mixed $value array or string value to set the attribute value to + */ + public function setAttribute($attr, $value) { + if (is_array($value)) { + $this->mods[$attr] = $value; + } else { + $this->mods[$attr] = array($value); + } + } + + /** + * Appends values to a given attribute, preserving initial values in the attribute + * + * @param string $attr Attribute Key Name to modify + * @param mixed $value array or string value to append attribute + */ + public function appendAttribute($attr, $value) { + $objArr = array(); + if (isset($this->object[$attr])) { + $objArr = $this->object[$attr]; + } + + $modArr = array(); + if (isset($this->mods[$attr])) { + $modArr = $this->mods[$attr]; + } + + if (is_array($value)) { + $this->mods[$attr] = array_merge($objArr, $modArr, $value); + } else { + $this->mods[$attr] = array_merge($objArr, $modArr, (array) $value); + } + } + + /** + * Sets and overwrites attributes based on a single array. + * + * @param array $arr Array of keys and attributes. Key values must be attribute key + */ + public function setAttributes($arr) { + $this->mods = $arr; + } + + /** + * Appends attributes based on a single array + * + * @param array $arr Array of keys and attributes. Key values must be attribute key + */ + public function appendAttributes($arr) { + foreach($arr as $attr) { + $this->appendAttribute(key($attr), $attr); + } + } + + /** + * Removes a attribute + * + * @param string $attr Key of attribute to be removed + */ + public function removeAttribute($attr, $item = NULL) { + $this->mods[$attr] = array(); + } + + /** + * Removes values of an attribute + * + * @param string $attr Attribute to modify + * @param string $value Value to erase from attribute + */ + public function removeAttributeEntryByValue($attr, $value) { + $arr = $this->object[$attr]; + for ($i = 0; $i < count($arr); $i++) { + if ($arr[$i] == $value) { + unset($arr[$i]); + } + } + $this->mods[$attr] = array_values($arr); + } + + /** + * Returns a given attribute of the object + * + * @param string $attr Attribute key value to return + * @return array value of requested attribute. Note: lots of attributes are arrays by default, so you have to use index 0 of the return value to get a single value + */ + public function getAttribute($attr) { + if (isset($this->object[$attr])) { + return $this->object[$attr]; + } else { + return NULL; + } + } + + /** + * Returns the entire objects attributes + * + * @return array Array where keys are attributes + */ + public function getAttributes() { + return $this->object; + } + + /** + * Checks if entry has an attribute + * + * @param string $attr Attribute to check + * @return bool true if attribute exists in entry, false otherwise + */ + public function hasAttribute($attr) { + if ($this->exists()) { + return array_key_exists($attr, $this->object); + } else { + return false; + } + } + + /** + * Checks if an attribute value exists within an attribute + * + * @param string $attr Attribute to check + * @param string $value Value to check + * @return bool true if value exists in attribute, false otherwise + */ + public function attributeValueExists($attr, $value) { + return in_array($value, $this->getAttribute($attr)); + } + + /** + * Check if there are pending changes + * + * @return bool true is there are pending changes, false otherwise + */ + public function pendingChanges() { + return !is_null($this->mods); + } +} + +/** + * Class that represents a connection to an LDAP server + * + * Originally written for UMASS Amherst Research Computing + * + * @author Hakan Saplakoglu + * @version 1.0.0 + * @since 7.2.0 + */ +class ldapConn { + protected $conn; // LDAP link + + /** + * Constructor, starts an ldap connection and binds to a DN + * + * @param string $host Host ldap address of server + * @param string $bind_dn Admin bind dn + * @param string $bind_pass Admin bind pass + */ + public function __construct($host, $bind_dn, $bind_pass) { + $this->conn = ldap_connect($host); + + ldap_set_option($this->conn, LDAP_OPT_PROTOCOL_VERSION, 3); + ldap_bind($this->conn, $bind_dn, $bind_pass); + } + + /** + * Get the connection instance of the LDAP link + * + * @return link_identifier LDAP connection link + */ + public function getConn() { + return $this->conn; + } + + /** + * Runs a search on the LDAP server and returns entries + * + * @param string $filter LDAP_search filter + * @param string $base Search base + * @return array Array of ldapEntry objects + */ + public function search($filter, $base, $recursive = true) { + if ($recursive) { + $search = ldap_search($this->conn, $base, $filter); + } else { + $search = ldap_list($this->conn, $base, $filter); + } + + $search_entries = @ldap_get_entries($this->conn, $search); + self::stripCount($search_entries); + + $output = array(); + for($i = 0; isset($search_entries) && $i < count($search_entries); $i++) { + array_push($output, new ldapEntry($this->conn, $search_entries[$i]["dn"])); + } + + return $output; + } + + /** + * Gets a single entry from the LDAP server + * + * @param string $dn Distinguished name (DN) of requested entry + * @return ldapEntry requested entry object + */ + public function getEntry($dn) { + return new ldapEntry($this->conn, $dn); + } + + /** + * Removes the very annoying "count" attribute that comes out of all ldap search queries (why does that exist? Every language I know can figure out the count itself) + * + * @param array $arr Array passed by reference to modify + */ + public static function stripCount(&$arr) { + if(is_array($arr)) { + unset($arr['count']); + array_walk($arr, "ldapConn::stripCount"); + } + } +} diff --git a/resources/libraries/slurm.php b/resources/libraries/slurm.php new file mode 100644 index 00000000..825b5aa6 --- /dev/null +++ b/resources/libraries/slurm.php @@ -0,0 +1,151 @@ +cluster = $clustername; + } + + private static function cmd($cmd) + { + exec($cmd, $output, $return); + + if ($return != 0) { + throw new Exception("$cmd returned error code $return with output " . var_dump($output)); + } + + return $output; + } + + public function addAccount($name) + { + if (!$this->accountExists($name)) { + self::cmd(self::CMD_PREFIX . "add account $name Cluster=$this->cluster"); + } + } + + public function deleteAccount($name) + { + if ($this->accountExists($name)) { + self::cmd(self::CMD_PREFIX . "delete account $name"); + } + } + + public function addUser($name, $account) + { + if (!$this->userExists($name)) { + self::cmd(self::CMD_PREFIX . "add user $name Account=$account"); + } + } + + public function deleteUser($name, $account) + { + if ($this->userExists($name, $account)) { + self::cmd(self::CMD_PREFIX . "delete user $name where Account=$account"); + } + } + + public function accountExists($name) + { + return count($this->readAssocDB(array("Account=$name"))) > 0; + } + + public function userExists($name, $account = NULL) + { + if (is_null($account)) { + return count($this->readAssocDB(array("User=$name"))) > 0; + } else { + return count($this->readAssocDB(array("User=$name","Account=$account"))) > 0; + } + } + + public function getAccountsFromUser($user) { + $accounts = $this->readAssocDB(array("User=$user")); + + $out = array(); + foreach($accounts as $account) { + if ($account[1] != "" && $account[1] != "root") { + array_push($out, $account[1]); // index 2 is UID + } + } + + return $out; + } + + public function getUsersFromAccount($account) { + $users = $this->readAssocDB(array("Account=$account")); + + $out = array(); + foreach($users as $user) { + if ($user[2] != "" && $user[2] != "root") { + array_push($out, $user[2]); // index 2 is UID + } + } + + return $out; + } + + public function getAccounts() { + $accounts_raw = $this->readAccDB(); + + $out = array(); + foreach ($accounts_raw as $account_raw) { + $pi_netid = $account_raw[0]; + if ($pi_netid != "root") { // disregard root account + array_push($out, $pi_netid); + } + } + + return $out; + } + + /** + * Updates the local var with cluster associations + */ + private function readAssocDB($filters = array()) { + $query = self::CMD_PREFIX . "-P show associations"; // -P is parsable output + + foreach ($filters as $filter) { + $query .= " where $filter"; + } + + $associations = self::cmd($query); + array_shift($associations); // Remove the key output + + $out = array(); + foreach($associations as $assoc) { + $exploded = explode("|", $assoc); + array_push($out, $exploded); + } + + return $out; + } + + private function readAccDB($filters = array()) { + $query = self::CMD_PREFIX . "-P show accounts"; // -P is parsable output + + foreach ($filters as $filter) { + $query .= " where $filter"; + } + + $associations = self::cmd($query); + array_shift($associations); // Remove the key output + + $out = array(); + foreach($associations as $assoc) { + $exploded = explode("|", $assoc); + array_push($out, $exploded); + } + + return $out; + } +} diff --git a/resources/libraries/template_mailer.php b/resources/libraries/template_mailer.php new file mode 100644 index 00000000..7fe12db9 --- /dev/null +++ b/resources/libraries/template_mailer.php @@ -0,0 +1,35 @@ +template_dir = $template_dir; + } + + public function send($template = null, $data = null) { + if (isset($template)) { + ob_start(); + include $this->template_dir . "/" . $template . ".php"; + $this->msgHTML(ob_get_clean()); + } + + if (parent::send()) { + // Clear addresses + $this->clearAllRecipients(); + return true; + } else { + return false; + } + } +} + +?> diff --git a/resources/libraries/unity-account.php b/resources/libraries/unity-account.php new file mode 100644 index 00000000..dd380870 --- /dev/null +++ b/resources/libraries/unity-account.php @@ -0,0 +1,258 @@ +ldap, $this->sql, $this->sacctmgr); + } + + const PI_PREFIX = "pi_"; + + private $pi_uid; + + // Services + private $ldap; + private $sql; + private $sacctmgr; + + /** + * Constructor for the object + * + * @param string $pi_uid PI UID in the format + * @param unityLDAP $unityLDAP LDAP Connection + * @param unitySQL $unitySQL SQL Connection + * @param slurm $sacctmgr Slurm Connection + */ + public function __construct($pi_uid, $unityLDAP, $unitySQL, $sacctmgr) + { + $this->pi_uid = $pi_uid; + + $this->ldap = $unityLDAP; // Set LDAP connection instance var + $this->sql = $unitySQL; // Set SQL connection instance var + $this->sacctmgr = $sacctmgr; // Set sacctmgr instance var + } + + /** + * Returns this group's PI UID + * + * @return string PI UID of the group + */ + public function getPIUID() { + return $this->pi_uid; + } + + /** + * Checks if the current PI is an approved and existent group + * + * @return bool true if yes, false if no + */ + public function exists() + { + return $this->sacctmgr->accountExists($this->pi_uid); + } + + public function createGroup() + { + // make this user a PI + $owner = $this->getOwner(); + + // (1) Create LDAP PI group + $ldapPiGroupEntry = $this->getLDAPPiGroup(); + + if (!$ldapPiGroupEntry->exists()) { + $nextGID = $this->ldap->getNextPiGID(); + + $ldapPiGroupEntry->setAttribute("objectclass", unityLDAP::POSIX_GROUP_CLASS); + $ldapPiGroupEntry->setAttribute("gidnumber", strval($nextGID)); + $ldapPiGroupEntry->setAttribute("memberuid", array($owner->getUID())); // add current user as the first memberuid + + if (!$ldapPiGroupEntry->write()) { + throw new Exception("Failed to create POSIX group for " . $owner->getUID()); + } + } + + // (2) Create slurm account + $this->createSlurmAccount(); + $this->addAssociation(self::getUIDfromPIUID($this->pi_uid)); // add owner user + + // activate group + if (!$owner->isActive()) { + $owner->activate(); + } + } + + public function removeGroup() { + $ldapPiGroupEntry = $this->getLDAPPiGroup(); + if (!$ldapPiGroupEntry->delete()) { + throw new Exception("Unable to delete PI ldap group"); + } + + $this->sql->removeRequests($this->pi_uid); // remove any lasting requests + + $this->removeSlurmAccount(); + } + + public function getOwner() { + return new unityUser(self::getUIDfromPIUID($this->pi_uid), $this->ldap, $this->sql, $this->sacctmgr); + } + + public function getLDAPPiGroup() + { + $group_entries = $this->ldap->pi_groupOU->getChildren(true, "(" . unityLDAP::RDN . "=" . $this->pi_uid . ")"); + + if (count($group_entries) > 0) { + return $group_entries[0]; + } else { + return new ldapEntry($this->ldap->getConn(), unityLDAP::RDN . "=$this->pi_uid," . unityLDAP::PI_GROUPS); + } + } + + public function addUserToGroup($new_user) + { + // Create Association + $this->addAssociation($new_user->getUID()); + + // Add to LDAP Group + $pi_group = $this->getLDAPPiGroup(); + $pi_group->appendAttribute("memberuid", $new_user->getUID()); + if (!$pi_group->write()) { + // failed to write + $this->removeAssociation($new_user->getUID()); + } + + if (!$new_user->isActive()) { + $new_user->activate(); + } + } + + public function removeUserFromGroup($old_user) + { + // Remove Association + $this->removeAssociation($old_user->getUID()); + + // Remove from LDAP Group + $pi_group = $this->getLDAPPiGroup(); + $pi_group->removeAttributeEntryByValue("memberuid", $old_user->getUID()); + if (!$pi_group->write()) { + // failed to write + $this->addAssociation($old_user->getUID()); + } + + if ($old_user->isActive() && count($old_user->getGroups()) == 0) { + $old_user->deactivate(); + } + } + + // + // Slurm Related Functions + // + + /** + * Creates a group based off this user (this user is a PI) + */ + private function createSlurmAccount() + { + $this->sacctmgr->addAccount($this->pi_uid); + } + + private function removeSlurmAccount() + { + $this->sacctmgr->deleteAccount($this->pi_uid); + } + + private function addAssociation($uid) + { + if (!$this->sacctmgr->accountExists($this->pi_uid)) { + throw new Exception("Unable to create an association to a nonexist account $this->pi_uid"); + } + + // Add Slurm User + $this->sacctmgr->addUser($uid, $this->pi_uid); + } + + /** + * Undocumented function + * + * @param [type] $netid + * @return void + */ + private function removeAssociation($uid) + { + if (!$this->sacctmgr->userExists($uid, $this->pi_uid)) { + throw new Exception("Unable to remove association because an association doesn't exist"); + } + + $this->sacctmgr->deleteUser($uid, $this->pi_uid); + } + + + public function getAssociations() + { + return $this->sacctmgr->getUsersFromAccount($this->pi_uid); + } + + public function getGroupMembers() + { + $members = $this->getAssociations(); + + $out = array(); + foreach ($members as $member) { + array_push($out, new unityUser($member, $this->ldap, $this->sql, $this->sacctmgr)); + } + + return $out; + } + + public static function getPIFromPIGroup($pi_netid) + { + if (substr($pi_netid, 0, strlen(self::PI_PREFIX)) == self::PI_PREFIX) { + return substr($pi_netid, strlen(self::PI_PREFIX)); + } else { + throw new Exception("PI netid doesn't have the correct prefix."); + } + } + + public function addRequest($uid) + { + $this->sql->addRequest($uid, $this->pi_uid); + } + + public function removeRequest($uid) + { + $this->sql->removeRequest($uid, $this->pi_uid); + } + + public function getRequests() + { + $requests = $this->sql->getRequests($this->pi_uid); + + $out = array(); + foreach ($requests as $request) { + array_push($out, new unityUser($request["uid"], $this->ldap, $this->sql, $this->sacctmgr)); + } + + return $out; + } + + public static function getPIUIDfromUID($uid) + { + return self::PI_PREFIX . $uid; + } + + public static function getUIDfromPIUID($pi_uid) + { + if (substr($pi_uid, 0, strlen(self::PI_PREFIX)) == self::PI_PREFIX) { + return substr($pi_uid, strlen(self::PI_PREFIX)); + } else { + throw new Exception("PI netid doesn't have the correct prefix."); + } + } +} diff --git a/resources/libraries/unity-ldap.php b/resources/libraries/unity-ldap.php new file mode 100644 index 00000000..28cc71e4 --- /dev/null +++ b/resources/libraries/unity-ldap.php @@ -0,0 +1,161 @@ +userOU = $this->getEntry(self::USERS); + $this->groupOU = $this->getEntry(self::GROUPS); + $this->storageOU = $this->getEntry(self::STORAGE); + $this->pi_groupOU = $this->getEntry(self::PI_GROUPS); + $this->adminGroup = $this->getEntry(self::ADMIN_GROUP); + } + + public function getNextUID() + { + $users = $this->userOU->getChildrenArray(true); // ! Restore this instead of temporary + + usort($users, function ($a, $b) { + return $a["uidnumber"] <=> $b["uidnumber"]; + }); + + $id = self::ID_MAP[0]; + foreach ($users as $acc) { + if ($id == $acc["uidnumber"][0]) { + $id++; + if ($id > self::ID_MAP[1]) { + throw new Exception("UID Limits reached"); // all hell has broken if this executes + } + } else { + break; + } + } + + return $id; + } + + public function getNextGID() { + $groups = $this->groupOU->getChildrenArray(true); + + usort($groups, function ($a, $b) { + return $a["gidnumber"] <=> $b["gidnumber"]; + }); + + $id = self::ID_MAP[0]; + foreach ($groups as $acc) { + if ($id == $acc["gidnumber"][0]) { + $id++; + if ($id > self::ID_MAP[1]) { + throw new Exception("GID Limits reached"); // all hell has broken if this executes + } + } else { + break; + } + } + + return $id; + } + + public function getNextStorGID() { + $groups = $this->storOU->getChildrenArray(true); + + usort($groups, function ($a, $b) { + return $a["gidnumber"] <=> $b["gidnumber"]; + }); + + $id = self::STOR_ID_MAP[0]; + foreach ($groups as $acc) { + if ($id == $acc["gidnumber"][0]) { + $id++; + if ($id > self::STOR_ID_MAP[1]) { + throw new Exception("Storage GID Limits reached"); // all hell has broken if this executes + } + } else { + break; + } + } + + return $id; + } + + public function getNextPiGID() { + $groups = $this->pi_groupOU->getChildrenArray(true); + + usort($groups, function ($a, $b) { + return $a["gidnumber"] <=> $b["gidnumber"]; + }); + + $id = self::PI_ID_MAP[0]; + foreach ($groups as $acc) { + if ($id == $acc["gidnumber"][0]) { + $id++; + if ($id > self::PI_ID_MAP[1]) { + throw new Exception("Storage GID Limits reached"); // all hell has broken if this executes + } + } else { + break; + } + } + + return $id; + } + + public function getAllRecipients() { + $users = $this->userOU->getChildren(true); + + $out = array(); + foreach ($users as $user) { + array_push($out, $user->getAttribute("mail")[0]); + } + + return $out; + } +} \ No newline at end of file diff --git a/resources/libraries/unity-sql.php b/resources/libraries/unity-sql.php new file mode 100644 index 00000000..f65bb53c --- /dev/null +++ b/resources/libraries/unity-sql.php @@ -0,0 +1,83 @@ +conn = new PDO("mysql:host=" . $db_host . ";dbname=" . $db, $db_user, $db_pass); + $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } + + public function getConn() { + return $this->conn; + } + + // + // requests table methods + // + public function addRequest($requestor, $dest = self::REQUEST_ADMIN) { + if ($this->requestExists($requestor, $dest)) { + throw new Exception("This request already exists"); + } + + $stmt = $this->conn->prepare("INSERT INTO " . self::TABLE_REQS . " (uid, request_for) VALUES (:uid, :request_for)"); + $stmt->bindParam(":uid", $requestor); + $stmt->bindParam(":request_for", $dest); + + $stmt->execute(); + } + + public function removeRequest($requestor, $dest = self::REQUEST_ADMIN) { + if (!$this->requestExists($requestor, $dest)) { + throw new Exception("This request doesn't exist"); + } + + $stmt = $this->conn->prepare("DELETE FROM " . self::TABLE_REQS . " WHERE uid=:uid and request_for=:request_for"); + $stmt->bindParam(":uid", $requestor); + $stmt->bindParam(":request_for", $dest); + + $stmt->execute(); + } + + public function removeRequests($dest = self::REQUEST_ADMIN) { + $stmt = $this->conn->prepare("DELETE FROM " . self::TABLE_REQS . " WHERE request_for=:request_for"); + $stmt->bindParam(":request_for", $dest); + + $stmt->execute(); + } + + public function requestExists($requestor, $dest = self::REQUEST_ADMIN) { + $stmt = $this->conn->prepare("SELECT * FROM " . self::TABLE_REQS . " WHERE uid=:uid and request_for=:request_for"); + $stmt->bindParam(":uid", $requestor); + $stmt->bindParam(":request_for", $dest); + + $stmt->execute(); + + return count($stmt->fetchAll()) > 0; + } + + public function getRequests($dest = self::REQUEST_ADMIN) { + $stmt = $this->conn->prepare("SELECT * FROM " . self::TABLE_REQS . " WHERE request_for=:request_for"); + $stmt->bindParam(":request_for", $dest); + + $stmt->execute(); + + return $stmt->fetchAll(); + } + + public function getRequestsByUser($user) { + $stmt = $this->conn->prepare("SELECT * FROM " . self::TABLE_REQS . " WHERE uid=:uid"); + $stmt->bindParam(":uid", $user); + + $stmt->execute(); + + return $stmt->fetchAll(); + } +} diff --git a/resources/libraries/unity-user.php b/resources/libraries/unity-user.php new file mode 100644 index 00000000..ed0c2d00 --- /dev/null +++ b/resources/libraries/unity-user.php @@ -0,0 +1,367 @@ +ldap, $this->sql, $this->sacctmgr); + } + + const HOME_DIR = "/home/"; // trailing slash is important + + private $uid; + + // Services + private $ldap; + private $sql; + private $sacctmgr; + + public function __construct($uid, $unityLDAP, $unitySQL, $sacctmgr) + { + $this->uid = $uid; + + $this->ldap = $unityLDAP; // Set LDAP connection instance var + $this->sql = $unitySQL; // Set SQL connection instance var + $this->sacctmgr = $sacctmgr; // Set sacctmgr instance var + } + + /** + * This is the method that is run when a new account is created + * + * @param string $firstname First name of new account + * @param string $lastname Last name of new account + * @param string $email email of new account + * @param bool $isPI boolean value for if the user checked the "I am a PI box" + * @return void + */ + public function init($firstname, $lastname, $email, $isPI) + { + // + // Create LDAP group + // + $ldapGroupEntry = $this->getLDAPGroup(); + + if (!$ldapGroupEntry->exists()) { + $nextGID = $this->ldap->getNextGID(); + + $ldapGroupEntry->setAttribute("objectclass", unityLDAP::POSIX_GROUP_CLASS); + $ldapGroupEntry->setAttribute("gidnumber", strval($nextGID)); + + if (!$ldapGroupEntry->write()) { + throw new Exception("Failed to create POSIX group for $this->uid"); + } + } + + // + // Create LDAP user + // + $ldapUserEntry = $this->getLDAPUser(); + + if (!$ldapUserEntry->exists()) { + $nextUID = $this->ldap->getNextUID(); + $currentGID = $ldapGroupEntry->getAttribute("gidnumber")[0]; + if ($currentGID != $nextUID) { + $ldapGroupEntry->delete(); // Cleanup previous group + throw new Exception("UID/GID mismatch: Attempting to match UID $nextUID with GID $currentGID"); + } + + $ldapUserEntry->setAttribute("objectclass", unityLDAP::POSIX_ACCOUNT_CLASS); + $ldapUserEntry->setAttribute("uid", $this->uid); + $ldapUserEntry->setAttribute("givenname", $firstname); + $ldapUserEntry->setAttribute("sn", $lastname); + $ldapUserEntry->setAttribute("mail", $email); + $ldapUserEntry->setAttribute("homedirectory", self::HOME_DIR . $this->uid); + $ldapUserEntry->setAttribute("loginshell", unityLDAP::NOLOGIN_SHELL); + $ldapUserEntry->setAttribute("uidnumber", strval($nextUID)); + $ldapUserEntry->setAttribute("gidnumber", strval($currentGID)); + + if (!$ldapUserEntry->write()) { + $ldapGroupEntry->delete(); // Cleanup previous group + throw new Exception("Failed to create POSIX user for $this->uid"); + } + } + + // + // MySQL row + // + if ($isPI) { + $this->sql->addRequest($this->uid); + } + } + + + /** + * Returns the ldap account entry corresponding to the user + * + * @return ldapEntry posix account + */ + public function getLDAPUser() + { + $user_entries = $this->ldap->userOU->getChildren(true, "(" . unityLDAP::RDN . "=$this->uid)"); + + if (count($user_entries) > 0) { + return $user_entries[0]; + } else { + return new ldapEntry($this->ldap->getConn(), unityLDAP::RDN . "=$this->uid," . unityLDAP::USERS); + } + } + + /** + * Returns the ldap group entry corresponding to the user + * + * @return ldapEntry posix group + */ + public function getLDAPGroup() + { + $group_entries = $this->ldap->groupOU->getChildren(true, "(" . unityLDAP::RDN . "=$this->uid)"); + + if (count($group_entries) > 0) { + return $group_entries[0]; + } else { + return new ldapEntry($this->ldap->getConn(), unityLDAP::RDN . "=$this->uid," . unityLDAP::GROUPS); + } + } + + public function exists() + { + return $this->getLDAPUser()->exists() && $this->getLDAPGroup()->exists(); + } + + // + // User Attribute Functions + // + + /** + * Get method for NetID + * + * @return string Net ID of user + */ + public function getUID() + { + return $this->uid; + } + + /** + * Sets the firstname of the account and the corresponding ldap entry if it exists + * + * @param string $firstname + */ + public function setFirstname($firstname) + { + $this->getLDAPUser()->setAttribute("givenname", $firstname); + + if (!$this->getLDAPUser()->write()) { + throw new Exception("Error updating LDAP entry $this->uid"); + } + } + + /** + * Gets the firstname of the account + * + * @return string firstname + */ + public function getFirstname() + { + return $this->getLDAPUser()->getAttribute("givenname")[0]; + } + + /** + * Sets the lastname of the account and the corresponding ldap entry if it exists + * + * @param string $lastname + */ + public function setLastname($lastname) + { + $this->getLDAPUser()->setAttribute("sn", $lastname); + + if (!$this->getLDAPUser()->write()) { + throw new Exception("Error updating LDAP entry $this->uid"); + } + } + + /** + * Get method for the lastname on the account + * + * @return string lastname + */ + public function getLastname() + { + return $this->getLDAPUser()->getAttribute("sn")[0]; + } + + /** + * Sets the mail in the account and the ldap entry + * + * @param string $mail + */ + public function setMail($email) + { + $this->getLDAPUser()->setAttribute("mail", $email); + + if (!$this->getLDAPUser()->write()) { + throw new Exception("Error updating LDAP entry $this->uid"); + } + } + + /** + * Method to get the mail instance var + * + * @return string email address + */ + public function getMail() + { + return $this->getLDAPUser()->getAttribute("mail")[0]; + } + + /** + * Sets the SSH keys on the account and the corresponding entry + * + * @param array $keys String array of openssh-style ssh public keys + */ + public function setSSHKeys($keys) + { + $ldapUser = $this->getLDAPUser(); + if ($ldapUser->exists()) { + $ldapUser->setAttribute("sshpublickey", $keys); + if (!$ldapUser->write()) { + throw new Exception("Failed to modify SSH keys for $this->uid"); + } + } + } + + /** + * Returns the SSH keys attached to the account + * + * @return array String array of ssh keys + */ + public function getSSHKeys() + { + $ldapUser = $this->getLDAPUser(); + return $ldapUser->getAttribute("sshpublickey"); + } + + /** + * Sets the login shell for the account + * + * @param string $shell absolute path to shell + */ + public function setLoginShell($shell) + { + $ldapUser = $this->getLDAPUser(); + if ($ldapUser->exists()) { + $ldapUser->setAttribute("loginshell", $shell); + if (!$ldapUser->write()) { + throw new Exception("Failed to modify login shell for $this->uid"); + } + } + } + + /** + * Gets the login shell of the account + * + * @return string absolute path to login shell + */ + public function getLoginShell() + { + $ldapUser = $this->getLDAPUser(); + return $ldapUser->getAttribute("loginshell")[0]; + } + + public function setHomeDir($home) + { + $ldapUser = $this->getLDAPUser(); + if ($ldapUser->exists()) { + $ldapUser->setAttribute("homedirectory", $home); + if (!$ldapUser->write()) { + throw new Exception("Failed to modify home directory for $this->uid"); + } + } + } + + /** + * Gets the home directory of the user, the home directory is immutable + * + * @return string path to home directory + */ + public function getHomeDir() + { + return self::HOME_DIR . $this->netid; + } + + /** + * Checks if the current account is an admin (in the sudo group) + * + * @return boolean true if admin, false if not + */ + public function isAdmin() + { + $admins = $this->ldap->adminGroup->getAttribute("memberuid"); + return in_array($this->uid, $admins); + } + + /** + * Checks if current user is a PI + * + * @return boolean true is PI, false if not + */ + public function isPI() + { + return $this->getAccount()->exists(); + } + + /** + * Activates the account for normal login + * + * @return void + */ + public function activate() + { + $this->setLoginShell(unityLDAP::DEFAULT_SHELL); + } + + /** + * Deactivates the account (user leaves, is forced to leave) + * + * @return void + */ + public function deactivate() + { + $this->setLoginShell(unityLDAP::NOLOGIN_SHELL); + } + + public function isActive() + { + return $this->getLoginShell() != unityLDAP::NOLOGIN_SHELL; + } + + public function getAccount() + { + return new unityAccount(unityAccount::getPIUIDfromUID($this->uid), $this->ldap, $this->sql, $this->sacctmgr); + } + + /** + * Gets the groups this user is assigned to, can be more than one + * @return [type] + */ + public function getGroups() + { + $groups = $this->sacctmgr->getAccountsFromUser($this->uid); + + $out = array(); + foreach ($groups as $group) { + array_push($out, new unityAccount($group, $this->ldap, $this->sql, $this->sacctmgr)); + } + return $out; + } + + public function getGroup($pi_uid) { + return new unityAccount($pi_uid, $this->ldap, $this->sql, $this->sacctmgr); + } +} diff --git a/resources/locale/en.php b/resources/locale/en.php new file mode 100644 index 00000000..e2e2f65e --- /dev/null +++ b/resources/locale/en.php @@ -0,0 +1,164 @@ +__ + * type = err,warn,mes,label,header + */ +class unity_locale { + // + // General + // + public const ERR = "An error occured, please contact the admins."; + public const LABEL_NAME = "Name"; + public const LABEL_USERID = "User ID"; + public const LABEL_ACTIONS = "Actions"; + public const LABEL_MAIL = "Email"; + public const LABEL_SUBJECT = "Subject"; + public const LABEL_MESSAGE = "Message"; + public const LABEL_APPLY = "Apply Changes"; + public const MES_APPLY = "Changes Applied"; + + public const LABEL_ERROR = "Error:"; + public const LABEL_SUCCESS = "Success:"; + + // + // Home (/index.php) + // + public const HOME_HEADER_MAIN = "Unity Cluster"; + + // + // Authentication (/panel-auth.php) + // + public const AUTH_HEADER_MAIN = "Campus Authentication"; + + // + // AUP/Priv (/priv.php) + // + public const PRIV_HEADER_PRIVACY = "Privacy Policy"; + public const PRIV_HEADER_AUP = "Acceptable User Policy"; + + // + // About (/about.php) + // + public const ABOUT_HEADER_MAIN = "About Us"; + + // + // Contact Us (/contact.php) + // + public const CONTACT_HEADER_MAIN = "Contact Us"; + public const CONTACT_ERR_NAME = "Enter a name"; + public const CONTACT_ERR_MAIL = "Enter a valid email"; + public const CONTACT_ERR_SUBJECT = "Enter a subject"; + public const CONTACT_ERR_MESSAGE = "Enter a message"; + public const CONTACT_LABEL_SEND = "Send Message"; + public const CONTACT_MES_SENT = "Message sent"; + public const CONTACT_WARN_SEND = "Are you sure you would like to send this message?"; + + // + // Cluster Status (/cluster-status.php) + // + public const CLUSTER_HEADER_MAIN = "Cluster Status"; + public const CLUSTER_LABEL_USAGE = "Total CPU Usage"; + public const CLUSTER_LABEL_UP = "UP"; + public const CLUSTER_LABEL_DOWN = "DOWN"; + + // + // Panel Home (/panel/index.php) + // + public const PANEL_HEADER_MAIN = "User Panel"; + + // + // New Account (/panel/new_account.php) + // + public const NEWACC_HEADER_MAIN = "Request Account"; + public const NEWACC_LABEL_SELECTPI = " -- Select Principal Investigator -- "; + public const NEWACC_LABEL_EXISTINGPI = " -- Existing PI --"; + public const NEWACC_ERR_PI = "Select a valid PI, or select \"New PI\""; + public const NEWACC_LABEL_ARCHIVAL = "You are an archived account. This could be due to you closing your account, or your account being removed. Please select a PI to request to restore your account. Your files are archived and will be restored upon approval."; + public const NEWACC_LABEL_AWAITING = "Your account request has been submitted but it has not yet been approved. You will not be able to submit this form."; + public const NEWACC_LABEL_REQUEST = "Request Account"; + public const NEWACC_MES_SUCCESS = "Your account request has been submitted. You will receive email confirmation once your account is created."; + + // + // Account Settings (/panel/account.php) + // + public const ACCOUNT_HEADER_MAIN = "Account Settings"; + public const ACCOUNT_LABEL_NEW = "Add New Key"; + public const ACCOUNT_LABEL_GENERATE = "Generate Key Pair"; + public const ACCOUNT_LABEL_GENWIN = "Windows (PuTTY)"; + public const ACCOUNT_LABEL_GENLIN = "Linux / Max (OpenSSH)"; + public const ACCOUNT_LABEL_REMKEY = "Remove SSH Key"; + public const ACCOUNT_LABEL_KEY = "ssh-rsa AAAAB3Nza..."; + + // + // My Groups (/panel/groups.php) + // + public const GROUP_HEADER_MAIN = "My Groups"; + public const GROUP_BTN_JOIN_PI = "Join PI"; + public const GROUP_BTN_ACTIVATE_PI = "Activate PI Account"; + public const GROUP_WARN_ACTIVATE_PI = "Are you sure you want to activate your PI account? You need to be a PI at your institution for this request."; + + public static function GROUP_WARN_REMOVE($name) { + return "Are you sure you would like to leave the PI group $name?"; + } + + // + // Mass Email (/admin/mass_email.php) + // + public const MASS_HEADER_MAIN = "Mass Email"; + public const MASS_ERR_SUBJECT = "Enter a valid subject"; + public const MASS_ERR_MESSAGE = "Enter a valid message"; + public const MASS_WARN_SEND = "Are you sure you would like to send this mass email?"; + public const MASS_LABEL_SEND = "Send Mass Email"; + public const MASS_MES_SEND = "Mass email was sent successfully"; + + // + // User Management (/admin/user-mgmt.php) + // + public const USER_HEADER_MAIN = "User Management"; + + // + // Mail Templates + // + public static function MAIL_LABEL_FOOTER($url) { + return "You are receiving this email because you have an account on the Unity Cluster at UMass Amherst. If you would like to stop receiving these emails, you may request to close your account by replying to this email."; + } + + public const MAIL_HEADER_PIREQUEST = "New User Request"; + public const MAIL_LABEL_PIREQUEST = "A user has requested an account in your PI group:"; + + public const MAIL_HEADER_ADREQUEST = "New PI Request"; + public const MAIL_LABEL_ADREQUEST = "A user has requested a new PI account:"; + + public const MAIL_HEADER_PIJOIN = "PI Request Approved"; + public static function MAIL_LABEL_PIJOIN($group) { + return "Your request to join the PI group $group has been approved. You may view this group in in the 'My Groups' page on the user portal"; + } + + public const MAIL_HEADER_PIDENY = "PI Request Denied"; + public static function MAIL_LABEL_PIDENY($group) { + return "Your request to join the PI group $group has been denied. You may follow up with the group owner if necessary."; + } + + public const MAIL_HEADER_PIREM = "Removed from Group"; + public static function MAIL_LABEL_PIREM($group) { + return "You have been removed from the PI group $group. Your files have not been removed, only your association with $group. Feel free to reply with any questions."; + } + + public const MAIL_HEADER_ADMIN_APP_PI = "PI Account Approved"; + public const MAIL_LABEL_ADMIN_APP_PI = "Your request to create a PI account has been approved. You can manage your group on the 'PI Management' page in the user portal."; + + public const MAIL_HEADER_ADMIN_DENY_PI = "PI Account Denied"; + public const MAIL_LABEL_ADMIN_DENY_PI = "Your request to create a PI account has been denied. This could be for a number of reasons. Most comonly, you may not be a principal investigator at your institution. Feel free to reply to this email with any questions."; + + public const MAIL_HEADER_ADMIN_DISBAND_PI = "PI Account Disbanded"; + public const MAIL_LABEL_ADMIN_DISBAND_PI = "Your PI group has been disbanded. This means you and all users part of the group no longer have an association with it. Your user accounts and files are still intact, as they are seperate from PI accounts"; + + public const MAIL_HEADER_LEFT_PI = "User Left PI Group"; + public const MAIL_LABEL_LEFT_PI = "A user has left your PI group, details below:"; + + public static function MAIL_MES_ACTIVATE($url) { + return "You can approve this account here."; + } +} \ No newline at end of file diff --git a/resources/templates/footer.php b/resources/templates/footer.php new file mode 100644 index 00000000..c23d86c5 --- /dev/null +++ b/resources/templates/footer.php @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/resources/templates/globals.php b/resources/templates/globals.php new file mode 100644 index 00000000..38dc8ac1 --- /dev/null +++ b/resources/templates/globals.php @@ -0,0 +1,25 @@ +here to continue."); + } +} + +function printMessages(&$errors, $str_success) +{ + if (isset($errors)) { + echo "
"; + if (empty($errors)) { + echo "$str_success"; // Success Message + } else { + foreach ($errors as $err) { + echo "$err"; + } + } + echo "
"; + } +} \ No newline at end of file diff --git a/resources/templates/header.php b/resources/templates/header.php new file mode 100644 index 00000000..62faa6c6 --- /dev/null +++ b/resources/templates/header.php @@ -0,0 +1,60 @@ + + + + + + + + + + + + "> + + <?php echo config::CLUSTER["name"]; ?> • <?php echo config::CLUSTER["org"]; ?> + + + + +
+ + Beta + +
+ + + + + + +
\ No newline at end of file diff --git a/resources/templates/mail/admin_approve_pi.php b/resources/templates/mail/admin_approve_pi.php new file mode 100644 index 00000000..ed971117 --- /dev/null +++ b/resources/templates/mail/admin_approve_pi.php @@ -0,0 +1,10 @@ +setFrom(config::MAIL["addresses"]["sender"][0], config::MAIL["addresses"]["sender"][1]); +$this->addReplyTo(config::MAIL["addresses"]["contact"][0], config::MAIL["addresses"]["contact"][1]); +$this->addAddress($data["to"]); +$this->Subject = unity_locale::MAIL_HEADER_ADMIN_APP_PI; + +echo unity_locale::MAIL_LABEL_ADMIN_APP_PI; + +include "footer.php"; +?> \ No newline at end of file diff --git a/resources/templates/mail/admin_deny_pi.php b/resources/templates/mail/admin_deny_pi.php new file mode 100644 index 00000000..c494e78c --- /dev/null +++ b/resources/templates/mail/admin_deny_pi.php @@ -0,0 +1,10 @@ +setFrom(config::MAIL["addresses"]["sender"][0], config::MAIL["addresses"]["sender"][1]); +$this->addReplyTo(config::MAIL["addresses"]["contact"][0], config::MAIL["addresses"]["contact"][1]); +$this->addAddress($data["to"]); +$this->Subject = unity_locale::MAIL_HEADER_ADMIN_DENY_PI; + +echo unity_locale::MAIL_LABEL_ADMIN_DENY_PI; + +include "footer.php"; +?> \ No newline at end of file diff --git a/resources/templates/mail/admin_disband_pi.php b/resources/templates/mail/admin_disband_pi.php new file mode 100644 index 00000000..1f240c05 --- /dev/null +++ b/resources/templates/mail/admin_disband_pi.php @@ -0,0 +1,10 @@ +setFrom(config::MAIL["addresses"]["sender"][0], config::MAIL["addresses"]["sender"][1]); +$this->addReplyTo(config::MAIL["addresses"]["contact"][0], config::MAIL["addresses"]["contact"][1]); +$this->addAddress($data["to"]); +$this->Subject = unity_locale::MAIL_HEADER_ADMIN_DISBAND_PI; + +echo unity_locale::MAIL_LABEL_ADMIN_DISBAND_PI; + +include "footer.php"; +?> \ No newline at end of file diff --git a/resources/templates/mail/contact_form.php b/resources/templates/mail/contact_form.php new file mode 100644 index 00000000..7b0986f0 --- /dev/null +++ b/resources/templates/mail/contact_form.php @@ -0,0 +1,10 @@ +setFrom(config::MAIL["addresses"]["sender"][0], config::MAIL["addresses"]["sender"][1]); +$this->addReplyTo($data["mail"]); +$this->addAddress(config::MAIL["addresses"]["contact"][0], config::MAIL["addresses"]["contact"][1]); +$this->Subject = "[Unity Form] " . $data["subject"]; + +echo $data["message"]; + +include "footer.php"; +?> \ No newline at end of file diff --git a/resources/templates/mail/deny_pi.php b/resources/templates/mail/deny_pi.php new file mode 100644 index 00000000..9cc78c0f --- /dev/null +++ b/resources/templates/mail/deny_pi.php @@ -0,0 +1,10 @@ +setFrom(config::MAIL["addresses"]["sender"][0], config::MAIL["addresses"]["sender"][1]); +$this->addReplyTo(config::MAIL["addresses"]["contact"][0], config::MAIL["addresses"]["contact"][1]); +$this->addAddress($data["to"]); +$this->Subject = unity_locale::MAIL_HEADER_PIDENY; + +echo unity_locale::MAIL_LABEL_PIDENY($data["group"]); + +include "footer.php"; +?> \ No newline at end of file diff --git a/resources/templates/mail/footer.php b/resources/templates/mail/footer.php new file mode 100644 index 00000000..baa2dafe --- /dev/null +++ b/resources/templates/mail/footer.php @@ -0,0 +1,3 @@ +
+ +
diff --git a/resources/templates/mail/join_pi.php b/resources/templates/mail/join_pi.php new file mode 100644 index 00000000..8ac23340 --- /dev/null +++ b/resources/templates/mail/join_pi.php @@ -0,0 +1,10 @@ +setFrom(config::MAIL["addresses"]["sender"][0], config::MAIL["addresses"]["sender"][1]); +$this->addReplyTo(config::MAIL["addresses"]["contact"][0], config::MAIL["addresses"]["contact"][1]); +$this->addAddress($data["to"]); +$this->Subject = unity_locale::MAIL_HEADER_PIJOIN; + +echo unity_locale::MAIL_LABEL_PIJOIN($data["group"]); + +include "footer.php"; +?> \ No newline at end of file diff --git a/resources/templates/mail/left_user.php b/resources/templates/mail/left_user.php new file mode 100644 index 00000000..536fd8a9 --- /dev/null +++ b/resources/templates/mail/left_user.php @@ -0,0 +1,14 @@ +setFrom(config::MAIL["addresses"]["sender"][0], config::MAIL["addresses"]["sender"][1]); +$this->addReplyTo(config::MAIL["addresses"]["contact"][0], config::MAIL["addresses"]["contact"][1]); +$this->addAddress($data["to"]); +$this->Subject = unity_locale::MAIL_HEADER_LEFT_PI; + +echo "

" . unity_locale::MAIL_LABEL_LEFT_PI . "

"; + +echo "

" . unity_locale::LABEL_USERID . " " . $data["netid"] . "

"; +echo "

" . unity_locale::LABEL_NAME . " " . $data["firstname"] . " " . $data["lastname"] . "

"; +echo "

" . unity_locale::LABEL_MAIL . " " . $data["mail"] . "

"; + +include "footer.php"; +?> \ No newline at end of file diff --git a/resources/templates/mail/mass_email.php b/resources/templates/mail/mass_email.php new file mode 100644 index 00000000..c918b7d5 --- /dev/null +++ b/resources/templates/mail/mass_email.php @@ -0,0 +1,12 @@ +setFrom(config::MAIL["addresses"]["sender"][0], config::MAIL["addresses"]["sender"][1]); +$this->addReplyTo(config::MAIL["addresses"]["contact"][0], config::MAIL["addresses"]["contact"][1]); +foreach($data["bcc"] as $recip) { + $this->addBcc($recip); +} +$this->Subject = $data["subject"]; + +echo $data["body"]; + +include "footer.php"; +?> \ No newline at end of file diff --git a/resources/templates/mail/new_group_request.php b/resources/templates/mail/new_group_request.php new file mode 100644 index 00000000..fb75339c --- /dev/null +++ b/resources/templates/mail/new_group_request.php @@ -0,0 +1,16 @@ +setFrom(config::MAIL["addresses"]["sender"][0], config::MAIL["addresses"]["sender"][1]); +$this->addReplyTo(config::MAIL["addresses"]["contact"][0], config::MAIL["addresses"]["contact"][1]); +$this->addAddress($data["to"]); +$this->Subject = unity_locale::MAIL_HEADER_PIREQUEST; + +echo "

" . unity_locale::MAIL_LABEL_PIREQUEST . "

"; + +echo "

" . unity_locale::LABEL_USERID . " " . $data["netid"] . "

"; +echo "

" . unity_locale::LABEL_NAME . " " . $data["firstname"] . " " . $data["lastname"] . "

"; +echo "

" . unity_locale::LABEL_MAIL . " " . $data["mail"] . "

"; + +echo "

" . unity_locale::MAIL_MES_ACTIVATE(config::URL . "/panel/pi.php") . "

"; + +include "footer.php"; +?> \ No newline at end of file diff --git a/resources/templates/mail/new_pi_request.php b/resources/templates/mail/new_pi_request.php new file mode 100644 index 00000000..7e5ff057 --- /dev/null +++ b/resources/templates/mail/new_pi_request.php @@ -0,0 +1,15 @@ +setFrom(config::MAIL["addresses"]["sender"][0], config::MAIL["addresses"]["sender"][1]); +$this->addAddress(config::MAIL["addresses"]["contact"][0], config::MAIL["addresses"]["contact"][1]); +$this->Subject = unity_locale::MAIL_HEADER_ADREQUEST; + +echo "

" . unity_locale::MAIL_LABEL_ADREQUEST . "

"; + +echo "

" . unity_locale::LABEL_USERID . " " . $data["netid"] . "

"; +echo "

" . unity_locale::LABEL_NAME . " " . $data["firstname"] . " " . $data["lastname"] . "

"; +echo "

" . unity_locale::LABEL_MAIL . " " . $data["mail"] . "

"; + +echo "

" . unity_locale::MAIL_MES_ACTIVATE(config::URL . "/admin/user-mgmt.php") . "

"; + +include "footer.php"; +?> \ No newline at end of file diff --git a/resources/templates/mail/rem_pi.php b/resources/templates/mail/rem_pi.php new file mode 100644 index 00000000..da3a5234 --- /dev/null +++ b/resources/templates/mail/rem_pi.php @@ -0,0 +1,10 @@ +setFrom(config::MAIL["addresses"]["sender"][0], config::MAIL["addresses"]["sender"][1]); +$this->addReplyTo(config::MAIL["addresses"]["contact"][0], config::MAIL["addresses"]["contact"][1]); +$this->addAddress($data["to"]); +$this->Subject = unity_locale::MAIL_HEADER_PIREM; + +echo unity_locale::MAIL_LABEL_PIREM($data["group"]); + +include "footer.php"; +?> \ No newline at end of file diff --git a/resources/templates/messages.php b/resources/templates/messages.php new file mode 100644 index 00000000..440cdeda --- /dev/null +++ b/resources/templates/messages.php @@ -0,0 +1,5 @@ +

Unity Cluster User Panel

+ +
+ Notice The Unity cluster is currently in development. Expect instability, bugs, and/or downtime as we add features. We will try to notify users of any downtime should it occur. For more information, visit documentation. Please submit any bug reports to "> +
diff --git a/vhost.conf.example b/vhost.conf.example new file mode 100644 index 00000000..dd36bb6e --- /dev/null +++ b/vhost.conf.example @@ -0,0 +1,78 @@ + + + ServerName + ServerAlias www. + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + # Force redirect to SSL + RewriteEngine On + RewriteCond %{HTTPS} !=on + RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] + + + + + + + ServerName + ServerAlias www. + + DocumentRoot /srv/www/unity-web/webroot + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + ### SSL ### + SSLEngine on + SSLCertificateFile + SSLCertificateKeyFile + SSLProtocol -ALL +TLSv1.2 + SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM + + + SSLOptions +StdEnvVars + + + SSLOptions +StdEnvVars + + + Alias /docs # Alias for docs page + + Alias /admin/ # Not required - just an example + + ### User Level Access ### + + AuthType shibboleth + ShibRequestSetting requireSession 1 + ShibRequestSetting redirectToSSL 443 + require valid-user + + + ### Admin Level Access ### + + AuthType shibboleth + ShibRequestSetting requireSession 1 + ShibRequestSetting redirectToSSL 443 + require shib-attr eppn + + + RequestHeader set X-Remote-User %{REMOTE_USER}s # For JupyterLab authentication + + RewriteEngine on + ProxyPreserveHost on + + ### Jupyter Hub ### + RewriteCond %{HTTP:Connection} Upgrade [NC] + RewriteCond %{HTTP:Upgrade} websocket [NC] + RewriteRule /panel/jhub/(.*) ws://127.0.0.1:8000/panel/jhub/$1 [P,L] + RewriteRule /panel/jhub/(.*) http://127.0.0.1:8000/panel/jhub/$1 [P,L] + + + ProxyPass http://127.0.0.1:8000/panel/jhub + ProxyPassReverse http://127.0.0.1:8000/panel/jhub + + + + \ No newline at end of file diff --git a/webroot/admin/mass_email.php b/webroot/admin/mass_email.php new file mode 100644 index 00000000..166114ca --- /dev/null +++ b/webroot/admin/mass_email.php @@ -0,0 +1,73 @@ +getAllRecipients(); + + // DEBUG + //$data["bcc"] = array( + // "hsaplakoglu@umass.edu", + // "hakansaplakog@gmail.com" + //); + + if (count($errors) == 0) { + if (!$mailer->send("mass_email", $data)) { + array_push($errors, unity_locale::ERR); + } + } +} + +?> + +

+ +
+ + + +
+ +"; + if (empty($errors)) { + // success message + echo "" . unity_locale::MASS_MES_SEND . ""; + } else { + foreach ($errors as $err) { + echo "" . $err . ""; + } + } + echo ""; +} +?> + + + + + diff --git a/webroot/admin/user-mgmt.php b/webroot/admin/user-mgmt.php new file mode 100644 index 00000000..a22d4f31 --- /dev/null +++ b/webroot/admin/user-mgmt.php @@ -0,0 +1,188 @@ +clone($_POST["uid"]); + } + + switch ($_POST["form_name"]) { + case "approveReq": + $group = $form_user->getAccount(); + if (!$form_user->isPI()) { + $group->createGroup(); + } + + $sql->removeRequest($form_user->getUID()); + + $mailer->send("admin_approve_pi", array("to" => $form_user->getMail())); + + // (1) Create Slurm Account + // (2) Create LDAP Group + // (3) Remove SQL Row for Request + // (4) Send email to new PI + break; + case "denyReq": + $sql->removeRequest($form_user->getUID()); + + $mailer->send("admin_deny_pi", array("to" => $form_user->getMail())); + + // (1) Remove SQL Row request + // (2) Send email to requestor + break; + case "remUser": + $remGroup = $user->getGroup($_POST["piuid"]); + + if ($remGroup->exists()) { + foreach ($remGroup->getGroupMembers() as $member) { + $remGroup->removeUserFromGroup($member); + + $mailer->send("rem_pi", array("to" => $member->getMail(), "group" => $remGroup->getPIUID())); + } + } + $remGroup->removeGroup(); + + $mailer->send("admin_disband_pi", array("to" => $remGroup->getOwner()->getMail())); + + // (same as disband PI from pi.php), except also send email to PI + break; + case "approveReqChild": + // approve request button clicked + $parent = $user->getGroup($_POST["pi"]); + + $parent->addUserToGroup($form_user); // Add to group (ldap and slurm) + + try { + $parent->removeRequest($form_user->getUID()); // remove request from db + } catch (Exception $e) { + $parent->removeUserFromGroup($form_user); // roll back + echo $e->getMessage(); // ! DEBUG + } + + $mailer->send("join_pi", array("to" => $form_user->getMail(), "group" => $parent->getPIUID())); + + // (1) Create slurm association [DONE] + // (2) Remove SQL Row if (1) succeeded [DONE] + // (3) Send email to requestor + break; + case "denyReqChild": + // deny request button clicked + + $parent = $user->getGroup($_POST["pi"]); + + $parent->removeRequestFromThis($form_user->getUID()); // remove request from db + + $mailer->send("deny_pi", array("to" => $form_user->getMail(), "group" => $parent->getPIUID())); + + // (1) Remove SQL Row + // (2) Send email to requestor + break; + case "remUserChild": + // remove user button clicked + + $parent = $user->getGroup($_POST["pi"]); + + $parent->removeUserFromGroup($form_user); + + $mailer->send("rem_pi", array("to" => $form_user->getMail(), "group" => $parent->getPIUID())); + $mailer->send("left_user", array("netid" => $form_user->getUID(), "firstname" => $form_user->getFirstname(), "lastname" => $form_user->getLastname(), "mail" => $form_user->getMail(), "to" => $parent->getOwner()->getMail())); + + // (1) Remove slurm association + // (2) Send email to removed user + break; + } +} + +include config::PATHS["templates"] . "/header.php"; +?> + +

Admin User Panel

+ + + + + + + + + + getRequests(); + + foreach ($requests as $request) { + $request_user = $user->clone($request["uid"]); + + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + + $accounts = $sacctmgr->getAccounts(); + + foreach ($accounts as $account) { + $pi_group = $user->getGroup($account); + $pi_user = $pi_group->getOwner(); + + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + foreach ($pi_group->getGroupMembers() as $child) { + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + + foreach ($pi_group->getRequests() as $child_request) { + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + } + ?> +
NameUnity IDMailActions
" . $request_user->getFirstname() . " " . $request_user->getLastname() . "" . $request_user->getUID() . "" . $request_user->getMail() . ""; + echo "
"; + echo "
"; + echo "
" . $pi_user->getFirstname() . " " . $pi_user->getLastname() . "" . $pi_group->getPIUID() . "" . $pi_user->getMail() . ""; + echo "
"; + echo "
" . $child->getFirstname() . " " . $child->getLastname() . "" . $child->getUID() . "" . $child->getMail() . ""; + echo "
"; + echo "
" . $child_request->getFirstname() . " " . $child_request->getLastname() . "" . $child_request->getUID() . "" . $child_request->getMail() . ""; + echo "
"; + echo "
"; + echo "
+ + + + \ No newline at end of file diff --git a/webroot/cluster-status.php b/webroot/cluster-status.php new file mode 100644 index 00000000..9383b180 --- /dev/null +++ b/webroot/cluster-status.php @@ -0,0 +1,84 @@ + + +

+ + $data) { + if (!in_array($node, $excluded_nodes)) { + $totalCPUs += intval($data["CPUTot"]); + $allocCPUs += intval($data["CPUAlloc"]); + } +} + +echo "

" . unity_locale::CLUSTER_LABEL_USAGE . " $allocCPUs / $totalCPUs (" . intval(doubleval($allocCPUs) / doubleval($totalCPUs) * 100) . "%)

"; + +//echo "
";
+//die(print_r($nodes));
+foreach ($nodes as $node => $data) {
+    if (!in_array(substr($node, 0, strcspn($node, "0123456789")), $excluded_nodes)) {  // Get the string up to the first number of the node name, compare with prefix array
+        echo "
"; + echo "
"; + + echo "" . $data["CPUAlloc"] . " / " . $data["CPUTot"] . ""; + echo "
"; + echo "$node"; + if (strpos($data["State"], "IDLE") !== false || strpos($data["State"], "MIXED") !== false) { + echo "" . unity_locale::CLUSTER_LABEL_UP . ""; + } else { + echo "" . unity_locale::CLUSTER_LABEL_DOWN . ""; + } + echo "
"; + + echo "
"; + } +} + +require_once config::PATHS["templates"] . "/footer.php"; +?> + + \ No newline at end of file diff --git a/webroot/contact.php b/webroot/contact.php new file mode 100644 index 00000000..e3914f8d --- /dev/null +++ b/webroot/contact.php @@ -0,0 +1,59 @@ +send("contact_form", $_POST); + } +} +?> + +

+ +
+ "; + } else { + echo ">"; + } + + echo ""; + } else { + echo ">"; + } + ?> + + + +
+ + \ No newline at end of file diff --git a/webroot/css/global.css b/webroot/css/global.css new file mode 100644 index 00000000..6ae540e7 --- /dev/null +++ b/webroot/css/global.css @@ -0,0 +1,331 @@ +html, body { + margin: 0; + font-family: Arial, Helvetica, sans-serif; + background: var(--color-base-1); + color: var(--color-text-dark); + height: 100%; + overscroll-behavior-y: none; + font-size: 11pt; + color: var(--color-text-dark); +} + +body { + display: flex; + flex-direction: column; +} + +/* +------------- + GLOBALS +------------- +*/ + +a { + color: var(--color-accent-1); + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +h1 { + font-size: 15pt; + font-weight: bold; + padding-bottom: 10px; + border-bottom: 1px solid var(--color-base-2); + display: block; + margin: 0 0 20px 0; +} + +hr { + border-top: 0; + border-right: 0; + border-left: 0; + border-bottom: 1px solid var(--color-base-2); + margin: 10px 0 10px 0; + display: block; +} + +.vertical-align { + position: absolute; + top: 50%; + transform: translateY(-50%); +} + +/* Tables */ + +table { + border-collapse: collapse; + width: 100%; + max-width: 1000px; + table-layout: fixed; + border-spacing: 10px; +} + +table tr:first-child { + text-align: center; + background: var(--color-accent-1); + color: var(--color-base-1); +} + +table tr > td:first-child { + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; +} + +table tr > td:last-child { + border-top-right-radius: 10px; + border-bottom-right-radius: 10px; +} + +table tr, table td { + padding: 5px 10px 5px 10px; + height: 30px; + overflow: hidden; + white-space: nowrap; +} + +table tr:not(:first-child):hover { + background: var(--color-base-3); +} + +table button, table input[type=submit] { + padding: 5px 10px 5px 10px; +} + +table form { + display: inline-block; +} + +table form:not(:first-child) { + margin-left: 10px; +} + +table form>* { + margin: 0; +} + +/* Dropdown Button */ + +.btnDropdown { + position: relative; +} + +.btnDropdown>div { + display: none; + position: absolute; + left: 0; + right: 0; + overflow: hidden; + white-space: nowrap; + z-index: 1; + box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.75); + border-radius: 10px; +} + +.btnDropdown>div>button { + background: var(--color-base-3); + color: var(--color-text-dark); + width: 100%; + text-align: left; + border-radius: 0; +} + +.btnDropdown>div>button:hover { + background: var(--color-base-5); +} + +.btnDropdown button { + display: block; +} + +/* Form Elements */ + +form>* { + display: block; +} + +form>*:not(:last-child) { + margin: 10px 0 10px 0; +} + +input[type=text], input[type=password] { + margin: 10px 0 10px 0; + border: 1px solid var(--color-base-2); + padding: 5px; + width: calc(100% - 12px); + /* Factors in extra border and padding */ + max-width: 300px; + border-radius: 10px; +} + +input[type=submit], button { + background: var(--color-accent-1); + color: var(--color-text-light); + cursor: pointer; + border: 0; + padding: 8px 12px 8px 12px; + border-radius: 10px; + transition: background 0.1s; +} + +input[type=submit]:hover, button:hover { + background: var(--color-accent-3); +} + +input:focus, button:focus { + outline: none; + box-shadow: none; +} + +input[type=checkbox], input[type=radio] { + display: inline-block; +} + +form label { + display: inline; + user-select: none; + font-size: 10pt; + color: var(--color-text-faded); +} + +select { + border: 1px solid var(--color-base-2); + background: white; + padding: 5px; + width: 100%; + max-width: 300px; + border-radius: 10px; +} + +textarea { + border: 1px solid var(--color-base-2); + width: 100%; + min-height: 150px; + max-width: 600px; + padding: 5px; + display: block; + margin: 10px 0 10px 0; + resize: vertical; + font-family: Arial, Helvetica, sans-serif; + font-size: 11pt; + border-radius: 10px; +} + +/* User Messages */ + +.message-success { + color: var(--color-text-success); +} + +.message-failure { + color: var(--color-accent-1); +} + +/* +--------------------- + Global Elements +--------------------- +*/ + +/* WRAPPERS */ + +main { + flex: 1 0 auto; + padding: 15px 20px 20px 20px; + max-width: 1000px; +} + +main > * { + margin-bottom: 20px; +} + +div.pageTop { + display: block; +} + +div.pageControls > * { + display: inline-block; +} + +div.pageMessages > * { + display: block; +} + +/* FOOTER */ + +footer { + background: var(--color-base-3); + flex-shrink: 0; + text-align: center; + font-size: 8pt; + color: var(--color-base-4); +} + +footer #footerLogos img { + margin: 10px 0 0 0; + padding: 0 10px 0 10px; + height: 20px; +} + +footer #footerLogos>*:not(:last-child) { + border-right: 1px solid var(--color-base-4); +} + +.footerBlock { + display: block; + margin: 10px; +} + +/* +---------------------------- + Page-Specific Elements +---------------------------- +*/ + +/* Groups / User Management */ + +table tr.tr-unapproved { + background: var(--color-text-warning) !important; +} + +table tr.tr-unapproved:hover { + background: var(--color-text-warning); +} + +table tr.tr-pi { + font-weight: bold; +} + +table tr.tr-pichild td:first-child { + padding-left: 40px; +} + +table tr.tr-unassigned, table tr.tr-unassigned a { + color: #999999; +} + +@media only screen and (max-width: 800px) { + table td.td-uid { + display: none; + } +} + +@media only screen and (max-width: 600px) { + table td.td-mail { + display: none; + } +} + +.btnClose, .btnRemove { + width: 30px; + height: 30px; + padding: 0; + text-align: center; + font-size: 20pt; +} + +.btnClose::before, .btnRemove::before { + content: "\00d7"; +} \ No newline at end of file diff --git a/webroot/css/modal.css b/webroot/css/modal.css new file mode 100644 index 00000000..5d8b46a8 --- /dev/null +++ b/webroot/css/modal.css @@ -0,0 +1,65 @@ +div.modalWrapper { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: rgba(0, 0, 0, 0.6); + z-index: 100; +} + +div.modalContent { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background: var(--color-base-1); + padding: 15px; + width: calc(100% - 30px); + max-width: 300px; + box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.4); + border-radius: 10px; +} + +div.modalTitleWrapper { + overflow: hidden; + display: inline-block; +} + +div.modalMessages { + color: var(--color-text-failure); + font-size: 11pt; +} + +div.modalMessages > * { + margin-top: 7px; + display: block; +} + +div.modalBody > * { + margin: 0; +} + +/* Search Box CSS */ +div.searchWrapper { + box-shadow: 0px 0px 10px 0px rgba(0,0,0,0.4); + background: var(--color-base-1); + position: absolute; + top: 40px; + z-index: 200; + width: 100%; + overflow: hidden; + font-size: 11pt; + user-select: none; + border-radius: 10px; +} + +div.searchWrapper > * { + display: block; + cursor: pointer; + padding: 4px 10px 4px 10px; +} + +div.searchWrapper > *:hover { + background: var(--color-base-5); +} \ No newline at end of file diff --git a/webroot/css/navbar.css b/webroot/css/navbar.css new file mode 100644 index 00000000..7b4819f4 --- /dev/null +++ b/webroot/css/navbar.css @@ -0,0 +1,120 @@ +/* Navbar */ + +nav.mainNav { + background: var(--color-accent-1); + position: fixed; + left: 0; + top: 45px; + font-size: 11pt; + overflow: hidden; + white-space: nowrap; + z-index: 100; +} + +nav.mainNav a { + color: var(--color-base-1); + background: #941e1e; + border-radius: 10px; + display: block; + margin: 10px 8px 10px 8px; + padding: 8px; + text-decoration: none; + cursor: pointer; + transition: background 0.1s; +} + +nav.mainNav a:hover { + text-decoration: none; + background: var(--color-accent-3); +} + +nav.mainNav a.active { + background: var(--color-accent-4); +} + +header { + background: var(--color-accent-1); + height: 50px; + width: 250px; + position: fixed; + top: 0; + left: 0; +} + +header>#imgLogo { + height: 65%; + margin-left: 10px; + margin-top: 8px; +} + +header>a.unity-state { + background: var(--color-base-3); + color: var(--color-accent-1); + display: block; + position: absolute; + top: 8px; + left: 140px; + padding: 1px 5px 1px 5px; + font-weight: bold; + font-size: 10pt; + border-radius: 5px; +} + +header>a.unity-state:hover { + text-decoration: none; +} + +header>button.hamburger { + background: var(--color-accent-1); + padding: 0; + right: 23px; + height: 60%; +} + +header>button.hamburger>img { + position: relative; + height: 100%; +} + +/* MOBILE VIEW */ + +@media only screen and (max-width: 1000px) { + nav.mainNav { + right: 0; + } + header { + width: 100%; + } + main { + /* Header element height + 2*element padding */ + margin-top: 45px; + } +} + +/* DESKTOP VIEW */ + +@media only screen and (min-width: 1001px) { + nav.mainNav { + bottom: 0; + width: 250px; + } + header>button.hamburger { + display: none; + } + main { + margin-left: 250px; + } + footer { + margin-left: 250px; + } +} + +/* Only show MGHPCC overlay image if height and width support it */ + +@media only screen and (min-width: 1001px) and (min-height: 1000px) { + nav.mainNav { + background: url("/res/mghpcc-image.png"), var(--color-accent-1); + background-position: center bottom; + background-repeat: no-repeat; + } +} \ No newline at end of file diff --git a/webroot/css/vars.css b/webroot/css/vars.css new file mode 100644 index 00000000..d3cf692b --- /dev/null +++ b/webroot/css/vars.css @@ -0,0 +1,24 @@ +:root { + /* Background */ + --color-base-1: #ffffff; + /* Divider Color */ + --color-base-2: #eeeeee; + /* Footer */ + --color-base-3: #fafafa; + --color-base-5: #dddddd; + /* Footer Text */ + --color-base-4: #bbbbbb; + /* UMass Maroon */ + --color-accent-1: #881c1c; + /* Darker Maroon */ + --color-accent-2: #7f1a1a; + --color-accent-3: #9c2020; + --color-accent-4: #a92323; + --color-text-dark: #1a1a1a; + --color-text-faded: #666666; + --color-text-light: var(--color-base-1); + --color-text-success: #009933; + --color-text-failure: #cc0000; + --color-text-warning: #ffcc00; + --size-mobile-switch: 1000px; +} \ No newline at end of file diff --git a/webroot/index.php b/webroot/index.php new file mode 100644 index 00000000..12e23f60 --- /dev/null +++ b/webroot/index.php @@ -0,0 +1,13 @@ + + +

+ +

This page is in progress. For now, visit our documentation for more info.

+ + diff --git a/webroot/js/ajax/ssh_generate.php b/webroot/js/ajax/ssh_generate.php new file mode 100644 index 00000000..c161079e --- /dev/null +++ b/webroot/js/ajax/ssh_generate.php @@ -0,0 +1,24 @@ +"; + +$rsa = new RSA(); +$rsa->setPublicKeyFormat(RSA::PUBLIC_FORMAT_OPENSSH); +if (isset($_GET["type"]) && $_GET["type"] == "ppk") { + $rsa->setPrivateKeyFormat(RSA::PRIVATE_FORMAT_PUTTY); // Set format to putty if requested +} +extract($rsa->createKey(2048)); + +echo "
"; +echo $publickey; +echo "
"; +echo "
"; +echo $privatekey; +echo "
"; + +echo "
"; \ No newline at end of file diff --git a/webroot/js/ckeditor.js b/webroot/js/ckeditor.js new file mode 100644 index 00000000..486093a2 --- /dev/null +++ b/webroot/js/ckeditor.js @@ -0,0 +1,6 @@ +/*! + * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(t){t.en=Object.assign(t.en||{},{a:"Cannot upload file:",b:"Image toolbar",c:"Table toolbar",d:"Bold",e:"Insert image or file",f:"Choose heading",g:"Heading",h:"Full size image",i:"Side image",j:"Left aligned image",k:"Centered image",l:"Right aligned image",m:"image widget",n:"Block quote",o:"Numbered List",p:"Bulleted List",q:"Increase indent",r:"Decrease indent",s:"Insert image",t:"Insert table",u:"Header column",v:"Insert column left",w:"Insert column right",x:"Delete column",y:"Column",z:"Header row",aa:"Insert row below",ab:"Insert row above",ac:"Delete row",ad:"Row",ae:"Merge cell up",af:"Merge cell right",ag:"Merge cell down",ah:"Merge cell left",ai:"Split cell vertically",aj:"Split cell horizontally",ak:"Merge cells",al:"Italic",am:"Insert media",an:"The URL must not be empty.",ao:"This media URL is not supported.",ap:"media widget",aq:"Upload failed",ar:"Enter image caption",as:"Link",at:"Could not obtain resized image URL.",au:"Selecting resized image failed",av:"Could not insert image at the current position.",aw:"Inserting image failed",ax:"Widget toolbar",ay:"Upload in progress",az:"Open in a new tab",ba:"Downloadable",bb:"Unlink",bc:"Edit link",bd:"Open link in new tab",be:"This link has no URL",bf:"Save",bg:"Cancel",bh:"Link URL",bi:"Rich Text Editor",bj:"Undo",bk:"Redo",bl:"%0 of %1",bm:"Previous",bn:"Next",bo:"Editor toolbar",bp:"Show more items",bq:"Dropdown toolbar",br:"Paste the media URL in the input.",bs:"Tip: Paste the URL into the content to embed faster.",bt:"Media URL",bu:"Rich Text Editor, %0",bv:"Change image text alternative",bw:"Paragraph",bx:"Heading 1",by:"Heading 2",bz:"Heading 3",ca:"Heading 4",cb:"Heading 5",cc:"Heading 6",cd:"Text alternative"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClassicEditor=e():t.ClassicEditor=e()}(window,function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=91)}([function(t,e,n){"use strict";n.d(e,"b",function(){return o}),n.d(e,"a",function(){return r});const i="https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/error-codes.html";class o extends Error{constructor(t,e,n){t=r(t),n&&(t+=" "+JSON.stringify(n)),super(t),this.name="CKEditorError",this.context=e,this.data=n}is(t){return"CKEditorError"===t}static rethrowUnexpectedError(t,e){if(t.is&&t.is("CKEditorError"))throw t;throw new o("unexpected-error",e,{originalError:{message:t.message,stack:t.stack,name:t.name}})}}function r(t){const e=t.match(/^([^:]+):/);return e?t+` Read more: ${i}#error-${e[1]}\n`:t}},function(t,e,n){"use strict";var i={},o=function(){var t;return function(){return void 0===t&&(t=Boolean(window&&document&&document.all&&!window.atob)),t}}(),r=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}();function s(t,e){for(var n=[],i={},o=0;o:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-base-foreground)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-base-foreground)}"},function(t,e,n){var i=n(21);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}"},function(t,e,n){var i=n(23);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{z-index:var(--ck-z-modal);position:fixed;top:0}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{top:auto;position:absolute}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{box-shadow:var(--ck-drop-shadow),0 0;border-width:0 1px 1px;border-top-left-radius:0;border-top-right-radius:0}"},function(t,e,n){var i=n(25);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on .ck-tooltip{display:none}.ck.ck-dropdown .ck-dropdown__panel{-webkit-backface-visibility:hidden;display:none;z-index:var(--ck-z-modal);position:absolute}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block;will-change:transform}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{transform:translate3d(0,100%,0)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}:root{--ck-dropdown-arrow-size:calc(0.5*var(--ck-icon-size))}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{width:7em;overflow:hidden;text-overflow:ellipsis}.ck.ck-dropdown__panel{box-shadow:var(--ck-drop-shadow),0 0;border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;min-width:100%}"},function(t,e,n){var i=n(27);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{width:var(--ck-icon-size);height:var(--ck-icon-size);font-size:.8333350694em;will-change:transform}.ck.ck-icon,.ck.ck-icon *{color:inherit;cursor:inherit}.ck.ck-icon :not([fill]){fill:currentColor}"},function(t,e,n){var i=n(29);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports='.ck.ck-tooltip,.ck.ck-tooltip .ck-tooltip__text:after{position:absolute;pointer-events:none;-webkit-backface-visibility:hidden}.ck-tooltip{visibility:hidden;opacity:0;display:none;z-index:var(--ck-z-modal)}.ck-tooltip .ck-tooltip__text{display:inline-block}.ck-tooltip .ck-tooltip__text:after{content:"";width:0;height:0}:root{--ck-tooltip-arrow-size:5px}.ck.ck-tooltip{left:50%;top:0}.ck.ck-tooltip.ck-tooltip_s{bottom:calc(-1*var(--ck-tooltip-arrow-size));transform:translateY(100%)}.ck.ck-tooltip.ck-tooltip_s .ck-tooltip__text:after{top:calc(-1*var(--ck-tooltip-arrow-size));transform:translateX(-50%);border-left-color:transparent;border-bottom-color:var(--ck-color-tooltip-background);border-right-color:transparent;border-top-color:transparent;border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:var(--ck-tooltip-arrow-size);border-right-width:var(--ck-tooltip-arrow-size);border-top-width:0}.ck.ck-tooltip.ck-tooltip_n{top:calc(-1*var(--ck-tooltip-arrow-size));transform:translateY(-100%)}.ck.ck-tooltip.ck-tooltip_n .ck-tooltip__text:after{bottom:calc(-1*var(--ck-tooltip-arrow-size));transform:translateX(-50%);border-left-color:transparent;border-bottom-color:transparent;border-right-color:transparent;border-top-color:var(--ck-color-tooltip-background);border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:0;border-right-width:var(--ck-tooltip-arrow-size);border-top-width:var(--ck-tooltip-arrow-size)}.ck.ck-tooltip .ck-tooltip__text{border-radius:0}.ck-rounded-corners .ck.ck-tooltip .ck-tooltip__text,.ck.ck-tooltip .ck-tooltip__text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-tooltip .ck-tooltip__text{font-size:.9em;line-height:1.5;color:var(--ck-color-tooltip-text);padding:var(--ck-spacing-small) var(--ck-spacing-medium);background:var(--ck-color-tooltip-background);position:relative;left:-50%}.ck.ck-tooltip .ck-tooltip__text:after{border-style:solid;left:50%}.ck.ck-tooltip,.ck.ck-tooltip .ck-tooltip__text:after{transition:opacity .2s ease-in-out .2s}'},function(t,e,n){var i=n(31);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-button,a.ck.ck-button{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:block}@media (hover:none){.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:none}}.ck.ck-button,a.ck.ck-button{position:relative;display:inline-flex;align-items:center;justify-content:left}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button:hover .ck-tooltip,a.ck.ck-button:hover .ck-tooltip{visibility:visible;opacity:1}.ck.ck-button .ck-button__label,.ck.ck-button:focus:not(:hover) .ck-tooltip,a.ck.ck-button .ck-button__label,a.ck.ck-button:focus:not(:hover) .ck-tooltip{display:none}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-default-active-shadow)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{white-space:nowrap;cursor:default;vertical-align:middle;padding:var(--ck-spacing-tiny);text-align:center;min-width:var(--ck-ui-component-min-height);min-height:var(--ck-ui-component-min-height);line-height:1;font-size:inherit;border:1px solid transparent;transition:box-shadow .2s ease-in-out;-webkit-appearance:none}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;border-color:transparent}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__icon{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(-1*var(--ck-spacing-small));margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-right:calc(-1*var(--ck-spacing-small));margin-left:var(--ck-spacing-small)}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-on-active-shadow)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{font-size:inherit;font-weight:inherit;color:inherit;cursor:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-action-active-shadow)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}"},function(t,e,n){var i=n(33);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-list{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{list-style-type:none;background:var(--ck-color-list-background)}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{min-height:unset;width:100%;text-align:left;border-radius:0;border:0;padding:calc(0.2*var(--ck-line-height-base)*var(--ck-font-size-base)) calc(0.4*var(--ck-line-height-base)*var(--ck-font-size-base))}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(1.2*var(--ck-line-height-base)*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:hover:not(ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{height:1px;width:100%;background:var(--ck-color-base-border)}"},function(t,e,n){var i=n(35);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:1.0769230769em;--ck-switch-button-toggle-spacing:1px;--ck-switch-button-translation:1.3846153847em}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(2*var(--ck-spacing-large))}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(2*var(--ck-spacing-large))}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{transition:background .4s ease;width:var(--ck-switch-button-toggle-width);background:var(--ck-color-switch-button-off-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(0.5*var(--ck-border-radius))}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{margin:var(--ck-switch-button-toggle-spacing);width:var(--ck-switch-button-toggle-inner-size);height:var(--ck-switch-button-toggle-inner-size);background:var(--ck-color-switch-button-inner-background);transition:all .3s ease}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var(--ck-switch-button-translation))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(-1*var(--ck-switch-button-translation)))}"},function(t,e,n){var i=n(37);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-toolbar-dropdown .ck.ck-toolbar .ck.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar-dropdown .ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}"},function(t,e,n){var i=n(39);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}"},function(t,e,n){var i=n(41);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-toolbar{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-flow:row nowrap;align-items:center}.ck.ck-toolbar>.ck-toolbar__items{display:flex;flex-flow:row wrap;align-items:center;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);padding:0 var(--ck-spacing-small);border:1px solid var(--ck-color-toolbar-border)}.ck.ck-toolbar>.ck-toolbar__items>*{margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{width:100%;margin:0;border-radius:0;border:0}.ck.ck-toolbar>.ck-toolbar__items>*,.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;width:1px;min-width:1px;margin-top:0;margin-bottom:0;background:var(--ck-color-toolbar-border)}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__grouped-dropdown,[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{padding-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__items>:last-child,[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__items>:last-child{margin-right:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_grouping>.ck-toolbar__items,[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{margin-right:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__grouped-dropdown,[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{padding-right:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__items>*,[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__items>*{margin-left:var(--ck-spacing-small);margin-right:0}.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__items>:last-child,[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__items>:last-child{margin-left:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_grouping>.ck-toolbar__items,[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{margin-left:var(--ck-spacing-small)}"},function(t,e,n){var i=n(43);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-editor{position:relative}.ck.ck-editor .ck-editor__top .ck-sticky-panel .ck-toolbar{z-index:var(--ck-z-modal)}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-bottom-width:0}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar{border-bottom-width:1px;border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:0}.ck.ck-editor__main>.ck-editor__editable{background:var(--ck-color-base-background);border-radius:0}.ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,.ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck.ck-editor__main>.ck-editor__editable:not(.ck-focused){border-color:var(--ck-color-base-border)}"},function(t,e,n){var i=n(45);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck-content blockquote{overflow:hidden;padding-right:1.5em;padding-left:1.5em;margin-left:0;margin-right:0;font-style:italic;border-left:5px solid #ccc}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}"},function(t,e,n){var i=n(47);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}"},function(t,e,n){var i=n(49);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-resizer-size:10px;--ck-resizer-border-width:1px;--ck-resizer-border-radius:2px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-tooltip-offset:10px;--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2}.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle:hover .ck-widget__selection-handle{visibility:visible}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);color:var(--ck-color-resizer-tooltip-text);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);font-size:var(--ck-font-size-tiny);display:block;padding:var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{top:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{top:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-width:var(--ck-widget-outline-thickness);outline-style:solid;outline-color:transparent;transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;background-color:var(--ck-color-widget-editable-focus-background)}.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child,.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{padding:4px;box-sizing:border-box;background-color:transparent;opacity:0;transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;transform:translateY(-100%);left:calc(0px - var(--ck-widget-outline-thickness))}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{width:var(--ck-widget-handler-icon-size);height:var(--ck-widget-handler-icon-size);color:var(--ck-color-widget-drag-handler-icon-color)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover .ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-focus-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover .ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-widget-hover-border)}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected .ck-widget__selection-handle,.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected .ck-widget__selection-handle:hover,.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover .ck-widget__selection-handle,.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck-editor__editable.ck-read-only .ck-widget{--ck-widget-outline-thickness:0}"},function(t,e,n){var i=n(51);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-labeled-input .ck-labeled-input__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-input .ck-labeled-input__status_error{color:var(--ck-color-base-error)}"},function(t,e,n){var i=n(53);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=":root{--ck-input-text-width:18em}.ck.ck-input-text{border-radius:0}.ck-rounded-corners .ck.ck-input-text,.ck.ck-input-text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-text{box-shadow:var(--ck-inner-shadow),0 0;background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);min-width:var(--ck-input-text-width);min-height:var(--ck-ui-component-min-height);transition-property:box-shadow,border;transition:.2s ease-in-out}.ck.ck-input-text:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),var(--ck-inner-shadow)}.ck.ck-input-text[readonly]{border:1px solid var(--ck-color-input-disabled-border);background:var(--ck-color-input-disabled-background);color:var(--ck-color-input-disabled-text)}.ck.ck-input-text[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),var(--ck-inner-shadow)}.ck.ck-input-text.ck-error{border-color:var(--ck-color-input-error-border);animation:ck-text-input-shake .3s ease both}.ck.ck-input-text.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),var(--ck-inner-shadow)}@keyframes ck-text-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}"},function(t,e,n){var i=n(55);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-input{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-input{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}.ck.ck-text-alternative-form{padding:var(--ck-spacing-standard)}.ck.ck-text-alternative-form:focus{outline:none}[dir=ltr] .ck.ck-text-alternative-form>:not(:first-child),[dir=rtl] .ck.ck-text-alternative-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-text-alternative-form{padding:0;width:calc(0.8*var(--ck-input-text-width))}.ck.ck-text-alternative-form .ck-labeled-input{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-text-alternative-form .ck-labeled-input .ck-input-text{min-width:0;width:100%}.ck.ck-text-alternative-form .ck-button{padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-text-alternative-form .ck-button{margin-left:0}[dir=ltr] .ck.ck-text-alternative-form .ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-text-alternative-form .ck-button{margin-left:0}[dir=rtl] .ck.ck-text-alternative-form .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}}"},function(t,e,n){var i=n(57);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:"";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{width:0;height:0;border-style:solid}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:var(--ck-balloon-arrow-height);border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:0}.ck.ck-balloon-panel[class*=arrow_n]:before{border-bottom-color:var(--ck-color-panel-border)}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-color:transparent;border-right-color:transparent;border-top-color:transparent}.ck.ck-balloon-panel[class*=arrow_n]:after{border-bottom-color:var(--ck-color-panel-background);margin-top:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:0;border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-top-color:var(--ck-color-panel-border)}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-color:transparent;border-bottom-color:transparent;border-right-color:transparent}.ck.ck-balloon-panel[class*=arrow_s]:after{border-top-color:var(--ck-color-panel-background);margin-bottom:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(-1*var(--ck-balloon-arrow-half-width));top:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(2*var(--ck-balloon-arrow-half-width));top:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(2*var(--ck-balloon-arrow-half-width));top:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{left:50%;margin-left:calc(-1*var(--ck-balloon-arrow-half-width));bottom:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{left:calc(2*var(--ck-balloon-arrow-half-width));bottom:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{right:calc(2*var(--ck-balloon-arrow-half-width));bottom:calc(-1*var(--ck-balloon-arrow-height))}'},function(t,e,n){var i=n(59);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck .ck-balloon-rotator__navigation{display:flex;align-items:center;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-small)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}"},function(t,e,n){var i=n(61);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);width:100%;height:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}"},function(t,e,n){var i=n(63);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck-content .image{display:table;clear:both;text-align:center;margin:1em auto}.ck-content .image>img{display:block;margin:0 auto;max-width:100%;min-width:50px}"},function(t,e,n){var i=n(65);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-editor__editable .image{position:relative}.ck.ck-editor__editable .image .ck-progress-bar{position:absolute;top:0;left:0}.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image .ck-progress-bar{height:2px;width:0;background:var(--ck-color-upload-bar-background);transition:width .1s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}"},function(t,e,n){var i=n(67);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports='.ck-image-upload-complete-icon{display:block;position:absolute;top:10px;right:10px;border-radius:50%}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20px;--ck-image-upload-icon-width:2px}.ck-image-upload-complete-icon{width:var(--ck-image-upload-icon-size);height:var(--ck-image-upload-icon-size);opacity:0;background:var(--ck-color-image-upload-icon-background);animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;animation-fill-mode:forwards,forwards;animation-duration:.5s,.5s;font-size:var(--ck-image-upload-icon-size);animation-delay:0ms,3s}.ck-image-upload-complete-icon:after{left:25%;top:50%;opacity:0;height:0;width:0;transform:scaleX(-1) rotate(135deg);transform-origin:left top;border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);animation-name:ck-upload-complete-icon-check;animation-duration:.5s;animation-delay:.5s;animation-fill-mode:forwards;box-sizing:border-box}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{opacity:1;width:0;height:0}33%{width:.3em;height:0}to{opacity:1;width:.3em;height:.45em}}'},function(t,e,n){var i=n(69);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports='.ck .ck-upload-placeholder-loader{position:absolute;display:flex;align-items:center;justify-content:center;top:0;left:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px}.ck .ck-image-upload-placeholder{width:100%;margin:0}.ck .ck-upload-placeholder-loader{width:100%;height:100%}.ck .ck-upload-placeholder-loader:before{width:var(--ck-upload-placeholder-loader-size);height:var(--ck-upload-placeholder-loader-size);border-radius:50%;border-top:3px solid var(--ck-color-upload-placeholder-loader);border-right:2px solid transparent;animation:ck-upload-placeholder-loader 1s linear infinite}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}'},function(t,e){t.exports=".ck.ck-heading_heading1{font-size:20px}.ck.ck-heading_heading2{font-size:17px}.ck.ck-heading_heading3{font-size:14px}.ck[class*=ck-heading_heading]{font-weight:700}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label{width:8em}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__panel .ck-list__item{min-width:18em}"},function(t,e,n){var i=n(72);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck-content .image>figcaption{display:table-caption;caption-side:bottom;word-break:break-word;color:#333;background-color:#f7f7f7;padding:.6em;font-size:.75em;outline-offset:-1px}"},function(t,e,n){var i=n(74);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=":root{--ck-image-style-spacing:1.5em}.ck-content .image-style-align-center,.ck-content .image-style-align-left,.ck-content .image-style-align-right,.ck-content .image-style-side{max-width:50%}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}"},function(t,e,n){var i=n(76);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-input{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form{padding:var(--ck-spacing-standard)}.ck.ck-link-form:focus{outline:none}[dir=ltr] .ck.ck-link-form>:not(:first-child),[dir=rtl] .ck.ck-link-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-form{padding:0;width:calc(0.8*var(--ck-input-text-width))}.ck.ck-link-form .ck-labeled-input{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-form .ck-labeled-input .ck-input-text{min-width:0;width:100%}.ck.ck-link-form .ck-button{padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-form .ck-button{margin-left:0}[dir=ltr] .ck.ck-link-form .ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-link-form .ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}}.ck.ck-link-form_layout-vertical{padding:0;min-width:var(--ck-input-text-width)}.ck.ck-link-form_layout-vertical .ck-labeled-input{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-input .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical .ck-button{padding:var(--ck-spacing-standard);margin:0;border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border);width:50%}[dir=ltr] .ck.ck-link-form_layout-vertical .ck-button{margin-left:0}[dir=ltr] .ck.ck-link-form_layout-vertical .ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin-left:0}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{border:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}"},function(t,e,n){var i=n(78);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions{padding:var(--ck-spacing-standard)}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{padding:0 var(--ck-spacing-medium);color:var(--ck-color-link-default);text-overflow:ellipsis;cursor:pointer;max-width:var(--ck-input-text-width);min-width:3em;text-align:center}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions:focus{outline:none}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions{padding:0;width:calc(0.8*var(--ck-input-text-width))}.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{min-width:0;max-width:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview):first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview):last-of-type{border-right:1px solid var(--ck-color-base-border)}}"},function(t,e,n){var i=n(80);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports='.ck-media__wrapper .ck-media__placeholder{display:flex;flex-direction:column;align-items:center}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-tooltip{display:block}@media (hover:none){.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-tooltip{display:none}}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url{max-width:100%;position:relative}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url:hover .ck-tooltip{visibility:visible;opacity:1}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-media__placeholder__url__text{overflow:hidden;display:block}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck-media__placeholder__icon *{display:none}.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper>:not(.ck-media__placeholder),.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder{pointer-events:none}:root{--ck-media-embed-placeholder-icon-size:3em;--ck-color-media-embed-placeholder-url-text:#757575;--ck-color-media-embed-placeholder-url-text-hover:var(--ck-color-base-text)}.ck-media__wrapper{margin:0 auto}.ck-media__wrapper .ck-media__placeholder{padding:calc(3*var(--ck-spacing-standard));background:var(--ck-color-base-foreground)}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon{min-width:var(--ck-media-embed-placeholder-icon-size);height:var(--ck-media-embed-placeholder-icon-size);margin-bottom:var(--ck-spacing-large);background-position:50%;background-size:cover}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon .ck-icon{width:100%;height:100%}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-media__placeholder__url__text{color:var(--ck-color-media-embed-placeholder-url-text);white-space:nowrap;text-align:center;font-style:italic;text-overflow:ellipsis}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-media__placeholder__url__text:hover{color:var(--ck-color-media-embed-placeholder-url-text-hover);cursor:pointer;text-decoration:underline}.ck-media__wrapper[data-oembed-url*="open.spotify.com"]{max-width:300px;max-height:380px}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder{background:linear-gradient(90deg,#71c6f4,#0d70a5)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDAwIj48cGF0aCBkPSJNNDAwIDIwMGMwIDExMC41LTg5LjUgMjAwLTIwMCAyMDBTMCAzMTAuNSAwIDIwMCA4OS41IDAgMjAwIDBzMjAwIDg5LjUgMjAwIDIwMHpNMTYzLjQgMzA1LjVjODguNyAwIDEzNy4yLTczLjUgMTM3LjItMTM3LjIgMC0yLjEgMC00LjItLjEtNi4yIDkuNC02LjggMTcuNi0xNS4zIDI0LjEtMjUtOC42IDMuOC0xNy45IDYuNC0yNy43IDcuNiAxMC02IDE3LjYtMTUuNCAyMS4yLTI2LjctOS4zIDUuNS0xOS42IDkuNS0zMC42IDExLjctOC44LTkuNC0yMS4zLTE1LjItMzUuMi0xNS4yLTI2LjYgMC00OC4yIDIxLjYtNDguMiA0OC4yIDAgMy44LjQgNy41IDEuMyAxMS00MC4xLTItNzUuNi0yMS4yLTk5LjQtNTAuNC00LjEgNy4xLTYuNSAxNS40LTYuNSAyNC4yIDAgMTYuNyA4LjUgMzEuNSAyMS41IDQwLjEtNy45LS4yLTE1LjMtMi40LTIxLjgtNnYuNmMwIDIzLjQgMTYuNiA0Mi44IDM4LjcgNDcuMy00IDEuMS04LjMgMS43LTEyLjcgMS43LTMuMSAwLTYuMS0uMy05LjEtLjkgNi4xIDE5LjIgMjMuOSAzMy4xIDQ1IDMzLjUtMTYuNSAxMi45LTM3LjMgMjAuNi01OS45IDIwLjYtMy45IDAtNy43LS4yLTExLjUtLjcgMjEuMSAxMy44IDQ2LjUgMjEuOCA3My43IDIxLjgiIGZpbGw9IiNmZmYiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text{color:#b8e6ff}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0yMDYuNDc3IDI2MC45bC0yOC45ODcgMjguOTg3YTUuMjE4IDUuMjE4IDAgMDAzLjc4IDEuNjFoNDkuNjIxYzEuNjk0IDAgMy4xOS0uNzk4IDQuMTQ2LTIuMDM3eiIgZmlsbD0iIzVjODhjNSIvPjxwYXRoIGQ9Ik0yMjYuNzQyIDIyMi45ODhjLTkuMjY2IDAtMTYuNzc3IDcuMTctMTYuNzc3IDE2LjAxNC4wMDcgMi43NjIuNjYzIDUuNDc0IDIuMDkzIDcuODc1LjQzLjcwMy44MyAxLjQwOCAxLjE5IDIuMTA3LjMzMy41MDIuNjUgMS4wMDUuOTUgMS41MDguMzQzLjQ3Ny42NzMuOTU3Ljk4OCAxLjQ0IDEuMzEgMS43NjkgMi41IDMuNTAyIDMuNjM3IDUuMTY4Ljc5MyAxLjI3NSAxLjY4MyAyLjY0IDIuNDY2IDMuOTkgMi4zNjMgNC4wOTQgNC4wMDcgOC4wOTIgNC42IDEzLjkxNHYuMDEyYy4xODIuNDEyLjUxNi42NjYuODc5LjY2Ny40MDMtLjAwMS43NjgtLjMxNC45My0uNzk5LjYwMy01Ljc1NiAyLjIzOC05LjcyOSA0LjU4NS0xMy43OTQuNzgyLTEuMzUgMS42NzMtMi43MTUgMi40NjUtMy45OSAxLjEzNy0xLjY2NiAyLjMyOC0zLjQgMy42MzgtNS4xNjkuMzE1LS40ODIuNjQ1LS45NjIuOTg4LTEuNDM5LjMtLjUwMy42MTctMS4wMDYuOTUtMS41MDguMzU5LS43Ljc2LTEuNDA0IDEuMTktMi4xMDcgMS40MjYtMi40MDIgMi01LjExNCAyLjAwNC03Ljg3NSAwLTguODQ0LTcuNTExLTE2LjAxNC0xNi43NzYtMTYuMDE0eiIgZmlsbD0iI2RkNGIzZSIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48ZWxsaXBzZSByeT0iNS41NjQiIHJ4PSI1LjgyOCIgY3k9IjIzOS4wMDIiIGN4PSIyMjYuNzQyIiBmaWxsPSIjODAyZDI3IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0xOTAuMzAxIDIzNy4yODNjLTQuNjcgMC04LjQ1NyAzLjg1My04LjQ1NyA4LjYwNnMzLjc4NiA4LjYwNyA4LjQ1NyA4LjYwN2MzLjA0MyAwIDQuODA2LS45NTggNi4zMzctMi41MTYgMS41My0xLjU1NyAyLjA4Ny0zLjkxMyAyLjA4Ny02LjI5IDAtLjM2Mi0uMDIzLS43MjItLjA2NC0xLjA3OWgtOC4yNTd2My4wNDNoNC44NWMtLjE5Ny43NTktLjUzMSAxLjQ1LTEuMDU4IDEuOTg2LS45NDIuOTU4LTIuMDI4IDEuNTQ4LTMuOTAxIDEuNTQ4LTIuODc2IDAtNS4yMDgtMi4zNzItNS4yMDgtNS4yOTkgMC0yLjkyNiAyLjMzMi01LjI5OSA1LjIwOC01LjI5OSAxLjM5OSAwIDIuNjE4LjQwNyAzLjU4NCAxLjI5M2wyLjM4MS0yLjM4YzAtLjAwMi0uMDAzLS4wMDQtLjAwNC0uMDA1LTEuNTg4LTEuNTI0LTMuNjItMi4yMTUtNS45NTUtMi4yMTV6bTQuNDMgNS42NmwuMDAzLjAwNnYtLjAwM3oiIGZpbGw9IiNmZmYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTIxNS4xODQgMjUxLjkyOWwtNy45OCA3Ljk3OSAyOC40NzcgMjguNDc1YTUuMjMzIDUuMjMzIDAgMDAuNDQ5LTIuMTIzdi0zMS4xNjVjLS40NjkuNjc1LS45MzQgMS4zNDktMS4zODIgMi4wMDUtLjc5MiAxLjI3NS0xLjY4MiAyLjY0LTIuNDY1IDMuOTktMi4zNDcgNC4wNjUtMy45ODIgOC4wMzgtNC41ODUgMTMuNzk0LS4xNjIuNDg1LS41MjcuNzk4LS45My43OTktLjM2My0uMDAxLS42OTctLjI1NS0uODc5LS42Njd2LS4wMTJjLS41OTMtNS44MjItMi4yMzctOS44Mi00LjYtMTMuOTE0LS43ODMtMS4zNS0xLjY3My0yLjcxNS0yLjQ2Ni0zLjk5LTEuMTM3LTEuNjY2LTIuMzI3LTMuNC0zLjYzNy01LjE2OWwtLjAwMi0uMDAzeiIgZmlsbD0iI2MzYzNjMyIvPjxwYXRoIGQ9Ik0yMTIuOTgzIDI0OC40OTVsLTM2Ljk1MiAzNi45NTN2LjgxMmE1LjIyNyA1LjIyNyAwIDAwNS4yMzggNS4yMzhoMS4wMTVsMzUuNjY2LTM1LjY2NmExMzYuMjc1IDEzNi4yNzUgMCAwMC0yLjc2NC0zLjkgMzcuNTc1IDM3LjU3NSAwIDAwLS45ODktMS40NCAzNS4xMjcgMzUuMTI3IDAgMDAtLjk1LTEuNTA4Yy0uMDgzLS4xNjItLjE3Ni0uMzI2LS4yNjQtLjQ4OXoiIGZpbGw9IiNmZGRjNGYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTIxMS45OTggMjYxLjA4M2wtNi4xNTIgNi4xNTEgMjQuMjY0IDI0LjI2NGguNzgxYTUuMjI3IDUuMjI3IDAgMDA1LjIzOS01LjIzOHYtMS4wNDV6IiBmaWxsPSIjZmZmIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjwvZz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder{background:#4268b3}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik05NjcuNDg0IDBINTYuNTE3QzI1LjMwNCAwIDAgMjUuMzA0IDAgNTYuNTE3djkxMC45NjZDMCA5OTguNjk0IDI1LjI5NyAxMDI0IDU2LjUyMiAxMDI0SDU0N1Y2MjhINDE0VjQ3M2gxMzNWMzU5LjAyOWMwLTEzMi4yNjIgODAuNzczLTIwNC4yODIgMTk4Ljc1Ni0yMDQuMjgyIDU2LjUxMyAwIDEwNS4wODYgNC4yMDggMTE5LjI0NCA2LjA4OVYyOTlsLTgxLjYxNi4wMzdjLTYzLjk5MyAwLTc2LjM4NCAzMC40OTItNzYuMzg0IDc1LjIzNlY0NzNoMTUzLjQ4N2wtMTkuOTg2IDE1NUg3MDd2Mzk2aDI2MC40ODRjMzEuMjEzIDAgNTYuNTE2LTI1LjMwMyA1Ni41MTYtNTYuNTE2VjU2LjUxNUMxMDI0IDI1LjMwMyA5OTguNjk3IDAgOTY3LjQ4NCAwIiBmaWxsPSIjRkZGRkZFIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#cdf}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder{background:linear-gradient(-135deg,#1400c8,#b900b4,#f50000)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTA0IiBoZWlnaHQ9IjUwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIC4xNTloNTAzLjg0MVY1MDMuOTRIMHoiLz48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48cGF0aCBkPSJNMjUxLjkyMS4xNTljLTY4LjQxOCAwLTc2Ljk5Ny4yOS0xMDMuODY3IDEuNTE2LTI2LjgxNCAxLjIyMy00NS4xMjcgNS40ODItNjEuMTUxIDExLjcxLTE2LjU2NiA2LjQzNy0zMC42MTUgMTUuMDUxLTQ0LjYyMSAyOS4wNTYtMTQuMDA1IDE0LjAwNi0yMi42MTkgMjguMDU1LTI5LjA1NiA0NC42MjEtNi4yMjggMTYuMDI0LTEwLjQ4NyAzNC4zMzctMTEuNzEgNjEuMTUxQy4yOSAxNzUuMDgzIDAgMTgzLjY2MiAwIDI1Mi4wOGMwIDY4LjQxNy4yOSA3Ni45OTYgMS41MTYgMTAzLjg2NiAxLjIyMyAyNi44MTQgNS40ODIgNDUuMTI3IDExLjcxIDYxLjE1MSA2LjQzNyAxNi41NjYgMTUuMDUxIDMwLjYxNSAyOS4wNTYgNDQuNjIxIDE0LjAwNiAxNC4wMDUgMjguMDU1IDIyLjYxOSA0NC42MjEgMjkuMDU3IDE2LjAyNCA2LjIyNyAzNC4zMzcgMTAuNDg2IDYxLjE1MSAxMS43MDkgMjYuODcgMS4yMjYgMzUuNDQ5IDEuNTE2IDEwMy44NjcgMS41MTYgNjguNDE3IDAgNzYuOTk2LS4yOSAxMDMuODY2LTEuNTE2IDI2LjgxNC0xLjIyMyA0NS4xMjctNS40ODIgNjEuMTUxLTExLjcwOSAxNi41NjYtNi40MzggMzAuNjE1LTE1LjA1MiA0NC42MjEtMjkuMDU3IDE0LjAwNS0xNC4wMDYgMjIuNjE5LTI4LjA1NSAyOS4wNTctNDQuNjIxIDYuMjI3LTE2LjAyNCAxMC40ODYtMzQuMzM3IDExLjcwOS02MS4xNTEgMS4yMjYtMjYuODcgMS41MTYtMzUuNDQ5IDEuNTE2LTEwMy44NjYgMC02OC40MTgtLjI5LTc2Ljk5Ny0xLjUxNi0xMDMuODY3LTEuMjIzLTI2LjgxNC01LjQ4Mi00NS4xMjctMTEuNzA5LTYxLjE1MS02LjQzOC0xNi41NjYtMTUuMDUyLTMwLjYxNS0yOS4wNTctNDQuNjIxLTE0LjAwNi0xNC4wMDUtMjguMDU1LTIyLjYxOS00NC42MjEtMjkuMDU2LTE2LjAyNC02LjIyOC0zNC4zMzctMTAuNDg3LTYxLjE1MS0xMS43MUMzMjguOTE3LjQ0OSAzMjAuMzM4LjE1OSAyNTEuOTIxLjE1OXptMCA0NS4zOTFjNjcuMjY1IDAgNzUuMjMzLjI1NyAxMDEuNzk3IDEuNDY5IDI0LjU2MiAxLjEyIDM3LjkwMSA1LjIyNCA0Ni43NzggOC42NzQgMTEuNzU5IDQuNTcgMjAuMTUxIDEwLjAyOSAyOC45NjYgMTguODQ1IDguODE2IDguODE1IDE0LjI3NSAxNy4yMDcgMTguODQ1IDI4Ljk2NiAzLjQ1IDguODc3IDcuNTU0IDIyLjIxNiA4LjY3NCA0Ni43NzggMS4yMTIgMjYuNTY0IDEuNDY5IDM0LjUzMiAxLjQ2OSAxMDEuNzk4IDAgNjcuMjY1LS4yNTcgNzUuMjMzLTEuNDY5IDEwMS43OTctMS4xMiAyNC41NjItNS4yMjQgMzcuOTAxLTguNjc0IDQ2Ljc3OC00LjU3IDExLjc1OS0xMC4wMjkgMjAuMTUxLTE4Ljg0NSAyOC45NjYtOC44MTUgOC44MTYtMTcuMjA3IDE0LjI3NS0yOC45NjYgMTguODQ1LTguODc3IDMuNDUtMjIuMjE2IDcuNTU0LTQ2Ljc3OCA4LjY3NC0yNi41NiAxLjIxMi0zNC41MjcgMS40NjktMTAxLjc5NyAxLjQ2OS02Ny4yNzEgMC03NS4yMzctLjI1Ny0xMDEuNzk4LTEuNDY5LTI0LjU2Mi0xLjEyLTM3LjkwMS01LjIyNC00Ni43NzgtOC42NzQtMTEuNzU5LTQuNTctMjAuMTUxLTEwLjAyOS0yOC45NjYtMTguODQ1LTguODE1LTguODE1LTE0LjI3NS0xNy4yMDctMTguODQ1LTI4Ljk2Ni0zLjQ1LTguODc3LTcuNTU0LTIyLjIxNi04LjY3NC00Ni43NzgtMS4yMTItMjYuNTY0LTEuNDY5LTM0LjUzMi0xLjQ2OS0xMDEuNzk3IDAtNjcuMjY2LjI1Ny03NS4yMzQgMS40NjktMTAxLjc5OCAxLjEyLTI0LjU2MiA1LjIyNC0zNy45MDEgOC42NzQtNDYuNzc4IDQuNTctMTEuNzU5IDEwLjAyOS0yMC4xNTEgMTguODQ1LTI4Ljk2NiA4LjgxNS04LjgxNiAxNy4yMDctMTQuMjc1IDI4Ljk2Ni0xOC44NDUgOC44NzctMy40NSAyMi4yMTYtNy41NTQgNDYuNzc4LTguNjc0IDI2LjU2NC0xLjIxMiAzNC41MzItMS40NjkgMTAxLjc5OC0xLjQ2OXoiIGZpbGw9IiNGRkYiIG1hc2s9InVybCgjYikiLz48cGF0aCBkPSJNMjUxLjkyMSAzMzYuMDUzYy00Ni4zNzggMC04My45NzQtMzcuNTk2LTgzLjk3NC04My45NzMgMC00Ni4zNzggMzcuNTk2LTgzLjk3NCA4My45NzQtODMuOTc0IDQ2LjM3NyAwIDgzLjk3MyAzNy41OTYgODMuOTczIDgzLjk3NCAwIDQ2LjM3Ny0zNy41OTYgODMuOTczLTgzLjk3MyA4My45NzN6bTAtMjEzLjMzOGMtNzEuNDQ3IDAtMTI5LjM2NSA1Ny45MTgtMTI5LjM2NSAxMjkuMzY1IDAgNzEuNDQ2IDU3LjkxOCAxMjkuMzY0IDEyOS4zNjUgMTI5LjM2NCA3MS40NDYgMCAxMjkuMzY0LTU3LjkxOCAxMjkuMzY0LTEyOS4zNjQgMC03MS40NDctNTcuOTE4LTEyOS4zNjUtMTI5LjM2NC0xMjkuMzY1ek00MTYuNjI3IDExNy42MDRjMCAxNi42OTYtMTMuNTM1IDMwLjIzLTMwLjIzMSAzMC4yMy0xNi42OTUgMC0zMC4yMy0xMy41MzQtMzAuMjMtMzAuMjMgMC0xNi42OTYgMTMuNTM1LTMwLjIzMSAzMC4yMy0zMC4yMzEgMTYuNjk2IDAgMzAuMjMxIDEzLjUzNSAzMC4yMzEgMzAuMjMxIiBmaWxsPSIjRkZGIi8+PC9nPjwvc3ZnPg==)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#ffe0fe}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}'},function(t,e,n){var i=n(82);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck.ck-media-form{display:flex;align-items:flex-start;flex-direction:row;flex-wrap:nowrap}.ck.ck-media-form .ck-labeled-input{display:inline-block}.ck.ck-media-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-media-form{flex-wrap:wrap}.ck.ck-media-form .ck-labeled-input{flex-basis:100%}.ck.ck-media-form .ck-button{flex-basis:50%}}.ck.ck-media-form{padding:var(--ck-spacing-standard)}.ck.ck-media-form:focus{outline:none}[dir=ltr] .ck.ck-media-form>:not(:first-child),[dir=rtl] .ck.ck-media-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-media-form{padding:0;width:calc(0.8*var(--ck-input-text-width))}.ck.ck-media-form .ck-labeled-input{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-media-form .ck-labeled-input .ck-input-text{min-width:0;width:100%}.ck.ck-media-form .ck-labeled-input .ck-labeled-input__error{white-space:normal}.ck.ck-media-form .ck-button{padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-media-form .ck-button{margin-left:0}[dir=ltr] .ck.ck-media-form .ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-media-form .ck-button{margin-left:0}[dir=rtl] .ck.ck-media-form .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}}"},function(t,e,n){var i=n(84);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck-content .media{clear:both;margin:1em 0;display:block;min-width:15em}"},function(t,e,n){var i=n(86);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=":root{--ck-color-table-focused-cell-background:#f5fafe}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused{background:var(--ck-color-table-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}"},function(t,e,n){var i=n(88);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=":root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px;--ck-insert-table-dropdown-box-border-color:#bfbfbf;--ck-insert-table-dropdown-box-border-active-color:#53a0e4;--ck-insert-table-dropdown-box-active-background:#c7e5ff}.ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap;width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2);padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0}.ck .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{width:var(--ck-insert-table-dropdown-box-width);height:var(--ck-insert-table-dropdown-box-height);margin:var(--ck-insert-table-dropdown-box-margin);border:1px solid var(--ck-insert-table-dropdown-box-border-color);border-radius:1px}.ck .ck-insert-table-dropdown-grid-box.ck-on{border-color:var(--ck-insert-table-dropdown-box-border-active-color);background:var(--ck-insert-table-dropdown-box-active-background)}"},function(t,e,n){var i=n(90);"string"==typeof i&&(i=[[t.i,i,""]]);var o={injectType:"singletonStyleTag",insert:"head",singleton:!0};n(1)(i,o);i.locals&&(t.exports=i.locals)},function(t,e){t.exports=".ck-content .table{margin:1em auto;display:table}.ck-content .table table{border-collapse:collapse;border-spacing:0;border:1px double #b3b3b3}.ck-content .table table td,.ck-content .table table th{min-width:2em;padding:.4em;border-color:#d9d9d9}.ck-content .table table th{font-weight:700;background:#fafafa}"},function(t,e,n){"use strict";n.r(e);var i=n(3),o=i.a.Symbol,r=Object.prototype,s=r.hasOwnProperty,a=r.toString,c=o?o.toStringTag:void 0;var l=function(t){var e=s.call(t,c),n=t[c];try{t[c]=void 0;var i=!0}catch(t){}var o=a.call(t);return i&&(e?t[c]=n:delete t[c]),o},d=Object.prototype.toString;var h=function(t){return d.call(t)},u="[object Null]",f="[object Undefined]",g=o?o.toStringTag:void 0;var m=function(t){return null==t?void 0===t?f:u:g&&g in Object(t)?l(t):h(t)};var p=function(t,e){return function(n){return t(e(n))}},b=p(Object.getPrototypeOf,Object);var w=function(t){return null!=t&&"object"==typeof t},k="[object Object]",_=Function.prototype,v=Object.prototype,y=_.toString,x=v.hasOwnProperty,A=y.call(Object);var T=function(t){if(!w(t)||m(t)!=k)return!1;var e=b(t);if(null===e)return!0;var n=x.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&y.call(n)==A};var C=function(){this.__data__=[],this.size=0};var P=function(t,e){return t===e||t!=t&&e!=e};var S=function(t,e){for(var n=t.length;n--;)if(P(t[n][0],e))return n;return-1},M=Array.prototype.splice;var E=function(t){var e=this.__data__,n=S(e,t);return!(n<0||(n==e.length-1?e.pop():M.call(e,n,1),--this.size,0))};var I=function(t){var e=this.__data__,n=S(e,t);return n<0?void 0:e[n][1]};var N=function(t){return S(this.__data__,t)>-1};var O=function(t,e){var n=this.__data__,i=S(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this};function R(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t-1&&t%1==0&&t<=Kt},Zt={};Zt["[object Float32Array]"]=Zt["[object Float64Array]"]=Zt["[object Int8Array]"]=Zt["[object Int16Array]"]=Zt["[object Int32Array]"]=Zt["[object Uint8Array]"]=Zt["[object Uint8ClampedArray]"]=Zt["[object Uint16Array]"]=Zt["[object Uint32Array]"]=!0,Zt["[object Arguments]"]=Zt["[object Array]"]=Zt["[object ArrayBuffer]"]=Zt["[object Boolean]"]=Zt["[object DataView]"]=Zt["[object Date]"]=Zt["[object Error]"]=Zt["[object Function]"]=Zt["[object Map]"]=Zt["[object Number]"]=Zt["[object Object]"]=Zt["[object RegExp]"]=Zt["[object Set]"]=Zt["[object String]"]=Zt["[object WeakMap]"]=!1;var Xt=function(t){return w(t)&&Jt(t.length)&&!!Zt[m(t)]};var te=function(t){return function(e){return t(e)}},ee=n(4),ne=ee.a&&ee.a.isTypedArray,ie=ne?te(ne):Xt,oe=Object.prototype.hasOwnProperty;var re=function(t,e){var n=Wt(t),i=!n&&qt(t),o=!n&&!i&&Object(Yt.a)(t),r=!n&&!i&&!o&&ie(t),s=n||i||o||r,a=s?Vt(t.length,String):[],c=a.length;for(var l in t)!e&&!oe.call(t,l)||s&&("length"==l||o&&("offset"==l||"parent"==l)||r&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Qt(l,c))||a.push(l);return a},se=Object.prototype;var ae=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||se)},ce=p(Object.keys,Object),le=Object.prototype.hasOwnProperty;var de=function(t){if(!ae(t))return ce(t);var e=[];for(var n in Object(t))le.call(t,n)&&"constructor"!=n&&e.push(n);return e};var he=function(t){return null!=t&&Jt(t.length)&&!W(t)};var ue=function(t){return he(t)?re(t):de(t)};var fe=function(t,e){return t&&jt(e,ue(e),t)};var ge=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e},me=Object.prototype.hasOwnProperty;var pe=function(t){if(!B(t))return ge(t);var e=ae(t),n=[];for(var i in t)("constructor"!=i||!e&&me.call(t,i))&&n.push(i);return n};var be=function(t){return he(t)?re(t,!0):pe(t)};var we=function(t,e){return t&&jt(e,be(e),t)},ke=n(12);var _e=function(t,e){var n=-1,i=t.length;for(e||(e=Array(i));++n{this._setToTarget(t,i,e[i],n)})}}function $n(t){return Wn(t)?t:void 0}var Gn=n(0);var Qn=function(){return function t(){t.called=!0}};class Kn{constructor(t,e){this.source=t,this.name=e,this.path=[],this.stop=Qn(),this.off=Qn()}}function Jn(){let t="e";for(let e=0;e<8;e++)t+=Math.floor(65536*(1+Math.random())).toString(16).substring(1);return t}var Zn={get(t){return"number"!=typeof t?this[t]||this.normal:t},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5};n(6);const Xn=Symbol("listeningTo"),ti=Symbol("emitterId");var ei={on(t,e,n={}){this.listenTo(this,t,e,n)},once(t,e,n){let i=!1;this.listenTo(this,t,function(t,...n){i||(i=!0,t.off(),e.call(this,t,...n))},n)},off(t,e){this.stopListening(this,t,e)},listenTo(t,e,n,i={}){let o,r;this[Xn]||(this[Xn]={});const s=this[Xn];ii(t)||ni(t);const a=ii(t);(o=s[a])||(o=s[a]={emitter:t,callbacks:{}}),(r=o.callbacks[e])||(r=o.callbacks[e]=[]),r.push(n),function(t,e){const n=oi(t);if(n[e])return;let i=e,o=null;const r=[];for(;""!==i&&!n[i];)n[i]={callbacks:[],childEvents:[]},r.push(n[i]),o&&n[i].childEvents.push(o),o=i,i=i.substr(0,i.lastIndexOf(":"));if(""!==i){for(const t of r)t.callbacks=n[i].callbacks.slice();n[i].childEvents.push(o)}}(t,e);const c=ri(t,e),l=Zn.get(i.priority),d={callback:n,priority:l};for(const t of c){let e=!1;for(let n=0;n-1?t(e,n.substr(0,n.lastIndexOf(":"))):null;return i.callbacks}(this,i);if(n.path.push(this),o){const t=[n,...e];o=Array.from(o);for(let e=0;e{this._delegations||(this._delegations=new Map),t.forEach(t=>{const i=this._delegations.get(t);i?i.set(e,n):this._delegations.set(t,new Map([[e,n]]))})}}},stopDelegating(t,e){if(this._delegations)if(t)if(e){const n=this._delegations.get(t);n&&n.delete(e)}else this._delegations.delete(t);else this._delegations.clear()}};function ni(t,e){t[ti]||(t[ti]=e||Jn())}function ii(t){return t[ti]}function oi(t){return t._events||Object.defineProperty(t,"_events",{value:{}}),t._events}function ri(t,e){const n=oi(t)[e];if(!n)return[];let i=[n.callbacks];for(let e=0;e{Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e)).forEach(n=>{if(n in t.prototype)return;const i=Object.getOwnPropertyDescriptor(e,n);i.enumerable=!1,Object.defineProperty(t.prototype,n,i)})})}function li(t,e){const n=Math.min(t.length,e.length);for(let i=0;it.data.length)throw new Gn.b("view-textproxy-wrong-offsetintext: Given offsetInText value is incorrect.",this);if(n<0||e+n>t.data.length)throw new Gn.b("view-textproxy-wrong-length: Given length value is incorrect.",this);this.data=t.data.substring(e,e+n),this.offsetInText=e}get offsetSize(){return this.data.length}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}is(t){return"textProxy"==t||"view:textProxy"==t}getAncestors(t={includeSelf:!1,parentFirst:!1}){const e=[];let n=t.includeSelf?this.textNode:this.parent;for(;null!==n;)e[t.parentFirst?"push":"unshift"](n),n=n.parent;return e}}function mi(t){const e=new Map;for(const n in t)e.set(n,t[n]);return e}function pi(t){return!(!t||!t[Symbol.iterator])}class bi{constructor(...t){this._patterns=[],this.add(...t)}add(...t){for(let e of t)("string"==typeof e||e instanceof RegExp)&&(e={name:e}),e.classes&&("string"==typeof e.classes||e.classes instanceof RegExp)&&(e.classes=[e.classes]),this._patterns.push(e)}match(...t){for(const e of t)for(const t of this._patterns){const n=wi(e,t);if(n)return{element:e,pattern:t,match:n}}return null}matchAll(...t){const e=[];for(const n of t)for(const t of this._patterns){const i=wi(n,t);i&&e.push({element:n,pattern:t,match:i})}return e.length>0?e:null}getElementName(){if(1!==this._patterns.length)return null;const t=this._patterns[0],e=t.name;return"function"==typeof t||!e||e instanceof RegExp?null:e}}function wi(t,e){if("function"==typeof e)return e(t);const n={};return e.name&&(n.name=function(t,e){if(t instanceof RegExp)return t.test(e);return t===e}(e.name,t.name),!n.name)?null:e.attributes&&(n.attributes=function(t,e){const n=[];for(const i in t){const o=t[i];if(!e.hasAttribute(i))return null;{const t=e.getAttribute(i);if(!0===o)n.push(i);else if(o instanceof RegExp){if(!o.test(t))return null;n.push(i)}else{if(t!==o)return null;n.push(i)}}}return n}(e.attributes,t),!n.attributes)?null:!(e.classes&&(n.classes=function(t,e){const n=[];for(const i of t)if(i instanceof RegExp){const t=e.getClassNames();for(const e of t)i.test(e)&&n.push(e);if(0===n.length)return null}else{if(!e.hasClass(i))return null;n.push(i)}return n}(e.classes,t),!n.classes))&&(!(e.styles&&(n.styles=function(t,e){const n=[];for(const i in t){const o=t[i];if(!e.hasStyle(i))return null;{const t=e.getStyle(i);if(o instanceof RegExp){if(!o.test(t))return null;n.push(i)}else{if(t!==o)return null;n.push(i)}}}return n}(e.styles,t),!n.styles))&&n)}class ki extends ui{constructor(t,e,n){if(super(),this.name=t,this._attrs=function(t){t=T(t)?mi(t):new Map(t);for(const[e,n]of t)null===n?t.delete(e):"string"!=typeof n&&t.set(e,String(n));return t}(e),this._children=[],n&&this._insertChild(0,n),this._classes=new Set,this._attrs.has("class")){const t=this._attrs.get("class");vi(this._classes,t),this._attrs.delete("class")}this._styles=new Map,this._attrs.has("style")&&(_i(this._styles,this._attrs.get("style")),this._attrs.delete("style")),this._customProperties=new Map}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}is(t,e=null){const n=t.replace(/^view:/,"");return e?"element"==n&&e==this.name:"element"==n||n==this.name||super.is(t)}getChild(t){return this._children[t]}getChildIndex(t){return this._children.indexOf(t)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes.size>0&&(yield"class"),this._styles.size>0&&(yield"style"),yield*this._attrs.keys()}*getAttributes(){yield*this._attrs.entries(),this._classes.size>0&&(yield["class",this.getAttribute("class")]),this._styles.size>0&&(yield["style",this.getAttribute("style")])}getAttribute(t){if("class"==t)return this._classes.size>0?[...this._classes].join(" "):void 0;if("style"!=t)return this._attrs.get(t);if(this._styles.size>0){let t="";for(const[e,n]of this._styles)t+=`${e}:${n};`;return t}}hasAttribute(t){return"class"==t?this._classes.size>0:"style"==t?this._styles.size>0:this._attrs.has(t)}isSimilar(t){if(!(t instanceof ki))return!1;if(this===t)return!0;if(this.name!=t.name)return!1;if(this._attrs.size!==t._attrs.size||this._classes.size!==t._classes.size||this._styles.size!==t._styles.size)return!1;for(const[e,n]of this._attrs)if(!t._attrs.has(e)||t._attrs.get(e)!==n)return!1;for(const e of this._classes)if(!t._classes.has(e))return!1;for(const[e,n]of this._styles)if(!t._styles.has(e)||t._styles.get(e)!==n)return!1;return!0}hasClass(...t){for(const e of t)if(!this._classes.has(e))return!1;return!0}getClassNames(){return this._classes.keys()}getStyle(t){return this._styles.get(t)}getStyleNames(){return this._styles.keys()}hasStyle(...t){for(const e of t)if(!this._styles.has(e))return!1;return!0}findAncestor(...t){const e=new bi(...t);let n=this.parent;for(;n;){if(e.match(n))return n;n=n.parent}return null}getCustomProperty(t){return this._customProperties.get(t)}*getCustomProperties(){yield*this._customProperties.entries()}getIdentity(){const t=Array.from(this._classes).sort().join(","),e=Array.from(this._styles).map(t=>`${t[0]}:${t[1]}`).sort().join(";"),n=Array.from(this._attrs).map(t=>`${t[0]}="${t[1]}"`).sort().join(" ");return this.name+(""==t?"":` class="${t}"`)+(""==e?"":` style="${e}"`)+(""==n?"":` ${n}`)}_clone(t=!1){const e=[];if(t)for(const n of this.getChildren())e.push(n._clone(t));const n=new this.constructor(this.name,this._attrs,e);return n._classes=new Set(this._classes),n._styles=new Map(this._styles),n._customProperties=new Map(this._customProperties),n.getFillerOffset=this.getFillerOffset,n}_appendChild(t){return this._insertChild(this.childCount,t)}_insertChild(t,e){this._fireChange("children",this);let n=0;const i=function(t){if("string"==typeof t)return[new fi(t)];pi(t)||(t=[t]);return Array.from(t).map(t=>"string"==typeof t?new fi(t):t instanceof gi?new fi(t.data):t)}(e);for(const e of i)null!==e.parent&&e._remove(),e.parent=this,this._children.splice(t,0,e),t++,n++;return n}_removeChildren(t,e=1){this._fireChange("children",this);for(let n=t;n0&&(this._classes.clear(),!0):"style"==t?this._styles.size>0&&(this._styles.clear(),!0):this._attrs.delete(t)}_addClass(t){this._fireChange("attributes",this),(t=Array.isArray(t)?t:[t]).forEach(t=>this._classes.add(t))}_removeClass(t){this._fireChange("attributes",this),(t=Array.isArray(t)?t:[t]).forEach(t=>this._classes.delete(t))}_setStyle(t,e){if(this._fireChange("attributes",this),T(t)){const e=Object.keys(t);for(const n of e)this._styles.set(n,t[n])}else this._styles.set(t,e)}_removeStyle(t){this._fireChange("attributes",this),(t=Array.isArray(t)?t:[t]).forEach(t=>this._styles.delete(t))}_setCustomProperty(t,e){this._customProperties.set(t,e)}_removeCustomProperty(t){return this._customProperties.delete(t)}}function _i(t,e){let n=null,i=0,o=0,r=null;if(t.clear(),""!==e){";"!=e.charAt(e.length-1)&&(e+=";");for(let s=0;st.add(e))}class yi extends ki{constructor(t,e,n){super(t,e,n),this.getFillerOffset=xi}is(t,e=null){const n=t&&t.replace(/^view:/,"");return e?"containerElement"==n&&e==this.name||super.is(t,e):"containerElement"==n||super.is(t)}}function xi(){const t=[...this.getChildren()],e=t[this.childCount-1];if(e&&e.is("element","br"))return this.childCount;for(const e of t)if(!e.is("uiElement"))return null;return this.childCount}var Ai=function(t){return t};var Ti=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)},Ci=Math.max;var Pi=function(t,e,n){return e=Ci(void 0===e?t.length-1:e,0),function(){for(var i=arguments,o=-1,r=Ci(i.length-e,0),s=Array(r);++o0){if(++e>=Ei)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Mi);var Ri=function(t,e){return Oi(Pi(t,e,Ai),t+"")};var Di=function(t,e,n){if(!B(n))return!1;var i=typeof e;return!!("number"==i?he(n)&&Qt(e,n.length):"string"==i&&e in n)&&P(n[e],t)};var Li=function(t){return Ri(function(e,n){var i=-1,o=n.length,r=o>1?n[o-1]:void 0,s=o>2?n[2]:void 0;for(r=t.length>3&&"function"==typeof r?(o--,r):void 0,s&&Di(n[0],n[1],s)&&(r=o<3?void 0:r,o=1),e=Object(e);++i{this.set(e,t[e])},this);Ui(this);const n=this[ji];if(t in this&&!n.has(t))throw new Gn.b("observable-set-cannot-override: Cannot override an existing property.",this);Object.defineProperty(this,t,{enumerable:!0,configurable:!0,get:()=>n.get(t),set(e){const i=n.get(t);let o=this.fire("set:"+t,t,e,i);void 0===o&&(o=e),i===o&&n.has(t)||(n.set(t,o),this.fire("change:"+t,t,o,i))}}),this[t]=e},bind(...t){if(!t.length||!Wi(t))throw new Gn.b("observable-bind-wrong-properties: All properties must be strings.",this);if(new Set(t).size!==t.length)throw new Gn.b("observable-bind-duplicate-properties: Properties must be unique.",this);Ui(this);const e=this[zi];t.forEach(t=>{if(e.has(t))throw new Gn.b("observable-bind-rebind: Cannot bind the same property more that once.",this)});const n=new Map;return t.forEach(t=>{const i={property:t,to:[]};e.set(t,i),n.set(t,i)}),{to:Hi,toMany:qi,_observable:this,_bindProperties:t,_to:[],_bindings:n}},unbind(...t){if(!(ji in this))return;const e=this[zi],n=this[Vi];if(t.length){if(!Wi(t))throw new Gn.b("observable-unbind-wrong-properties: Properties must be strings.",this);t.forEach(t=>{const i=e.get(t);if(!i)return;let o,r,s,a;i.to.forEach(t=>{o=t[0],r=t[1],s=n.get(o),(a=s[r]).delete(i),a.size||delete s[r],Object.keys(s).length||(n.delete(o),this.stopListening(o,"change"))}),e.delete(t)})}else n.forEach((t,e)=>{this.stopListening(e,"change")}),n.clear(),e.clear()},decorate(t){const e=this[t];if(!e)throw new Gn.b("observablemixin-cannot-decorate-undefined: Cannot decorate an undefined method.",this,{object:this,methodName:t});this.on(t,(t,n)=>{t.return=e.apply(this,n)}),this[t]=function(...e){return this.fire(t,e)}}};Li(Bi,ei);var Fi=Bi;function Ui(t){ji in t||(Object.defineProperty(t,ji,{value:new Map}),Object.defineProperty(t,Vi,{value:new Map}),Object.defineProperty(t,zi,{value:new Map}))}function Hi(...t){const e=function(...t){if(!t.length)throw new Gn.b("observable-bind-to-parse-error: Invalid argument syntax in `to()`.",null);const e={to:[]};let n;"function"==typeof t[t.length-1]&&(e.callback=t.pop());return t.forEach(t=>{if("string"==typeof t)n.properties.push(t);else{if("object"!=typeof t)throw new Gn.b("observable-bind-to-parse-error: Invalid argument syntax in `to()`.",null);n={observable:t,properties:[]},e.to.push(n)}}),e}(...t),n=Array.from(this._bindings.keys()),i=n.length;if(!e.callback&&e.to.length>1)throw new Gn.b("observable-bind-to-no-callback: Binding multiple observables only possible with callback.",this);if(i>1&&e.callback)throw new Gn.b("observable-bind-to-extra-callback: Cannot bind multiple properties and use a callback in one binding.",this);e.to.forEach(t=>{if(t.properties.length&&t.properties.length!==i)throw new Gn.b("observable-bind-to-properties-length: The number of properties must match.",this);t.properties.length||(t.properties=this._bindProperties)}),this._to=e.to,e.callback&&(this._bindings.get(n[0]).callback=e.callback),function(t,e){e.forEach(e=>{const n=t[Vi];let i;n.get(e.observable)||t.listenTo(e.observable,"change",(o,r)=>{(i=n.get(e.observable)[r])&&i.forEach(e=>{Yi(t,e.property)})})})}(this._observable,this._to),function(t){let e;t._bindings.forEach((n,i)=>{t._to.forEach(o=>{e=o.properties[n.callback?0:t._bindProperties.indexOf(i)],n.to.push([o.observable,e]),function(t,e,n,i){const o=t[Vi],r=o.get(n),s=r||{};s[i]||(s[i]=new Set);s[i].add(e),r||o.set(n,s)}(t._observable,n,o.observable,e)})})}(this),this._bindProperties.forEach(t=>{Yi(this._observable,t)})}function qi(t,e,n){if(this._bindings.size>1)throw new Gn.b("observable-bind-to-many-not-one-binding: Cannot bind multiple properties with toMany().",this);this.to(...function(t,e){const n=t.map(t=>[t,e]);return Array.prototype.concat.apply([],n)}(t,e),n)}function Wi(t){return t.every(t=>"string"==typeof t)}function Yi(t,e){const n=t[zi].get(e);let i;i=n.callback?n.callback.apply(t,n.to.map(t=>t[0][t[1]])):(i=n.to[0])[0][i[1]],t.hasOwnProperty(e)?t[e]=i:t.set(e,i)}const $i=Symbol("document");class Gi extends yi{constructor(t,e,n){super(t,e,n),this.set("isReadOnly",!1),this.set("isFocused",!1)}is(t,e=null){const n=t&&t.replace(/^view:/,"");return e?"editableElement"==n&&e==this.name||super.is(t,e):"editableElement"==n||super.is(t)}destroy(){this.stopListening()}get document(){return this.getCustomProperty($i)}set _document(t){if(this.getCustomProperty($i))throw new Gn.b("view-editableelement-document-already-set: View document is already set.",this);this._setCustomProperty($i,t),this.bind("isReadOnly").to(t),this.bind("isFocused").to(t,"isFocused",e=>e&&t.selection.editableElement==this),this.listenTo(t.selection,"change",()=>{this.isFocused=t.isFocused&&t.selection.editableElement==this})}}ci(Gi,Fi);const Qi=Symbol("rootName");class Ki extends Gi{constructor(t){super(t),this.rootName="main"}is(t,e=null){const n=t.replace(/^view:/,"");return e?"rootElement"==n&&e==this.name||super.is(t,e):"rootElement"==n||super.is(t)}get rootName(){return this.getCustomProperty(Qi)}set rootName(t){this._setCustomProperty(Qi,t)}set _name(t){this.name=t}}class Ji{constructor(t={}){if(!t.boundaries&&!t.startPosition)throw new Gn.b("view-tree-walker-no-start-position: Neither boundaries nor starting position have been defined.",null);if(t.direction&&"forward"!=t.direction&&"backward"!=t.direction)throw new Gn.b("view-tree-walker-unknown-direction: Only `backward` and `forward` direction allowed.",t.startPosition,{direction:t.direction});this.boundaries=t.boundaries||null,t.startPosition?this.position=Zi._createAt(t.startPosition):this.position=Zi._createAt(t.boundaries["backward"==t.direction?"end":"start"]),this.direction=t.direction||"forward",this.singleCharacters=!!t.singleCharacters,this.shallow=!!t.shallow,this.ignoreElementEnd=!!t.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}[Symbol.iterator](){return this}skip(t){let e,n,i;do{i=this.position,({done:e,value:n}=this.next())}while(!e&&t(n));e||(this.position=i)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){let t=this.position.clone();const e=this.position,n=t.parent;if(null===n.parent&&t.offset===n.childCount)return{done:!0};if(n===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0};let i;if(n instanceof fi){if(t.isAtEnd)return this.position=Zi._createAfter(n),this._next();i=n.data[t.offset]}else i=n.getChild(t.offset);if(i instanceof ki)return this.shallow?t.offset++:t=new Zi(i,0),this.position=t,this._formatReturnValue("elementStart",i,e,t,1);if(i instanceof fi){if(this.singleCharacters)return t=new Zi(i,0),this.position=t,this._next();{let n,o=i.data.length;return i==this._boundaryEndParent?(o=this.boundaries.end.offset,n=new gi(i,0,o),t=Zi._createAfter(n)):(n=new gi(i,0,i.data.length),t.offset++),this.position=t,this._formatReturnValue("text",n,e,t,o)}}if("string"==typeof i){let i;if(this.singleCharacters)i=1;else{i=(n===this._boundaryEndParent?this.boundaries.end.offset:n.data.length)-t.offset}const o=new gi(n,t.offset,i);return t.offset+=i,this.position=t,this._formatReturnValue("text",o,e,t,i)}return t=Zi._createAfter(n),this.position=t,this.ignoreElementEnd?this._next():this._formatReturnValue("elementEnd",n,e,t)}_previous(){let t=this.position.clone();const e=this.position,n=t.parent;if(null===n.parent&&0===t.offset)return{done:!0};if(n==this._boundaryStartParent&&t.offset==this.boundaries.start.offset)return{done:!0};let i;if(n instanceof fi){if(t.isAtStart)return this.position=Zi._createBefore(n),this._previous();i=n.data[t.offset-1]}else i=n.getChild(t.offset-1);if(i instanceof ki)return this.shallow?(t.offset--,this.position=t,this._formatReturnValue("elementStart",i,e,t,1)):(t=new Zi(i,i.childCount),this.position=t,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",i,e,t));if(i instanceof fi){if(this.singleCharacters)return t=new Zi(i,i.data.length),this.position=t,this._previous();{let n,o=i.data.length;if(i==this._boundaryStartParent){const e=this.boundaries.start.offset;o=(n=new gi(i,e,i.data.length-e)).data.length,t=Zi._createBefore(n)}else n=new gi(i,0,i.data.length),t.offset--;return this.position=t,this._formatReturnValue("text",n,e,t,o)}}if("string"==typeof i){let i;if(this.singleCharacters)i=1;else{const e=n===this._boundaryStartParent?this.boundaries.start.offset:0;i=t.offset-e}t.offset-=i;const o=new gi(n,t.offset,i);return this.position=t,this._formatReturnValue("text",o,e,t,i)}return t=Zi._createBefore(n),this.position=t,this._formatReturnValue("elementStart",n,e,t,1)}_formatReturnValue(t,e,n,i,o){return e instanceof gi&&(e.offsetInText+e.data.length==e.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?n=Zi._createAfter(e.textNode):(i=Zi._createAfter(e.textNode),this.position=i)),0===e.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?n=Zi._createBefore(e.textNode):(i=Zi._createBefore(e.textNode),this.position=i))),{done:!1,value:{type:t,item:e,previousPosition:n,nextPosition:i,length:o}}}}class Zi{constructor(t,e){this.parent=t,this.offset=e}get nodeAfter(){return this.parent.is("text")?null:this.parent.getChild(this.offset)||null}get nodeBefore(){return this.parent.is("text")?null:this.parent.getChild(this.offset-1)||null}get isAtStart(){return 0===this.offset}get isAtEnd(){const t=this.parent.is("text")?this.parent.data.length:this.parent.childCount;return this.offset===t}get root(){return this.parent.root}get editableElement(){let t=this.parent;for(;!(t instanceof Gi);){if(!t.parent)return null;t=t.parent}return t}getShiftedBy(t){const e=Zi._createAt(this),n=e.offset+t;return e.offset=n<0?0:n,e}getLastMatchingPosition(t,e={}){e.startPosition=this;const n=new Ji(e);return n.skip(t),n.position}getAncestors(){return this.parent.is("documentFragment")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}getCommonAncestor(t){const e=this.getAncestors(),n=t.getAncestors();let i=0;for(;e[i]==n[i]&&e[i];)i++;return 0===i?null:e[i-1]}is(t){return"position"==t||"view:position"==t}isEqual(t){return this.parent==t.parent&&this.offset==t.offset}isBefore(t){return"before"==this.compareWith(t)}isAfter(t){return"after"==this.compareWith(t)}compareWith(t){if(this.root!==t.root)return"different";if(this.isEqual(t))return"same";const e=this.parent.is("node")?this.parent.getPath():[],n=t.parent.is("node")?t.parent.getPath():[];e.push(this.offset),n.push(t.offset);const i=li(e,n);switch(i){case"prefix":return"before";case"extension":return"after";default:return e[i]0?new this(n,i):new this(i,n)}static _createIn(t){return this._createFromParentsAndOffsets(t,0,t,t.childCount)}static _createOn(t){const e=t.is("textProxy")?t.offsetSize:1;return this._createFromPositionAndShift(Zi._createBefore(t),e)}}function to(t){return!(!t.item.is("attributeElement")&&!t.item.is("uiElement"))}function eo(t){let e=0;for(const n of t)e++;return e}class no{constructor(t=null,e,n){this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",this.setTo(t,e,n)}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const t=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?t.end:t.start).clone()}get focus(){if(!this._ranges.length)return null;const t=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?t.start:t.end).clone()}get isCollapsed(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}*getRanges(){for(const t of this._ranges)yield t.clone()}getFirstRange(){let t=null;for(const e of this._ranges)t&&!e.start.isBefore(t.start)||(t=e);return t?t.clone():null}getLastRange(){let t=null;for(const e of this._ranges)t&&!e.end.isAfter(t.end)||(t=e);return t?t.clone():null}getFirstPosition(){const t=this.getFirstRange();return t?t.start.clone():null}getLastPosition(){const t=this.getLastRange();return t?t.end.clone():null}isEqual(t){if(this.isFake!=t.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=t.fakeSelectionLabel)return!1;if(this.rangeCount!=t.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(t.anchor)||!this.focus.isEqual(t.focus))return!1;for(const e of this._ranges){let n=!1;for(const i of t._ranges)if(e.isEqual(i)){n=!0;break}if(!n)return!1}return!0}isSimilar(t){if(this.isBackward!=t.isBackward)return!1;const e=eo(this.getRanges());if(e!=eo(t.getRanges()))return!1;if(0==e)return!0;for(let e of this.getRanges()){e=e.getTrimmed();let n=!1;for(let i of t.getRanges())if(i=i.getTrimmed(),e.start.isEqual(i.start)&&e.end.isEqual(i.end)){n=!0;break}if(!n)return!1}return!0}getSelectedElement(){if(1!==this.rangeCount)return null;const t=this.getFirstRange();let e=t.start.nodeAfter,n=t.end.nodeBefore;return t.start.parent.is("text")&&t.start.isAtEnd&&t.start.parent.nextSibling&&(e=t.start.parent.nextSibling),t.end.parent.is("text")&&t.end.isAtStart&&t.end.parent.previousSibling&&(n=t.end.parent.previousSibling),e instanceof ki&&e==n?e:null}setTo(t,e,n){if(null===t)this._setRanges([]),this._setFakeOptions(e);else if(t instanceof no||t instanceof io)this._setRanges(t.getRanges(),t.isBackward),this._setFakeOptions({fake:t.isFake,label:t.fakeSelectionLabel});else if(t instanceof Xi)this._setRanges([t],e&&e.backward),this._setFakeOptions(e);else if(t instanceof Zi)this._setRanges([new Xi(t)]),this._setFakeOptions(e);else if(t instanceof ui){const i=!!n&&!!n.backward;let o;if(void 0===e)throw new Gn.b("view-selection-setTo-required-second-parameter: selection.setTo requires the second parameter when the first parameter is a node.",this);o="in"==e?Xi._createIn(t):"on"==e?Xi._createOn(t):new Xi(Zi._createAt(t,e)),this._setRanges([o],i),this._setFakeOptions(n)}else{if(!pi(t))throw new Gn.b("view-selection-setTo-not-selectable: Cannot set selection to given place.",this);this._setRanges(t,e&&e.backward),this._setFakeOptions(e)}this.fire("change")}setFocus(t,e){if(null===this.anchor)throw new Gn.b("view-selection-setFocus-no-ranges: Cannot set selection focus if there are no ranges in selection.",this);const n=Zi._createAt(t,e);if("same"==n.compareWith(this.focus))return;const i=this.anchor;this._ranges.pop(),"before"==n.compareWith(i)?this._addRange(new Xi(n,i),!0):this._addRange(new Xi(i,n)),this.fire("change")}is(t){return"selection"==t||"view:selection"==t}_setRanges(t,e=!1){t=Array.from(t),this._ranges=[];for(const e of t)this._addRange(e);this._lastRangeBackward=!!e}_setFakeOptions(t={}){this._isFake=!!t.fake,this._fakeSelectionLabel=t.fake&&t.label||""}_addRange(t,e=!1){if(!(t instanceof Xi))throw new Gn.b("view-selection-add-range-not-range: Selection range set to an object that is not an instance of view.Range",this);this._pushRange(t),this._lastRangeBackward=!!e}_pushRange(t){for(const e of this._ranges)if(t.isIntersecting(e))throw new Gn.b("view-selection-range-intersects: Trying to add a range that intersects with another range from selection.",this,{addedRange:t,intersectingRange:e});this._ranges.push(new Xi(t.start,t.end))}}ci(no,ei);class io{constructor(t=null,e,n){this._selection=new no,this._selection.delegate("change").to(this),this._selection.setTo(t,e,n)}get isFake(){return this._selection.isFake}get fakeSelectionLabel(){return this._selection.fakeSelectionLabel}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get isCollapsed(){return this._selection.isCollapsed}get rangeCount(){return this._selection.rangeCount}get isBackward(){return this._selection.isBackward}get editableElement(){return this._selection.editableElement}get _ranges(){return this._selection._ranges}*getRanges(){yield*this._selection.getRanges()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getSelectedElement(){return this._selection.getSelectedElement()}isEqual(t){return this._selection.isEqual(t)}isSimilar(t){return this._selection.isSimilar(t)}is(t){return"selection"==t||"documentSelection"==t||"view:selection"==t||"view:documentSelection"==t}_setTo(t,e,n){this._selection.setTo(t,e,n)}_setFocus(t,e){this._selection.setFocus(t,e)}}ci(io,ei);class oo{constructor(t={}){this._items=[],this._itemMap=new Map,this._idProperty=t.idProperty||"id",this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap,this._skippedIndexesFromExternal=[]}get length(){return this._items.length}get first(){return this._items[0]||null}get last(){return this._items[this.length-1]||null}add(t,e){let n;const i=this._idProperty;if(i in t){if("string"!=typeof(n=t[i]))throw new Gn.b("collection-add-invalid-id",this);if(this.get(n))throw new Gn.b("collection-add-item-already-exists",this)}else t[i]=n=Jn();if(void 0===e)e=this._items.length;else if(e>this._items.length||e<0)throw new Gn.b("collection-add-item-invalid-index",this);return this._items.splice(e,0,t),this._itemMap.set(n,t),this.fire("add",t,e),this}get(t){let e;if("string"==typeof t)e=this._itemMap.get(t);else{if("number"!=typeof t)throw new Gn.b("collection-get-invalid-arg: Index or id must be given.",this);e=this._items[t]}return e||null}has(t){if("string"==typeof t)return this._itemMap.has(t);{const e=t[this._idProperty];return this._itemMap.has(e)}}getIndex(t){let e;return e="string"==typeof t?this._itemMap.get(t):t,this._items.indexOf(e)}remove(t){let e,n,i,o=!1;const r=this._idProperty;if("string"==typeof t?(n=t,o=!(i=this._itemMap.get(n)),i&&(e=this._items.indexOf(i))):"number"==typeof t?(e=t,o=!(i=this._items[e]),i&&(n=i[r])):(n=(i=t)[r],o=-1==(e=this._items.indexOf(i))||!this._itemMap.get(n)),o)throw new Gn.b("collection-remove-404: Item not found.",this);this._items.splice(e,1),this._itemMap.delete(n);const s=this._bindToInternalToExternalMap.get(i);return this._bindToInternalToExternalMap.delete(i),this._bindToExternalToInternalMap.delete(s),this.fire("remove",i,e),i}map(t,e){return this._items.map(t,e)}find(t,e){return this._items.find(t,e)}filter(t,e){return this._items.filter(t,e)}clear(){for(this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);this.length;)this.remove(0)}bindTo(t){if(this._bindToCollection)throw new Gn.b("collection-bind-to-rebind: The collection cannot be bound more than once.",this);return this._bindToCollection=t,{as:t=>{this._setUpBindToBinding(e=>new t(e))},using:t=>{"function"==typeof t?this._setUpBindToBinding(e=>t(e)):this._setUpBindToBinding(e=>e[t])}}}_setUpBindToBinding(t){const e=this._bindToCollection,n=(n,i,o)=>{const r=e._bindToCollection==this,s=e._bindToInternalToExternalMap.get(i);if(r&&s)this._bindToExternalToInternalMap.set(i,s),this._bindToInternalToExternalMap.set(s,i);else{const n=t(i);if(!n)return void this._skippedIndexesFromExternal.push(o);let r=o;for(const t of this._skippedIndexesFromExternal)o>t&&r--;for(const t of e._skippedIndexesFromExternal)r>=t&&r++;this._bindToExternalToInternalMap.set(i,n),this._bindToInternalToExternalMap.set(n,i),this.add(n,r);for(let t=0;t{const i=this._bindToExternalToInternalMap.get(e);i&&this.remove(i),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce((t,e)=>(ne&&t.push(e),t),[])})}[Symbol.iterator](){return this._items[Symbol.iterator]()}}ci(oo,ei);class ro{constructor(){this.selection=new io,this.roots=new oo({idProperty:"rootName"}),this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isComposing",!1),this._postFixers=new Set}getRoot(t="main"){return this.roots.get(t)}registerPostFixer(t){this._postFixers.add(t)}destroy(){this.roots.map(t=>t.destroy()),this.stopListening()}_callPostFixers(t){let e=!1;do{for(const n of this._postFixers)if(e=n(t))break}while(e)}}ci(ro,Fi);const so=10;class ao extends ki{constructor(t,e,n){super(t,e,n),this.getFillerOffset=co,this._priority=so,this._id=null,this._clonesGroup=null}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new Gn.b("attribute-element-get-elements-with-same-id-no-id: Cannot get elements with the same id for an attribute element without id.",this);return new Set(this._clonesGroup)}is(t,e=null){const n=t&&t.replace(/^view:/,"");return e?"attributeElement"==n&&e==this.name||super.is(t,e):"attributeElement"==n||super.is(t)}isSimilar(t){return null!==this.id||null!==t.id?this.id===t.id:super.isSimilar(t)&&this.priority==t.priority}_clone(t){const e=super._clone(t);return e._priority=this._priority,e._id=this._id,e}}function co(){if(lo(this))return null;let t=this.parent;for(;t&&t.is("attributeElement");){if(lo(t)>1)return null;t=t.parent}return!t||lo(t)>1?null:this.childCount}function lo(t){return Array.from(t.getChildren()).filter(t=>!t.is("uiElement")).length}ao.DEFAULT_PRIORITY=so;class ho extends ki{constructor(t,e,n){super(t,e,n),this.getFillerOffset=uo}is(t,e=null){const n=t.replace(/^view:/,"");return e?"emptyElement"==n&&e==this.name||super.is(t,e):"emptyElement"==n||super.is(t)}_insertChild(t,e){if(e&&(e instanceof ui||Array.from(e).length>0))throw new Gn.b("view-emptyelement-cannot-add: Cannot add child nodes to EmptyElement instance.",[this,e])}}function uo(){return null}const fo=navigator.userAgent.toLowerCase();var go={isMac:function(t){return t.indexOf("macintosh")>-1}(fo),isEdge:function(t){return!!t.match(/edge\/(\d+.?\d*)/)}(fo),isGecko:function(t){return!!t.match(/gecko\/\d+/)}(fo),isSafari:function(t){return t.indexOf(" applewebkit/")>-1&&-1===t.indexOf("chrome")}(fo),isAndroid:function(t){return t.indexOf("android")>-1}(fo),features:{isRegExpUnicodePropertySupported:function(){let t=!1;try{t=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch(t){}return t}()}};const mo={"⌘":"ctrl","⇧":"shift","⌥":"alt"},po={ctrl:"⌘",shift:"⇧",alt:"⌥"},bo=function(){const t={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,space:32,esc:27,tab:9,ctrl:1114112,cmd:1114112,shift:2228224,alt:4456448};for(let e=65;e<=90;e++){const n=String.fromCharCode(e);t[n.toLowerCase()]=e}for(let e=48;e<=57;e++)t[e-48]=e;for(let e=112;e<=123;e++)t["f"+(e-111)]=e;return t}();function wo(t){let e;if("string"==typeof t){if(!(e=bo[t.toLowerCase()]))throw new Gn.b("keyboard-unknown-key: Unknown key name.",null,{key:t})}else e=t.keyCode+(t.altKey?bo.alt:0)+(t.ctrlKey?bo.ctrl:0)+(t.shiftKey?bo.shift:0);return e}function ko(t){return"string"==typeof t&&(t=_o(t)),t.map(t=>"string"==typeof t?wo(t):t).reduce((t,e)=>e+t,0)}function _o(t){return t.split(/\s*\+\s*/)}class vo extends ki{constructor(t,e,n){super(t,e,n),this.getFillerOffset=xo}is(t,e=null){const n=t.replace(/^view:/,"");return e?"uiElement"==n&&e==this.name||super.is(t,e):"uiElement"==n||super.is(t)}_insertChild(t,e){if(e&&(e instanceof ui||Array.from(e).length>0))throw new Gn.b("view-uielement-cannot-add: Cannot add child nodes to UIElement instance.",this)}render(t){return this.toDomElement(t)}toDomElement(t){const e=t.createElement(this.name);for(const t of this.getAttributeKeys())e.setAttribute(t,this.getAttribute(t));return e}}function yo(t){t.document.on("keydown",(e,n)=>(function(t,e,n){if(e.keyCode==bo.arrowright){const t=e.domTarget.ownerDocument.defaultView.getSelection(),i=1==t.rangeCount&&t.getRangeAt(0).collapsed;if(i||e.shiftKey){const e=t.focusNode,o=t.focusOffset,r=n.domPositionToView(e,o);if(null===r)return;let s=!1;const a=r.getLastMatchingPosition(t=>(t.item.is("uiElement")&&(s=!0),!(!t.item.is("uiElement")&&!t.item.is("attributeElement"))));if(s){const e=n.viewPositionToDom(a);i?t.collapse(e.parent,e.offset):t.extend(e.parent,e.offset)}}}})(0,n,t.domConverter))}function xo(){return null}class Ao{constructor(t){this._children=[],t&&this._insertChild(0,t)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(t){return"documentFragment"==t||"view:documentFragment"==t}_appendChild(t){return this._insertChild(this.childCount,t)}getChild(t){return this._children[t]}getChildIndex(t){return this._children.indexOf(t)}getChildren(){return this._children[Symbol.iterator]()}_insertChild(t,e){this._fireChange("children",this);let n=0;const i=function(t){if("string"==typeof t)return[new fi(t)];pi(t)||(t=[t]);return Array.from(t).map(t=>"string"==typeof t?new fi(t):t instanceof gi?new fi(t.data):t)}(e);for(const e of i)null!==e.parent&&e._remove(),e.parent=this,this._children.splice(t,0,e),t++,n++;return n}_removeChildren(t,e=1){this._fireChange("children",this);for(let n=t;ni instanceof t))throw new Gn.b("view-writer-insert-invalid-node",n);i.is("text")||t(i.getChildren(),n)}})(e=pi(e)?[...e]:[e],this.document);const n=Co(t);if(!n)throw new Gn.b("view-writer-invalid-position-container",this.document);const i=this._breakAttributes(t,!0),o=n._insertChild(i.offset,e);for(const t of e)this._addToClonedElementsGroup(t);const r=i.getShiftedBy(o),s=this.mergeAttributes(i);if(0===o)return new Xi(s,s);{s.isEqual(i)||r.offset--;const t=this.mergeAttributes(r);return new Xi(s,t)}}remove(t){const e=t instanceof Xi?t:Xi._createOn(t);if(Oo(e,this.document),e.isCollapsed)return new Ao;const{start:n,end:i}=this._breakAttributesRange(e,!0),o=n.parent,r=i.offset-n.offset,s=o._removeChildren(n.offset,r);for(const t of s)this._removeFromClonedElementsGroup(t);const a=this.mergeAttributes(n);return e.start=a,e.end=a.clone(),new Ao(s)}clear(t,e){Oo(t,this.document);const n=t.getWalker({direction:"backward",ignoreElementEnd:!0});for(const i of n){const n=i.item;let o;if(n.is("element")&&e.isSimilar(n))o=Xi._createOn(n);else if(!i.nextPosition.isAfter(t.start)&&n.is("textProxy")){const t=n.getAncestors().find(t=>t.is("element")&&e.isSimilar(t));t&&(o=Xi._createIn(t))}o&&(o.end.isAfter(t.end)&&(o.end=t.end),o.start.isBefore(t.start)&&(o.start=t.start),this.remove(o))}}move(t,e){let n;if(e.isAfter(t.end)){const i=(e=this._breakAttributes(e,!0)).parent,o=i.childCount;t=this._breakAttributesRange(t,!0),n=this.remove(t),e.offset+=i.childCount-o}else n=this.remove(t);return this.insert(e,n)}wrap(t,e){if(!(e instanceof ao))throw new Gn.b("view-writer-wrap-invalid-attribute",this.document);if(Oo(t,this.document),t.isCollapsed){let n=t.start;n.parent.is("element")&&!function(t){return Array.from(t.getChildren()).some(t=>!t.is("uiElement"))}(n.parent)&&(n=n.getLastMatchingPosition(t=>t.item.is("uiElement"))),n=this._wrapPosition(n,e);const i=this.document.selection;return i.isCollapsed&&i.getFirstPosition().isEqual(t.start)&&this.setSelection(n),new Xi(n)}return this._wrapRange(t,e)}unwrap(t,e){if(!(e instanceof ao))throw new Gn.b("view-writer-unwrap-invalid-attribute",this.document);if(Oo(t,this.document),t.isCollapsed)return t;const{start:n,end:i}=this._breakAttributesRange(t,!0),o=n.parent,r=this._unwrapChildren(o,n.offset,i.offset,e),s=this.mergeAttributes(r.start);s.isEqual(r.start)||r.end.offset--;const a=this.mergeAttributes(r.end);return new Xi(s,a)}rename(t,e){const n=new yi(t,e.getAttributes());return this.insert(Zi._createAfter(e),n),this.move(Xi._createIn(e),Zi._createAt(n,0)),this.remove(Xi._createOn(e)),n}clearClonedElementsGroup(t){this._cloneGroups.delete(t)}createPositionAt(t,e){return Zi._createAt(t,e)}createPositionAfter(t){return Zi._createAfter(t)}createPositionBefore(t){return Zi._createBefore(t)}createRange(t,e){return new Xi(t,e)}createRangeOn(t){return Xi._createOn(t)}createRangeIn(t){return Xi._createIn(t)}createSelection(t,e,n){return new no(t,e,n)}_wrapChildren(t,e,n,i){let o=e;const r=[];for(;o!1),t.parent._insertChild(t.offset,n);const i=new Xi(t,t.getShiftedBy(1));this.wrap(i,e);const o=new Zi(n.parent,n.index);n._remove();const r=o.nodeBefore,s=o.nodeAfter;return r instanceof fi&&s instanceof fi?Eo(r,s):So(o)}_wrapAttributeElement(t,e){if(!Ro(t,e))return!1;if(t.name!==e.name||t.priority!==e.priority)return!1;for(const n of t.getAttributeKeys())if("class"!==n&&"style"!==n&&e.hasAttribute(n)&&e.getAttribute(n)!==t.getAttribute(n))return!1;for(const n of t.getStyleNames())if(e.hasStyle(n)&&e.getStyle(n)!==t.getStyle(n))return!1;for(const n of t.getAttributeKeys())"class"!==n&&"style"!==n&&(e.hasAttribute(n)||this.setAttribute(n,t.getAttribute(n),e));for(const n of t.getStyleNames())e.hasStyle(n)||this.setStyle(n,t.getStyle(n),e);for(const n of t.getClassNames())e.hasClass(n)||this.addClass(n,e);return!0}_unwrapAttributeElement(t,e){if(!Ro(t,e))return!1;if(t.name!==e.name||t.priority!==e.priority)return!1;for(const n of t.getAttributeKeys())if("class"!==n&&"style"!==n&&(!e.hasAttribute(n)||e.getAttribute(n)!==t.getAttribute(n)))return!1;if(!e.hasClass(...t.getClassNames()))return!1;for(const n of t.getStyleNames())if(!e.hasStyle(n)||e.getStyle(n)!==t.getStyle(n))return!1;for(const n of t.getAttributeKeys())"class"!==n&&"style"!==n&&this.removeAttribute(n,e);return this.removeClass(Array.from(t.getClassNames()),e),this.removeStyle(Array.from(t.getStyleNames()),e),!0}_breakAttributesRange(t,e=!1){const n=t.start,i=t.end;if(Oo(t,this.document),t.isCollapsed){const n=this._breakAttributes(t.start,e);return new Xi(n,n)}const o=this._breakAttributes(i,e),r=o.parent.childCount,s=this._breakAttributes(n,e);return o.offset+=o.parent.childCount-r,new Xi(s,o)}_breakAttributes(t,e=!1){const n=t.offset,i=t.parent;if(t.parent.is("emptyElement"))throw new Gn.b("view-writer-cannot-break-empty-element",this.document);if(t.parent.is("uiElement"))throw new Gn.b("view-writer-cannot-break-ui-element",this.document);if(!e&&i.is("text")&&No(i.parent))return t.clone();if(No(i))return t.clone();if(i.is("text"))return this._breakAttributes(Mo(t),e);if(n==i.childCount){const t=new Zi(i.parent,i.index+1);return this._breakAttributes(t,e)}if(0===n){const t=new Zi(i.parent,i.index);return this._breakAttributes(t,e)}{const t=i.index+1,o=i._clone();i.parent._insertChild(t,o),this._addToClonedElementsGroup(o);const r=i.childCount-n,s=i._removeChildren(n,r);o._appendChild(s);const a=new Zi(i.parent,t);return this._breakAttributes(a,e)}}_addToClonedElementsGroup(t){if(!t.root.is("rootElement"))return;if(t.is("element"))for(const e of t.getChildren())this._addToClonedElementsGroup(e);const e=t.id;if(!e)return;let n=this._cloneGroups.get(e);n||(n=new Set,this._cloneGroups.set(e,n)),n.add(t),t._clonesGroup=n}_removeFromClonedElementsGroup(t){if(t.is("element"))for(const e of t.getChildren())this._removeFromClonedElementsGroup(e);const e=t.id;if(!e)return;const n=this._cloneGroups.get(e);n&&n.delete(t)}}function Co(t){let e=t.parent;for(;!No(e);){if(!e)return;e=e.parent}return e}function Po(t,e){return t.prioritye.priority)&&t.getIdentity()t.createTextNode(" "),jo=t=>{const e=t.createElement("br");return e.dataset.ckeFiller=!0,e},Vo=7,zo=(()=>{let t="";for(let e=0;e0&&(r=r.concat(Array(n).fill("equal")));o-n>0&&(r=r.concat(Array(o-n).fill("insert")));i-n>0&&(r=r.concat(Array(i-n).fill("delete")));o0&&n.push({index:i,type:"insert",values:t.slice(i,r)});o-i>0&&n.push({index:i+(r-i),type:"delete",howMany:o-i});return n}(e,o)}function Wo(t,e,n){for(let i=0;i200||o>200||i+o>300)return $o.fastDiff(t,e,n,!0);let r,s;if(ol?-1:1;d[i+u]&&(d[i]=d[i+u].slice(0)),d[i]||(d[i]=[]),d[i].push(o>l?r:s);let f=Math.max(o,l),g=f-i;for(;gl;f--)h[f]=u(f);h[l]=u(l),g++}while(h[l]!==c);return d[l].slice(1)}function Go(t,e,n){t.insertBefore(n,t.childNodes[e]||null)}function Qo(t){const e=t.parentNode;e&&e.removeChild(t)}function Ko(t){if(t){if(t.defaultView)return t instanceof t.defaultView.Document;if(t.ownerDocument&&t.ownerDocument.defaultView)return t instanceof t.ownerDocument.defaultView.Node}return!1}$o.fastDiff=qo;class Jo{constructor(t,e){this.domDocuments=new Set,this.domConverter=t,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=e,this.isFocused=!1,this._inlineFiller=null,this._fakeSelectionContainer=null}markToSync(t,e){if("text"===t)this.domConverter.mapViewToDom(e.parent)&&this.markedTexts.add(e);else{if(!this.domConverter.mapViewToDom(e))return;if("attributes"===t)this.markedAttributes.add(e);else{if("children"!==t)throw new Gn.b("view-renderer-unknown-type: Unknown type passed to Renderer.markToSync.",this);this.markedChildren.add(e)}}}render(){let t;for(const t of this.markedChildren)this._updateChildrenMappings(t);this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?t=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(t=this.selection.getFirstPosition(),this.markedChildren.add(t.parent));for(const t of this.markedAttributes)this._updateAttrs(t);for(const e of this.markedChildren)this._updateChildren(e,{inlineFillerPosition:t});for(const e of this.markedTexts)!this.markedChildren.has(e.parent)&&this.domConverter.mapViewToDom(e.parent)&&this._updateText(e,{inlineFillerPosition:t});if(t){const e=this.domConverter.viewPositionToDom(t),n=e.parent.ownerDocument;Bo(e.parent)?this._inlineFiller=e.parent:this._inlineFiller=Zo(n,e.parent,e.offset)}else this._inlineFiller=null;this._updateSelection(),this._updateFocus(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(t){const e=this.domConverter.mapViewToDom(t);if(!e)return;const n=this.domConverter.mapViewToDom(t).childNodes,i=Array.from(this.domConverter.viewChildrenToDom(t,e.ownerDocument,{withChildren:!1})),o=this._diffNodeLists(n,i),r=this._findReplaceActions(o,n,i);if(-1!==r.indexOf("replace")){const e={equal:0,insert:0,delete:0};for(const o of r)if("replace"===o){const o=e.equal+e.insert,r=e.equal+e.delete,s=t.getChild(o);s&&!s.is("uiElement")&&this._updateElementMappings(s,n[r]),Qo(i[o]),e.equal++}else e[o]++}}_updateElementMappings(t,e){this.domConverter.unbindDomElement(e),this.domConverter.bindElements(e,t),this.markedChildren.add(t),this.markedAttributes.add(t)}_getInlineFillerPosition(){const t=this.selection.getFirstPosition();return t.parent.is("text")?Zi._createBefore(this.selection.getFirstPosition().parent):t}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const t=this.selection.getFirstPosition(),e=this.domConverter.viewPositionToDom(t);return!!(e&&Do(e.parent)&&Bo(e.parent))}_removeInlineFiller(){const t=this._inlineFiller;if(!Bo(t))throw new Gn.b("view-renderer-filler-was-lost: The inline filler node was lost.",this);Fo(t)?t.parentNode.removeChild(t):t.data=t.data.substr(Vo),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const t=this.selection.getFirstPosition(),e=t.parent,n=t.offset;if(!this.domConverter.mapViewToDom(e.root))return!1;if(!e.is("element"))return!1;if(!function(t){if("false"==t.getAttribute("contenteditable"))return!1;const e=t.findAncestor(t=>t.hasAttribute("contenteditable"));return!e||"true"==e.getAttribute("contenteditable")}(e))return!1;if(n===e.getFillerOffset())return!1;const i=t.nodeBefore,o=t.nodeAfter;return!(i instanceof fi||o instanceof fi)}_updateText(t,e){const n=this.domConverter.findCorrespondingDomText(t),i=this.domConverter.viewToDom(t,n.ownerDocument),o=n.data;let r=i.data;const s=e.inlineFillerPosition;if(s&&s.parent==t.parent&&s.offset==t.index&&(r=zo+r),o!=r){const t=qo(o,r);for(const e of t)"insert"===e.type?n.insertData(e.index,e.values.join("")):n.deleteData(e.index,e.howMany)}}_updateAttrs(t){const e=this.domConverter.mapViewToDom(t);if(!e)return;const n=Array.from(e.attributes).map(t=>t.name),i=t.getAttributeKeys();for(const n of i)e.setAttribute(n,t.getAttribute(n));for(const i of n)t.hasAttribute(i)||e.removeAttribute(i)}_updateChildren(t,e){const n=this.domConverter.mapViewToDom(t);if(!n)return;const i=e.inlineFillerPosition,o=this.domConverter.mapViewToDom(t).childNodes,r=Array.from(this.domConverter.viewChildrenToDom(t,n.ownerDocument,{bind:!0,inlineFillerPosition:i}));i&&i.parent===t&&Zo(n.ownerDocument,r,i.offset);const s=this._diffNodeLists(o,r);let a=0;const c=new Set;for(const t of s)"insert"===t?(Go(n,a,r[a]),a++):"delete"===t?(c.add(o[a]),Qo(o[a])):(this._markDescendantTextToSync(this.domConverter.domToView(r[a])),a++);for(const t of c)t.parentNode||this.domConverter.unbindDomElement(t)}_diffNodeLists(t,e){return $o(t=function(t,e){const n=Array.from(t);if(0==n.length||!e)return n;n[n.length-1]==e&&n.pop();return n}(t,this._fakeSelectionContainer),e,function(t,e,n){if(e===n)return!0;if(Do(e)&&Do(n))return e.data===n.data;if(t.isBlockFiller(e)&&t.isBlockFiller(n))return!0;return!1}.bind(null,this.domConverter))}_findReplaceActions(t,e,n){if(-1===t.indexOf("insert")||-1===t.indexOf("delete"))return t;let i=[],o=[],r=[];const s={equal:0,insert:0,delete:0};for(const a of t)"insert"===a?r.push(n[s.equal+s.insert]):"delete"===a?o.push(e[s.equal+s.delete]):((i=i.concat($o(o,r,Xo).map(t=>"equal"===t?"replace":t))).push("equal"),o=[],r=[]),s[a]++;return i.concat($o(o,r,Xo).map(t=>"equal"===t?"replace":t))}_markDescendantTextToSync(t){if(t)if(t.is("text"))this.markedTexts.add(t);else if(t.is("element"))for(const e of t.getChildren())this._markDescendantTextToSync(e)}_updateSelection(){if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const t=this.domConverter.mapViewToDom(this.selection.editableElement);this.isFocused&&t&&(this.selection.isFake?this._updateFakeSelection(t):(this._removeFakeSelection(),this._updateDomSelection(t)))}_updateFakeSelection(t){const e=t.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=function(t){const e=t.createElement("div");return Object.assign(e.style,{position:"fixed",top:0,left:"-9999px",width:"42px"}),e.textContent=" ",e}(e));const n=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(n,this.selection),!this._fakeSelectionNeedsUpdate(t))return;n.parentElement&&n.parentElement==t||t.appendChild(n),n.textContent=this.selection.fakeSelectionLabel||" ";const i=e.getSelection(),o=e.createRange();i.removeAllRanges(),o.selectNodeContents(n),i.addRange(o)}_updateDomSelection(t){const e=t.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(e))return;const n=this.domConverter.viewPositionToDom(this.selection.anchor),i=this.domConverter.viewPositionToDom(this.selection.focus);t.focus(),e.collapse(n.parent,n.offset),e.extend(i.parent,i.offset),go.isGecko&&function(t,e){const n=t.parent;if(n.nodeType!=Node.ELEMENT_NODE||t.offset!=n.childNodes.length-1)return;const i=n.childNodes[t.offset];i&&"BR"==i.tagName&&e.addRange(e.getRangeAt(0))}(i,e)}_domSelectionNeedsUpdate(t){if(!this.domConverter.isDomSelectionCorrect(t))return!0;const e=t&&this.domConverter.domSelectionToView(t);return(!e||!this.selection.isEqual(e))&&!(!this.selection.isCollapsed&&this.selection.isSimilar(e))}_fakeSelectionNeedsUpdate(t){const e=this._fakeSelectionContainer,n=t.ownerDocument.getSelection();return!e||e.parentElement!==t||(n.anchorNode!==e&&!e.contains(n.anchorNode)||e.textContent!==this.selection.fakeSelectionLabel)}_removeDomSelection(){for(const t of this.domDocuments){if(t.getSelection().rangeCount){const e=t.activeElement,n=this.domConverter.mapDomToView(e);e&&n&&t.getSelection().removeAllRanges()}}}_removeFakeSelection(){const t=this._fakeSelectionContainer;t&&t.remove()}_updateFocus(){if(this.isFocused){const t=this.selection.editableElement;t&&this.domConverter.focus(t)}}}function Zo(t,e,n){const i=e instanceof Array?e:e.childNodes,o=i[n];if(Do(o))return o.data=zo+o.data,o;{const o=t.createTextNode(zo);return Array.isArray(e)?i.splice(n,0,o):Go(e,n,o),o}}function Xo(t,e){return Ko(t)&&Ko(e)&&!Do(t)&&!Do(e)&&t.tagName.toLowerCase()===e.tagName.toLowerCase()}ci(Jo,Fi);var tr={window:window,document:document};function er(t){let e=0;for(;t.previousSibling;)t=t.previousSibling,e++;return e}function nr(t){const e=[];for(;t&&t.nodeType!=Node.DOCUMENT_NODE;)e.unshift(t),t=t.parentNode;return e}const ir=jo(document);class or{constructor(t={}){this.blockFillerMode=t.blockFillerMode||"br",this.preElements=["pre"],this.blockElements=["p","div","h1","h2","h3","h4","h5","h6","li","dd","dt","figcaption"],this._blockFiller="br"==this.blockFillerMode?jo:Lo,this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap}bindFakeSelection(t,e){this._fakeSelectionMapping.set(t,new no(e))}fakeSelectionToView(t){return this._fakeSelectionMapping.get(t)}bindElements(t,e){this._domToViewMapping.set(t,e),this._viewToDomMapping.set(e,t)}unbindDomElement(t){const e=this._domToViewMapping.get(t);if(e){this._domToViewMapping.delete(t),this._viewToDomMapping.delete(e);for(const e of Array.from(t.childNodes))this.unbindDomElement(e)}}bindDocumentFragments(t,e){this._domToViewMapping.set(t,e),this._viewToDomMapping.set(e,t)}viewToDom(t,e,n={}){if(t.is("text")){const n=this._processDataFromViewText(t);return e.createTextNode(n)}{if(this.mapViewToDom(t))return this.mapViewToDom(t);let i;if(t.is("documentFragment"))i=e.createDocumentFragment(),n.bind&&this.bindDocumentFragments(i,t);else{if(t.is("uiElement"))return i=t.render(e),n.bind&&this.bindElements(i,t),i;i=t.hasAttribute("xmlns")?e.createElementNS(t.getAttribute("xmlns"),t.name):e.createElement(t.name),n.bind&&this.bindElements(i,t);for(const e of t.getAttributeKeys())i.setAttribute(e,t.getAttribute(e))}if(n.withChildren||void 0===n.withChildren)for(const o of this.viewChildrenToDom(t,e,n))i.appendChild(o);return i}}*viewChildrenToDom(t,e,n={}){const i=t.getFillerOffset&&t.getFillerOffset();let o=0;for(const r of t.getChildren())i===o&&(yield this._blockFiller(e)),yield this.viewToDom(r,e,n),o++;i===o&&(yield this._blockFiller(e))}viewRangeToDom(t){const e=this.viewPositionToDom(t.start),n=this.viewPositionToDom(t.end),i=document.createRange();return i.setStart(e.parent,e.offset),i.setEnd(n.parent,n.offset),i}viewPositionToDom(t){const e=t.parent;if(e.is("text")){const n=this.findCorrespondingDomText(e);if(!n)return null;let i=t.offset;return Bo(n)&&(i+=Vo),{parent:n,offset:i}}{let n,i,o;if(0===t.offset){if(!(n=this.mapViewToDom(e)))return null;o=n.childNodes[0]}else{const e=t.nodeBefore;if(!(i=e.is("text")?this.findCorrespondingDomText(e):this.mapViewToDom(t.nodeBefore)))return null;n=i.parentNode,o=i.nextSibling}if(Do(o)&&Bo(o))return{parent:o,offset:Vo};return{parent:n,offset:i?er(i)+1:0}}}domToView(t,e={}){if(this.isBlockFiller(t,this.blockFillerMode))return null;const n=this.getParentUIElement(t,this._domToViewMapping);if(n)return n;if(Do(t)){if(Fo(t))return null;{const e=this._processDataFromDomText(t);return""===e?null:new fi(e)}}if(this.isComment(t))return null;{if(this.mapDomToView(t))return this.mapDomToView(t);let n;if(this.isDocumentFragment(t))n=new Ao,e.bind&&this.bindDocumentFragments(t,n);else{const i=e.keepOriginalCase?t.tagName:t.tagName.toLowerCase();n=new ki(i),e.bind&&this.bindElements(t,n);const o=t.attributes;for(let t=o.length-1;t>=0;t--)n._setAttribute(o[t].name,o[t].value)}if(e.withChildren||void 0===e.withChildren)for(const i of this.domChildrenToView(t,e))n._appendChild(i);return n}}*domChildrenToView(t,e={}){for(let n=0;n{const{scrollLeft:e,scrollTop:n}=t;i.push([e,n])}),e.focus(),sr(e,t=>{const[e,n]=i.shift();t.scrollLeft=e,t.scrollTop=n}),tr.window.scrollTo(t,n)}}isElement(t){return t&&t.nodeType==Node.ELEMENT_NODE}isDocumentFragment(t){return t&&t.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isComment(t){return t&&t.nodeType==Node.COMMENT_NODE}isBlockFiller(t){return"br"==this.blockFillerMode?t.isEqualNode(ir):function(t,e){return Do(t)&&" "==t.data&&function(t,e){const n=t.parentNode;return n&&n.tagName&&e.includes(n.tagName.toLowerCase())}(t,e)&&1===t.parentNode.childNodes.length}(t,this.blockElements)}isDomSelectionBackward(t){if(t.isCollapsed)return!1;const e=document.createRange();e.setStart(t.anchorNode,t.anchorOffset),e.setEnd(t.focusNode,t.focusOffset);const n=e.collapsed;return e.detach(),n}getParentUIElement(t){const e=nr(t);for(e.pop();e.length;){const t=e.pop(),n=this._domToViewMapping.get(t);if(n&&n.is("uiElement"))return n}return null}isDomSelectionCorrect(t){return this._isDomSelectionPositionCorrect(t.anchorNode,t.anchorOffset)&&this._isDomSelectionPositionCorrect(t.focusNode,t.focusOffset)}_isDomSelectionPositionCorrect(t,e){if(Do(t)&&Bo(t)&&ethis.preElements.includes(t.name)))return e;if(" "==e.charAt(0)){const n=this._getTouchingViewTextNode(t,!1);!(n&&this._nodeEndsWithSpace(n))&&n||(e=" "+e.substr(1))}if(" "==e.charAt(e.length-1)){const n=this._getTouchingViewTextNode(t,!0);" "!=e.charAt(e.length-2)&&n&&" "!=n.data.charAt(0)||(e=e.substr(0,e.length-1)+" ")}return e.replace(/ {2}/g,"  ")}_nodeEndsWithSpace(t){if(t.getAncestors().some(t=>this.preElements.includes(t.name)))return!1;const e=this._processDataFromViewText(t);return" "==e.charAt(e.length-1)}_processDataFromDomText(t){let e=t.data;if(rr(t,this.preElements))return Uo(t);e=e.replace(/[ \n\t\r]{1,}/g," ");const n=this._getTouchingInlineDomNode(t,!1),i=this._getTouchingInlineDomNode(t,!0),o=this._checkShouldLeftTrimDomText(n),r=this._checkShouldRightTrimDomText(t,i);return o&&(e=e.replace(/^ /,"")),r&&(e=e.replace(/ $/,"")),e=(e=Uo(new Text(e))).replace(/ \u00A0/g," "),(/( |\u00A0)\u00A0$/.test(e)||!i||i.data&&" "==i.data.charAt(0))&&(e=e.replace(/\u00A0$/," ")),o&&(e=e.replace(/^\u00A0/," ")),e}_checkShouldLeftTrimDomText(t){return!t||(!!Wn(t)||/[^\S\u00A0]/.test(t.data.charAt(t.data.length-1)))}_checkShouldRightTrimDomText(t,e){return!e&&!Bo(t)}_getTouchingViewTextNode(t,e){const n=new Ji({startPosition:e?Zi._createAfter(t):Zi._createBefore(t),direction:e?"forward":"backward"});for(const t of n){if(t.item.is("containerElement"))return null;if(t.item.is("br"))return null;if(t.item.is("textProxy"))return t.item}return null}_getTouchingInlineDomNode(t,e){if(!t.parentNode)return null;const n=e?"nextNode":"previousNode",i=t.ownerDocument,o=nr(t)[0],r=i.createTreeWalker(o,NodeFilter.SHOW_TEXT|NodeFilter.SHOW_ELEMENT,{acceptNode:t=>Do(t)?NodeFilter.FILTER_ACCEPT:"BR"==t.tagName?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});r.currentNode=t;const s=r[n]();if(null!==s){const e=function(t,e){const n=nr(t),i=nr(e);let o=0;for(;n[o]==i[o]&&n[o];)o++;return 0===o?null:n[o-1]}(t,s);if(e&&!rr(t,this.blockElements,e)&&!rr(s,this.blockElements,e))return s}return null}}function rr(t,e,n){let i=nr(t);return n&&(i=i.slice(i.indexOf(n)+1)),i.some(t=>t.tagName&&e.includes(t.tagName.toLowerCase()))}function sr(t,e){for(;t&&t!=tr.document;)e(t),t=t.parentNode}function ar(t){const e=Object.prototype.toString.apply(t);return"[object Window]"==e||"[object global]"==e}var cr=Li({},ei,{listenTo(t,...e){if(Ko(t)||ar(t)){const n=this._getProxyEmitter(t)||new lr(t);n.attach(...e),t=n}ei.listenTo.call(this,t,...e)},stopListening(t,e,n){if(Ko(t)||ar(t)){const e=this._getProxyEmitter(t);if(!e)return;t=e}ei.stopListening.call(this,t,e,n),t instanceof lr&&t.detach(e)},_getProxyEmitter(t){return function(t,e){return t[Xn]&&t[Xn][e]?t[Xn][e].emitter:null}(this,dr(t))}});class lr{constructor(t){ni(this,dr(t)),this._domNode=t}}function dr(t){return t["data-ck-expando"]||(t["data-ck-expando"]=Jn())}Li(lr.prototype,ei,{attach(t,e,n={}){if(this._domListeners&&this._domListeners[t])return;const i=this._createDomListener(t,!!n.useCapture);this._domNode.addEventListener(t,i,!!n.useCapture),this._domListeners||(this._domListeners={}),this._domListeners[t]=i},detach(t){let e;!this._domListeners[t]||(e=this._events[t])&&e.callbacks.length||this._domListeners[t].removeListener()},_createDomListener(t,e){const n=e=>{this.fire(t,e)};return n.removeListener=(()=>{this._domNode.removeEventListener(t,n,e),delete this._domListeners[t]}),n}});class hr{constructor(t){this.view=t,this.document=t.document,this.isEnabled=!1}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}destroy(){this.disable(),this.stopListening()}}ci(hr,cr);var ur="__lodash_hash_undefined__";var fr=function(t){return this.__data__.set(t,ur),this};var gr=function(t){return this.__data__.has(t)};function mr(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new Pt;++ea))return!1;var l=r.get(t);if(l&&r.get(e))return l==e;var d=-1,h=!0,u=n&_r?new pr:void 0;for(r.set(t,e),r.set(e,t);++d{this.listenTo(t,e,(t,e)=>{this.isEnabled&&this.onDomEvent(e)},{useCapture:this.useCapture})})}fire(t,e,n){this.isEnabled&&this.document.fire(t,new Zr(this.view,e,n))}}class ts extends Xr{constructor(t){super(t),this.domEventType=["keydown","keyup"]}onDomEvent(t){this.fire(t.type,t,{keyCode:t.keyCode,altKey:t.altKey,ctrlKey:t.ctrlKey||t.metaKey,shiftKey:t.shiftKey,get keystroke(){return wo(this)}})}}var es=function(){return i.a.Date.now()},ns="[object Symbol]";var is=function(t){return"symbol"==typeof t||w(t)&&m(t)==ns},os=NaN,rs=/^\s+|\s+$/g,ss=/^[-+]0x[0-9a-f]+$/i,as=/^0b[01]+$/i,cs=/^0o[0-7]+$/i,ls=parseInt;var ds=function(t){if("number"==typeof t)return t;if(is(t))return os;if(B(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=B(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(rs,"");var n=as.test(t);return n||cs.test(t)?ls(t.slice(2),n?2:8):ss.test(t)?os:+t},hs="Expected a function",us=Math.max,fs=Math.min;var gs=function(t,e,n){var i,o,r,s,a,c,l=0,d=!1,h=!1,u=!0;if("function"!=typeof t)throw new TypeError(hs);function f(e){var n=i,r=o;return i=o=void 0,l=e,s=t.apply(r,n)}function g(t){var n=t-c;return void 0===c||n>=e||n<0||h&&t-l>=r}function m(){var t=es();if(g(t))return p(t);a=setTimeout(m,function(t){var n=e-(t-c);return h?fs(n,r-(t-l)):n}(t))}function p(t){return a=void 0,u&&i?f(t):(i=o=void 0,s)}function b(){var t=es(),n=g(t);if(i=arguments,o=this,c=t,n){if(void 0===a)return function(t){return l=t,a=setTimeout(m,e),d?f(t):s}(c);if(h)return clearTimeout(a),a=setTimeout(m,e),f(c)}return void 0===a&&(a=setTimeout(m,e)),s}return e=ds(e)||0,B(n)&&(d=!!n.leading,r=(h="maxWait"in n)?us(ds(n.maxWait)||0,e):r,u="trailing"in n?!!n.trailing:u),b.cancel=function(){void 0!==a&&clearTimeout(a),l=0,i=c=o=a=void 0},b.flush=function(){return void 0===a?s:p(es())},b};class ms extends hr{constructor(t){super(t),this._fireSelectionChangeDoneDebounced=gs(t=>this.document.fire("selectionChangeDone",t),200)}observe(){const t=this.document;t.on("keydown",(e,n)=>{t.selection.isFake&&function(t){return t==bo.arrowright||t==bo.arrowleft||t==bo.arrowup||t==bo.arrowdown}(n.keyCode)&&this.isEnabled&&(n.preventDefault(),this._handleSelectionMove(n.keyCode))},{priority:"lowest"})}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(t){const e=this.document.selection,n=new no(e.getRanges(),{backward:e.isBackward,fake:!1});t!=bo.arrowleft&&t!=bo.arrowup||n.setTo(n.getFirstPosition()),t!=bo.arrowright&&t!=bo.arrowdown||n.setTo(n.getLastPosition());const i={oldSelection:e,newSelection:n,domSelection:null};this.document.fire("selectionChange",i),this._fireSelectionChangeDoneDebounced(i)}}class ps extends hr{constructor(t){super(t),this.mutationObserver=t.getObserver(Jr),this.selection=this.document.selection,this.domConverter=t.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=gs(t=>this.document.fire("selectionChangeDone",t),200),this._clearInfiniteLoopInterval=setInterval(()=>this._clearInfiniteLoop(),1e3),this._loopbackCounter=0}observe(t){const e=t.ownerDocument;this._documents.has(e)||(this.listenTo(e,"selectionchange",()=>{this._handleSelectionChange(e)}),this._documents.add(e))}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionChange(t){if(!this.isEnabled||!this.document.isFocused&&!this.document.isReadOnly)return;this.mutationObserver.flush();const e=t.defaultView.getSelection(),n=this.domConverter.domSelectionToView(e);if(!(this.selection.isEqual(n)&&this.domConverter.isDomSelectionCorrect(e)||++this._loopbackCounter>60))if(this.selection.isSimilar(n))this.view.forceRender();else{const t={oldSelection:this.selection,newSelection:n,domSelection:e};this.document.fire("selectionChange",t),this._fireSelectionChangeDoneDebounced(t)}}_clearInfiniteLoop(){this._loopbackCounter=0}}class bs extends Xr{constructor(t){super(t),this.domEventType=["focus","blur"],this.useCapture=!0;const e=this.document;e.on("focus",()=>{e.isFocused=!0,this._renderTimeoutId=setTimeout(()=>t.forceRender(),50)}),e.on("blur",(n,i)=>{const o=e.selection.editableElement;null!==o&&o!==i.target||(e.isFocused=!1,t.forceRender())})}onDomEvent(t){this.fire(t.type,t)}destroy(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),super.destroy()}}class ws extends Xr{constructor(t){super(t),this.domEventType=["compositionstart","compositionupdate","compositionend"];const e=this.document;e.on("compositionstart",()=>{e.isComposing=!0}),e.on("compositionend",()=>{e.isComposing=!1})}onDomEvent(t){this.fire(t.type,t)}}class ks extends Xr{constructor(t){super(t),this.domEventType=["beforeinput"]}onDomEvent(t){this.fire(t.type,t)}}function _s(t){return"[object Range]"==Object.prototype.toString.apply(t)}function vs(t){const e=t.ownerDocument.defaultView.getComputedStyle(t);return{top:parseInt(e.borderTopWidth,10),right:parseInt(e.borderRightWidth,10),bottom:parseInt(e.borderBottomWidth,10),left:parseInt(e.borderLeftWidth,10)}}const ys=["top","right","bottom","left","width","height"];class xs{constructor(t){const e=_s(t);if(Object.defineProperty(this,"_source",{value:t._source||t,writable:!0,enumerable:!1}),Wn(t)||e)As(this,e?xs.getDomRangeRects(t)[0]:t.getBoundingClientRect());else if(ar(t)){const{innerWidth:e,innerHeight:n}=t;As(this,{top:0,right:e,bottom:n,left:0,width:e,height:n})}else As(this,t)}clone(){return new xs(this)}moveTo(t,e){return this.top=e,this.right=t+this.width,this.bottom=e+this.height,this.left=t,this}moveBy(t,e){return this.top+=e,this.right+=t,this.left+=t,this.bottom+=e,this}getIntersection(t){const e={top:Math.max(this.top,t.top),right:Math.min(this.right,t.right),bottom:Math.min(this.bottom,t.bottom),left:Math.max(this.left,t.left)};return e.width=e.right-e.left,e.height=e.bottom-e.top,e.width<0||e.height<0?null:new xs(e)}getIntersectionArea(t){const e=this.getIntersection(t);return e?e.getArea():0}getArea(){return this.width*this.height}getVisible(){const t=this._source;let e=this.clone();if(!Ts(t)){let n=t.parentNode||t.commonAncestorContainer;for(;n&&!Ts(n);){const t=new xs(n),i=e.getIntersection(t);if(!i)return null;i.getArea()Ds(t,i));const s=Ds(t,i);if(Ps(i,s,e),i.parent!=i){if(o=i.frameElement,i=i.parent,!o)return}else i=null}}function Ps(t,e,n){const i=e.clone().moveBy(0,n),o=e.clone().moveBy(0,-n),r=new xs(t).excludeScrollbarsAndBorders();if(![o,i].every(t=>r.contains(t))){let{scrollX:s,scrollY:a}=t;Es(o,r)?a-=r.top-e.top+n:Ms(i,r)&&(a+=e.bottom-r.bottom+n),Is(e,r)?s-=r.left-e.left+n:Ns(e,r)&&(s+=e.right-r.right+n),t.scrollTo(s,a)}}function Ss(t,e){const n=Os(t);let i,o;for(;t!=n.document.body;)o=e(),(i=new xs(t).excludeScrollbarsAndBorders()).contains(o)||(Es(o,i)?t.scrollTop-=i.top-o.top:Ms(o,i)&&(t.scrollTop+=o.bottom-i.bottom),Is(o,i)?t.scrollLeft-=i.left-o.left:Ns(o,i)&&(t.scrollLeft+=o.right-i.right)),t=t.parentNode}function Ms(t,e){return t.bottom>e.bottom}function Es(t,e){return t.tope.right}function Os(t){return _s(t)?t.startContainer.ownerDocument.defaultView:t.ownerDocument.defaultView}function Rs(t){if(_s(t)){let e=t.commonAncestorContainer;return Do(e)&&(e=e.parentNode),e}return t.parentNode}function Ds(t,e){const n=Os(t),i=new xs(t);if(n===e)return i;{let t=n;for(;t!=e;){const e=t.frameElement,n=new xs(e).excludeScrollbarsAndBorders();i.moveBy(n.left,n.top),t=t.parent}}return i}Object.assign({},{scrollViewportToShowTarget:Cs,scrollAncestorsToShowTarget:function(t){Ss(Rs(t),()=>new xs(t))}});class Ls{constructor(){this.document=new ro,this.domConverter=new or,this.domRoots=new Map,this.set("isRenderingInProgress",!1),this._renderer=new Jo(this.domConverter,this.document.selection),this._renderer.bind("isFocused").to(this.document),this._initialDomRootAttributes=new WeakMap,this._observers=new Map,this._ongoingChange=!1,this._postFixersInProgress=!1,this._renderingDisabled=!1,this._hasChangedSinceTheLastRendering=!1,this._writer=new To(this.document),this.addObserver(Jr),this.addObserver(ps),this.addObserver(bs),this.addObserver(ts),this.addObserver(ms),this.addObserver(ws),go.isAndroid&&this.addObserver(ks),function(t){t.document.on("keydown",Ho)}(this),yo(this),this.on("render",()=>{this._render(),this.document.fire("layoutChanged"),this._hasChangedSinceTheLastRendering=!1}),this.listenTo(this.document.selection,"change",()=>{this._hasChangedSinceTheLastRendering=!0})}attachDomRoot(t,e="main"){const n=this.document.getRoot(e);n._name=t.tagName.toLowerCase();const i={};for(const{name:e,value:o}of Array.from(t.attributes))i[e]=o,"class"===e?this._writer.addClass(o.split(" "),n):this._writer.setAttribute(e,o,n);this._initialDomRootAttributes.set(t,i);const o=()=>{this._writer.setAttribute("contenteditable",!n.isReadOnly,n),n.isReadOnly?this._writer.addClass("ck-read-only",n):this._writer.removeClass("ck-read-only",n)};o(),this.domRoots.set(e,t),this.domConverter.bindElements(t,n),this._renderer.markToSync("children",n),this._renderer.markToSync("attributes",n),this._renderer.domDocuments.add(t.ownerDocument),n.on("change:children",(t,e)=>this._renderer.markToSync("children",e)),n.on("change:attributes",(t,e)=>this._renderer.markToSync("attributes",e)),n.on("change:text",(t,e)=>this._renderer.markToSync("text",e)),n.on("change:isReadOnly",()=>this.change(o)),n.on("change",()=>{this._hasChangedSinceTheLastRendering=!0});for(const n of this._observers.values())n.observe(t,e)}detachDomRoot(t){const e=this.domRoots.get(t);Array.from(e.attributes).forEach(({name:t})=>e.removeAttribute(t));const n=this._initialDomRootAttributes.get(e);for(const t in n)e.setAttribute(t,n[t]);this.domRoots.delete(t),this.domConverter.unbindDomElement(e)}getDomRoot(t="main"){return this.domRoots.get(t)}addObserver(t){let e=this._observers.get(t);if(e)return e;e=new t(this),this._observers.set(t,e);for(const[t,n]of this.domRoots)e.observe(n,t);return e.enable(),e}getObserver(t){return this._observers.get(t)}disableObservers(){for(const t of this._observers.values())t.disable()}enableObservers(){for(const t of this._observers.values())t.enable()}scrollToTheSelection(){const t=this.document.selection.getFirstRange();t&&Cs({target:this.domConverter.viewRangeToDom(t),viewportOffset:20})}focus(){if(!this.document.isFocused){const t=this.document.selection.editableElement;t&&(this.domConverter.focus(t),this.forceRender())}}change(t){if(this.isRenderingInProgress||this._postFixersInProgress)throw new Gn.b("cannot-change-view-tree: Attempting to make changes to the view when it is in an incorrect state: rendering or post-fixers are in progress. This may cause some unexpected behavior and inconsistency between the DOM and the view.",this);try{if(this._ongoingChange)return t(this._writer);this._ongoingChange=!0;const e=t(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire("render")),e}catch(t){Gn.b.rethrowUnexpectedError(t,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.change(()=>{})}destroy(){for(const t of this._observers.values())t.destroy();this.document.destroy(),this.stopListening()}createPositionAt(t,e){return Zi._createAt(t,e)}createPositionAfter(t){return Zi._createAfter(t)}createPositionBefore(t){return Zi._createBefore(t)}createRange(t,e){return new Xi(t,e)}createRangeOn(t){return Xi._createOn(t)}createRangeIn(t){return Xi._createIn(t)}createSelection(t,e,n){return new no(t,e,n)}_disableRendering(t){this._renderingDisabled=t,0==t&&this.change(()=>{})}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}function js(t){return T(t)?mi(t):new Map(t)}ci(Ls,Fi);class Vs{constructor(t){this.parent=null,this._attrs=js(t)}get index(){let t;if(!this.parent)return null;if(null===(t=this.parent.getChildIndex(this)))throw new Gn.b("model-node-not-found-in-parent: The node's parent does not contain this node.",this);return t}get startOffset(){let t;if(!this.parent)return null;if(null===(t=this.parent.getChildStartOffset(this)))throw new Gn.b("model-node-not-found-in-parent: The node's parent does not contain this node.",this);return t}get offsetSize(){return 1}get endOffset(){return this.parent?this.startOffset+this.offsetSize:null}get nextSibling(){const t=this.index;return null!==t&&this.parent.getChild(t+1)||null}get previousSibling(){const t=this.index;return null!==t&&this.parent.getChild(t-1)||null}get root(){let t=this;for(;t.parent;)t=t.parent;return t}get document(){return this.root==this?null:this.root.document||null}getPath(){const t=[];let e=this;for(;e.parent;)t.unshift(e.startOffset),e=e.parent;return t}getAncestors(t={includeSelf:!1,parentFirst:!1}){const e=[];let n=t.includeSelf?this:this.parent;for(;n;)e[t.parentFirst?"push":"unshift"](n),n=n.parent;return e}getCommonAncestor(t,e={}){const n=this.getAncestors(e),i=t.getAncestors(e);let o=0;for(;n[o]==i[o]&&n[o];)o++;return 0===o?null:n[o-1]}isBefore(t){if(this==t)return!1;if(this.root!==t.root)return!1;const e=this.getPath(),n=t.getPath(),i=li(e,n);switch(i){case"prefix":return!0;case"extension":return!1;default:return e[i](t[e[0]]=e[1],t),{})),t}is(t){return"node"==t||"model:node"==t}_clone(){return new Vs(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(t,e){this._attrs.set(t,e)}_setAttributesTo(t){this._attrs=js(t)}_removeAttribute(t){return this._attrs.delete(t)}_clearAttributes(){this._attrs.clear()}}class zs extends Vs{constructor(t,e){super(e),this._data=t||""}get offsetSize(){return this.data.length}get data(){return this._data}is(t){return"text"==t||"model:text"==t||super.is(t)}toJSON(){const t=super.toJSON();return t.data=this.data,t}_clone(){return new zs(this.data,this.getAttributes())}static fromJSON(t){return new zs(t.data,t.attributes)}}class Bs{constructor(t,e,n){if(this.textNode=t,e<0||e>t.offsetSize)throw new Gn.b("model-textproxy-wrong-offsetintext: Given offsetInText value is incorrect.",this);if(n<0||e+n>t.offsetSize)throw new Gn.b("model-textproxy-wrong-length: Given length value is incorrect.",this);this.data=t.data.substring(e,e+n),this.offsetInText=e}get startOffset(){return null!==this.textNode.startOffset?this.textNode.startOffset+this.offsetInText:null}get offsetSize(){return this.data.length}get endOffset(){return null!==this.startOffset?this.startOffset+this.offsetSize:null}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}is(t){return"textProxy"==t||"model:textProxy"==t}getPath(){const t=this.textNode.getPath();return t.length>0&&(t[t.length-1]+=this.offsetInText),t}getAncestors(t={includeSelf:!1,parentFirst:!1}){const e=[];let n=t.includeSelf?this:this.parent;for(;n;)e[t.parentFirst?"push":"unshift"](n),n=n.parent;return e}hasAttribute(t){return this.textNode.hasAttribute(t)}getAttribute(t){return this.textNode.getAttribute(t)}getAttributes(){return this.textNode.getAttributes()}getAttributeKeys(){return this.textNode.getAttributeKeys()}}class Fs{constructor(t){this._nodes=[],t&&this._insertNodes(0,t)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce((t,e)=>t+e.offsetSize,0)}getNode(t){return this._nodes[t]||null}getNodeIndex(t){const e=this._nodes.indexOf(t);return-1==e?null:e}getNodeStartOffset(t){const e=this.getNodeIndex(t);return null===e?null:this._nodes.slice(0,e).reduce((t,e)=>t+e.offsetSize,0)}indexToOffset(t){if(t==this._nodes.length)return this.maxOffset;const e=this._nodes[t];if(!e)throw new Gn.b("model-nodelist-index-out-of-bounds: Given index cannot be found in the node list.",this);return this.getNodeStartOffset(e)}offsetToIndex(t){let e=0;for(const n of this._nodes){if(t>=e&&tt.toJSON())}}class Us extends Vs{constructor(t,e,n){super(e),this.name=t,this._children=new Fs,n&&this._insertChild(0,n)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}is(t,e=null){const n=t.replace(/^model:/,"");return e?"element"==n&&e==this.name:"element"==n||n==this.name||super.is(t)}getChild(t){return this._children.getNode(t)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(t){return this._children.getNodeIndex(t)}getChildStartOffset(t){return this._children.getNodeStartOffset(t)}offsetToIndex(t){return this._children.offsetToIndex(t)}getNodeByPath(t){let e=this;for(const n of t)e=e.getChild(e.offsetToIndex(n));return e}toJSON(){const t=super.toJSON();if(t.name=this.name,this._children.length>0){t.children=[];for(const e of this._children)t.children.push(e.toJSON())}return t}_clone(t=!1){const e=t?Array.from(this._children).map(t=>t._clone(!0)):null;return new Us(this.name,this.getAttributes(),e)}_appendChild(t){this._insertChild(this.childCount,t)}_insertChild(t,e){const n=function(t){if("string"==typeof t)return[new zs(t)];pi(t)||(t=[t]);return Array.from(t).map(t=>"string"==typeof t?new zs(t):t instanceof Bs?new zs(t.data,t.getAttributes()):t)}(e);for(const t of n)null!==t.parent&&t._remove(),t.parent=this;this._children._insertNodes(t,n)}_removeChildren(t,e=1){const n=this._children._removeNodes(t,e);for(const t of n)t.parent=null;return n}static fromJSON(t){let e=null;if(t.children){e=[];for(const n of t.children)n.name?e.push(Us.fromJSON(n)):e.push(zs.fromJSON(n))}return new Us(t.name,t.attributes,e)}}class Hs{constructor(t={}){if(!t.boundaries&&!t.startPosition)throw new Gn.b("model-tree-walker-no-start-position: Neither boundaries nor starting position have been defined.",null);const e=t.direction||"forward";if("forward"!=e&&"backward"!=e)throw new Gn.b("model-tree-walker-unknown-direction: Only `backward` and `forward` direction allowed.",t,{direction:e});this.direction=e,this.boundaries=t.boundaries||null,t.startPosition?this.position=t.startPosition.clone():this.position=Ys._createAt(this.boundaries["backward"==this.direction?"end":"start"]),this.position.stickiness="toNone",this.singleCharacters=!!t.singleCharacters,this.shallow=!!t.shallow,this.ignoreElementEnd=!!t.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}[Symbol.iterator](){return this}skip(t){let e,n,i,o;do{i=this.position,o=this._visitedParent,({done:e,value:n}=this.next())}while(!e&&t(n));e||(this.position=i,this._visitedParent=o)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){const t=this.position,e=this.position.clone(),n=this._visitedParent;if(null===n.parent&&e.offset===n.maxOffset)return{done:!0};if(n===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0};const i=e.textNode?e.textNode:e.nodeAfter;if(i instanceof Us)return this.shallow?e.offset++:(e.path.push(0),this._visitedParent=i),this.position=e,qs("elementStart",i,t,e,1);if(i instanceof zs){let o;if(this.singleCharacters)o=1;else{let t=i.endOffset;this._boundaryEndParent==n&&this.boundaries.end.offsett&&(t=this.boundaries.start.offset),o=e.offset-t}const r=e.offset-i.startOffset,s=new Bs(i,r-o,o);return e.offset-=o,this.position=e,qs("text",s,t,e,o)}return e.path.pop(),this.position=e,this._visitedParent=n.parent,qs("elementStart",n,t,e,1)}}function qs(t,e,n,i,o){return{done:!1,value:{type:t,item:e,previousPosition:n,nextPosition:i,length:o}}}var Ws=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0};class Ys{constructor(t,e,n="toNone"){if(!t.is("element")&&!t.is("documentFragment"))throw new Gn.b("model-position-root-invalid: Position root invalid.",t);if(!(e instanceof Array)||0===e.length)throw new Gn.b("model-position-path-incorrect-format: Position path must be an array with at least one item.",t,{path:e});e=t.getPath().concat(e),t=t.root,this.root=t,this.path=e,this.stickiness=n}get offset(){return Ws(this.path)}set offset(t){this.path[this.path.length-1]=t}get parent(){let t=this.root;for(let e=0;en.path.length){if(e.offset!==i.maxOffset)return!1;e.path=e.path.slice(0,-1),i=i.parent,e.offset++}else{if(0!==n.offset)return!1;n.path=n.path.slice(0,-1)}}}is(t){return"position"==t||"model:position"==t}hasSameParentAs(t){if(this.root!==t.root)return!1;return"same"==li(this.getParentPath(),t.getParentPath())}getTransformedByOperation(t){let e;switch(t.type){case"insert":e=this._getTransformedByInsertOperation(t);break;case"move":case"remove":case"reinsert":e=this._getTransformedByMoveOperation(t);break;case"split":e=this._getTransformedBySplitOperation(t);break;case"merge":e=this._getTransformedByMergeOperation(t);break;default:e=Ys._createAt(this)}return e}_getTransformedByInsertOperation(t){return this._getTransformedByInsertion(t.position,t.howMany)}_getTransformedByMoveOperation(t){return this._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany)}_getTransformedBySplitOperation(t){const e=t.movedRange;return e.containsPosition(this)||e.start.isEqual(this)&&"toNext"==this.stickiness?this._getCombined(t.splitPosition,t.moveTargetPosition):t.graveyardPosition?this._getTransformedByMove(t.graveyardPosition,t.insertionPosition,1):this._getTransformedByInsertion(t.insertionPosition,1)}_getTransformedByMergeOperation(t){const e=t.movedRange;let n;return e.containsPosition(this)||e.start.isEqual(this)?(n=this._getCombined(t.sourcePosition,t.targetPosition),t.sourcePosition.isBefore(t.targetPosition)&&(n=n._getTransformedByDeletion(t.deletionPosition,1))):n=this.isEqual(t.deletionPosition)?Ys._createAt(t.deletionPosition):this._getTransformedByMove(t.deletionPosition,t.graveyardPosition,1),n}_getTransformedByDeletion(t,e){const n=Ys._createAt(this);if(this.root!=t.root)return n;if("same"==li(t.getParentPath(),this.getParentPath())){if(t.offsetthis.offset)return null;n.offset-=e}}else if("prefix"==li(t.getParentPath(),this.getParentPath())){const i=t.path.length-1;if(t.offset<=this.path[i]){if(t.offset+e>this.path[i])return null;n.path[i]-=e}}return n}_getTransformedByInsertion(t,e){const n=Ys._createAt(this);if(this.root!=t.root)return n;if("same"==li(t.getParentPath(),this.getParentPath()))(t.offsete+1;){const e=i.maxOffset-n.offset;0!==e&&t.push(new $s(n,n.getShiftedBy(e))),n.path=n.path.slice(0,-1),n.offset++,i=i.parent}for(;n.path.length<=this.end.path.length;){const e=this.end.path[n.path.length-1],i=e-n.offset;0!==i&&t.push(new $s(n,n.getShiftedBy(i))),n.offset=e,n.path.push(0)}return t}getWalker(t={}){return t.boundaries=this,new Hs(t)}*getItems(t={}){t.boundaries=this,t.ignoreElementEnd=!0;const e=new Hs(t);for(const t of e)yield t.item}*getPositions(t={}){t.boundaries=this;const e=new Hs(t);yield e.position;for(const t of e)yield t.nextPosition}getTransformedByOperation(t){switch(t.type){case"insert":return this._getTransformedByInsertOperation(t);case"move":case"remove":case"reinsert":return this._getTransformedByMoveOperation(t);case"split":return[this._getTransformedBySplitOperation(t)];case"merge":return[this._getTransformedByMergeOperation(t)]}return[new $s(this.start,this.end)]}getTransformedByOperations(t){const e=[new $s(this.start,this.end)];for(const n of t)for(let t=0;t0?new this(n,i):new this(i,n)}static _createIn(t){return new this(Ys._createAt(t,0),Ys._createAt(t,t.maxOffset))}static _createOn(t){return this._createFromPositionAndShift(Ys._createBefore(t),t.offsetSize)}static _createFromRanges(t){if(0===t.length)throw new Gn.b("range-create-from-ranges-empty-array: At least one range has to be passed.",null);if(1==t.length)return t[0].clone();const e=t[0];t.sort((t,e)=>t.start.isAfter(e.start)?1:-1);const n=t.indexOf(e),i=new this(e.start,e.end);if(n>0)for(let e=n-1;t[e].end.isEqual(i.start);e++)i.start=Ys._createAt(t[e].start);for(let e=n+1;e{if(e.viewPosition)return;const n=this._modelToViewMapping.get(e.modelPosition.parent);e.viewPosition=this._findPositionIn(n,e.modelPosition.offset)},{priority:"low"}),this.on("viewToModelPosition",(t,e)=>{if(e.modelPosition)return;const n=this.findMappedViewAncestor(e.viewPosition),i=this._viewToModelMapping.get(n),o=this._toModelOffset(e.viewPosition.parent,e.viewPosition.offset,n);e.modelPosition=Ys._createAt(i,o)},{priority:"low"})}bindElements(t,e){this._modelToViewMapping.set(t,e),this._viewToModelMapping.set(e,t)}unbindViewElement(t){const e=this.toModelElement(t);if(this._viewToModelMapping.delete(t),this._elementToMarkerNames.has(t))for(const e of this._elementToMarkerNames.get(t))this._unboundMarkerNames.add(e);this._modelToViewMapping.get(e)==t&&this._modelToViewMapping.delete(e)}unbindModelElement(t){const e=this.toViewElement(t);this._modelToViewMapping.delete(t),this._viewToModelMapping.get(e)==t&&this._viewToModelMapping.delete(e)}bindElementToMarker(t,e){const n=this._markerNameToElements.get(e)||new Set;n.add(t);const i=this._elementToMarkerNames.get(t)||new Set;i.add(e),this._markerNameToElements.set(e,n),this._elementToMarkerNames.set(t,i)}unbindElementFromMarkerName(t,e){const n=this._markerNameToElements.get(e);n&&(n.delete(t),0==n.size&&this._markerNameToElements.delete(e));const i=this._elementToMarkerNames.get(t);i&&(i.delete(e),0==i.size&&this._elementToMarkerNames.delete(t))}flushUnboundMarkerNames(){const t=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),t}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set}toModelElement(t){return this._viewToModelMapping.get(t)}toViewElement(t){return this._modelToViewMapping.get(t)}toModelRange(t){return new $s(this.toModelPosition(t.start),this.toModelPosition(t.end))}toViewRange(t){return new Xi(this.toViewPosition(t.start),this.toViewPosition(t.end))}toModelPosition(t){const e={viewPosition:t,mapper:this};return this.fire("viewToModelPosition",e),e.modelPosition}toViewPosition(t,e={isPhantom:!1}){const n={modelPosition:t,mapper:this,isPhantom:e.isPhantom};return this.fire("modelToViewPosition",n),n.viewPosition}markerNameToElements(t){const e=this._markerNameToElements.get(t);if(!e)return null;const n=new Set;for(const t of e)if(t.is("attributeElement"))for(const e of t.getElementsWithSameId())n.add(e);else n.add(t);return n}registerViewToModelLength(t,e){this._viewToModelLengthCallbacks.set(t,e)}findMappedViewAncestor(t){let e=t.parent;for(;!this._viewToModelMapping.has(e);)e=e.parent;return e}_toModelOffset(t,e,n){if(n!=t){return this._toModelOffset(t.parent,t.index,n)+this._toModelOffset(t,e,t)}if(t.is("text"))return e;let i=0;for(let n=0;n1?e[0]+":"+e[1]:e[0]}class Js{constructor(t){this.conversionApi=Li({dispatcher:this},t)}convertChanges(t,e,n){for(const e of t.getMarkersToRemove())this.convertMarkerRemove(e.name,e.range,n);for(const e of t.getChanges())"insert"==e.type?this.convertInsert($s._createFromPositionAndShift(e.position,e.length),n):"remove"==e.type?this.convertRemove(e.position,e.length,e.name,n):this.convertAttribute(e.range,e.attributeKey,e.attributeOldValue,e.attributeNewValue,n);for(const t of this.conversionApi.mapper.flushUnboundMarkerNames()){const i=e.get(t).getRange();this.convertMarkerRemove(t,i,n),this.convertMarkerAdd(t,i,n)}for(const e of t.getMarkersToAdd())this.convertMarkerAdd(e.name,e.range,n)}convertInsert(t,e){this.conversionApi.writer=e,this.conversionApi.consumable=this._createInsertConsumable(t);for(const e of t){const t=e.item,n={item:t,range:$s._createFromPositionAndShift(e.previousPosition,e.length)};this._testAndFire("insert",n);for(const e of t.getAttributeKeys())n.attributeKey=e,n.attributeOldValue=null,n.attributeNewValue=t.getAttribute(e),this._testAndFire(`attribute:${e}`,n)}this._clearConversionApi()}convertRemove(t,e,n,i){this.conversionApi.writer=i,this.fire("remove:"+n,{position:t,length:e},this.conversionApi),this._clearConversionApi()}convertAttribute(t,e,n,i,o){this.conversionApi.writer=o,this.conversionApi.consumable=this._createConsumableForRange(t,`attribute:${e}`);for(const o of t){const t={item:o.item,range:$s._createFromPositionAndShift(o.previousPosition,o.length),attributeKey:e,attributeOldValue:n,attributeNewValue:i};this._testAndFire(`attribute:${e}`,t)}this._clearConversionApi()}convertSelection(t,e,n){const i=Array.from(e.getMarkersAtPosition(t.getFirstPosition()));if(this.conversionApi.writer=n,this.conversionApi.consumable=this._createSelectionConsumable(t,i),this.fire("selection",{selection:t},this.conversionApi),t.isCollapsed){for(const e of i){const n=e.getRange();if(!Zs(t.getFirstPosition(),e,this.conversionApi.mapper))continue;const i={item:t,markerName:e.name,markerRange:n};this.conversionApi.consumable.test(t,"addMarker:"+e.name)&&this.fire("addMarker:"+e.name,i,this.conversionApi)}for(const e of t.getAttributeKeys()){const n={item:t,range:t.getFirstRange(),attributeKey:e,attributeOldValue:null,attributeNewValue:t.getAttribute(e)};this.conversionApi.consumable.test(t,"attribute:"+n.attributeKey)&&this.fire("attribute:"+n.attributeKey+":$text",n,this.conversionApi)}this._clearConversionApi()}}convertMarkerAdd(t,e,n){if(!e.root.document||"$graveyard"==e.root.rootName)return;this.conversionApi.writer=n;const i="addMarker:"+t,o=new Qs;if(o.add(e,i),this.conversionApi.consumable=o,this.fire(i,{markerName:t,markerRange:e},this.conversionApi),o.test(e,i)){this.conversionApi.consumable=this._createConsumableForRange(e,i);for(const n of e.getItems()){if(!this.conversionApi.consumable.test(n,i))continue;const o={item:n,range:$s._createOn(n),markerName:t,markerRange:e};this.fire(i,o,this.conversionApi)}this._clearConversionApi()}}convertMarkerRemove(t,e,n){e.root.document&&"$graveyard"!=e.root.rootName&&(this.conversionApi.writer=n,this.fire("removeMarker:"+t,{markerName:t,markerRange:e},this.conversionApi),this._clearConversionApi())}_createInsertConsumable(t){const e=new Qs;for(const n of t){const t=n.item;e.add(t,"insert");for(const n of t.getAttributeKeys())e.add(t,"attribute:"+n)}return e}_createConsumableForRange(t,e){const n=new Qs;for(const i of t.getItems())n.add(i,e);return n}_createSelectionConsumable(t,e){const n=new Qs;n.add(t,"selection");for(const i of e)n.add(t,"addMarker:"+i.name);for(const e of t.getAttributeKeys())n.add(t,"attribute:"+e);return n}_testAndFire(t,e){if(!this.conversionApi.consumable.test(e.item,t))return;const n=e.item.name||"$text";this.fire(t+":"+n,e,this.conversionApi)}_clearConversionApi(){delete this.conversionApi.writer,delete this.conversionApi.consumable}}function Zs(t,e,n){const i=e.getRange(),o=Array.from(t.getAncestors());return o.shift(),o.reverse(),!o.some(t=>{if(i.containsItem(t)){return!!n.toViewElement(t).getCustomProperty("addHighlight")}})}ci(Js,ei);class Xs{constructor(t,e,n){this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map,t&&this.setTo(t,e,n)}get anchor(){if(this._ranges.length>0){const t=this._ranges[this._ranges.length-1];return this._lastRangeBackward?t.end:t.start}return null}get focus(){if(this._ranges.length>0){const t=this._ranges[this._ranges.length-1];return this._lastRangeBackward?t.start:t.end}return null}get isCollapsed(){return 1===this._ranges.length&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}isEqual(t){if(this.rangeCount!=t.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(t.anchor)||!this.focus.isEqual(t.focus))return!1;for(const e of this._ranges){let n=!1;for(const i of t._ranges)if(e.isEqual(i)){n=!0;break}if(!n)return!1}return!0}*getRanges(){for(const t of this._ranges)yield new $s(t.start,t.end)}getFirstRange(){let t=null;for(const e of this._ranges)t&&!e.start.isBefore(t.start)||(t=e);return t?new $s(t.start,t.end):null}getLastRange(){let t=null;for(const e of this._ranges)t&&!e.end.isAfter(t.end)||(t=e);return t?new $s(t.start,t.end):null}getFirstPosition(){const t=this.getFirstRange();return t?t.start.clone():null}getLastPosition(){const t=this.getLastRange();return t?t.end.clone():null}setTo(t,e,n){if(null===t)this._setRanges([]);else if(t instanceof Xs)this._setRanges(t.getRanges(),t.isBackward);else if(t&&"function"==typeof t.getRanges)this._setRanges(t.getRanges(),t.isBackward);else if(t instanceof $s)this._setRanges([t],!!e&&!!e.backward);else if(t instanceof Ys)this._setRanges([new $s(t)]);else if(t instanceof Vs){const i=!!n&&!!n.backward;let o;if("in"==e)o=$s._createIn(t);else if("on"==e)o=$s._createOn(t);else{if(void 0===e)throw new Gn.b("model-selection-setTo-required-second-parameter: selection.setTo requires the second parameter when the first parameter is a node.",[this,t]);o=new $s(Ys._createAt(t,e))}this._setRanges([o],i)}else{if(!pi(t))throw new Gn.b("model-selection-setTo-not-selectable: Cannot set the selection to the given place.",[this,t]);this._setRanges(t,e&&!!e.backward)}}_setRanges(t,e=!1){const n=(t=Array.from(t)).some(e=>{if(!(e instanceof $s))throw new Gn.b("model-selection-set-ranges-not-range: Selection range set to an object that is not an instance of model.Range.",[this,t]);return this._ranges.every(t=>!t.isEqual(e))});if(t.length!==this._ranges.length||n){this._removeAllRanges();for(const e of t)this._pushRange(e);this._lastRangeBackward=!!e,this.fire("change:range",{directChange:!0})}}setFocus(t,e){if(null===this.anchor)throw new Gn.b("model-selection-setFocus-no-ranges: Cannot set selection focus if there are no ranges in selection.",[this,t]);const n=Ys._createAt(t,e);if("same"==n.compareWith(this.focus))return;const i=this.anchor;this._ranges.length&&this._popRange(),"before"==n.compareWith(i)?(this._pushRange(new $s(n,i)),this._lastRangeBackward=!0):(this._pushRange(new $s(i,n)),this._lastRangeBackward=!1),this.fire("change:range",{directChange:!0})}getAttribute(t){return this._attrs.get(t)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(t){return this._attrs.has(t)}removeAttribute(t){this.hasAttribute(t)&&(this._attrs.delete(t),this.fire("change:attribute",{attributeKeys:[t],directChange:!0}))}setAttribute(t,e){this.getAttribute(t)!==e&&(this._attrs.set(t,e),this.fire("change:attribute",{attributeKeys:[t],directChange:!0}))}getSelectedElement(){if(1!==this.rangeCount)return null;const t=this.getFirstRange(),e=t.start.nodeAfter,n=t.end.nodeBefore;return e instanceof Us&&e==n?e:null}is(t){return"selection"==t||"model:selection"==t}*getSelectedBlocks(){const t=new WeakSet;for(const e of this.getRanges()){const n=na(e.start,t);n&&ia(n,e)&&(yield n);for(const n of e.getWalker()){const i=n.item;"elementEnd"==n.type&&ea(i,t,e)&&(yield i)}const i=na(e.end,t);i&&!e.end.isTouching(Ys._createAt(i,0))&&ia(i,e)&&(yield i)}}containsEntireContent(t=this.anchor.root){const e=Ys._createAt(t,0),n=Ys._createAt(t,"end");return e.isTouching(this.getFirstPosition())&&n.isTouching(this.getLastPosition())}_pushRange(t){this._checkRange(t),this._ranges.push(new $s(t.start,t.end))}_checkRange(t){for(let e=0;e0;)this._popRange()}_popRange(){this._ranges.pop()}}function ta(t,e){return!e.has(t)&&(e.add(t),t.document.model.schema.isBlock(t)&&t.parent)}function ea(t,e,n){return ta(t,e)&&ia(t,n)}function na(t,e){const n=t.parent.document.model.schema,i=t.parent.getAncestors({parentFirst:!0,includeSelf:!0});let o=!1;const r=i.find(t=>!o&&(!(o=n.isLimit(t))&&ta(t,e)));return i.forEach(t=>e.add(t)),r}function ia(t,e){const n=function(t){const e=t.document.model.schema;let n=t.parent;for(;n;){if(e.isBlock(n))return n;n=n.parent}}(t);return!n||!e.containsRange($s._createOn(n),!0)}ci(Xs,ei);class oa extends $s{constructor(t,e){super(t,e),function(){this.listenTo(this.root.document.model,"applyOperation",(t,e)=>{const n=e[0];n.isDocumentOperation&&function(t){const e=this.getTransformedByOperation(t),n=$s._createFromRanges(e),i=!n.isEqual(this),o=function(t,e){switch(e.type){case"insert":return t.containsPosition(e.position);case"move":case"remove":case"reinsert":case"merge":return t.containsPosition(e.sourcePosition)||t.start.isEqual(e.sourcePosition)||t.containsPosition(e.targetPosition);case"split":return t.containsPosition(e.splitPosition)||t.containsPosition(e.insertionPosition)}return!1}(this,t);let r=null;if(i){"$graveyard"==n.root.rootName&&(r="remove"==t.type?t.sourcePosition:t.deletionPosition);const e=this.toRange();this.start=n.start,this.end=n.end,this.fire("change:range",e,{deletionPosition:r})}else o&&this.fire("change:content",this.toRange(),{deletionPosition:r})}.call(this,n)},{priority:"low"})}.call(this)}detach(){this.stopListening()}is(t){return"liveRange"==t||"model:liveRange"==t||super.is(t)}toRange(){return new $s(this.start,this.end)}static fromRange(t){return new oa(t.start,t.end)}}ci(oa,ei);const ra="selection:";class sa{constructor(t){this._selection=new aa(t),this._selection.delegate("change:range").to(this),this._selection.delegate("change:attribute").to(this)}get isCollapsed(){return this._selection.isCollapsed}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get rangeCount(){return this._selection.rangeCount}get hasOwnRange(){return this._selection.hasOwnRange}get isBackward(){return this._selection.isBackward}get isGravityOverridden(){return this._selection.isGravityOverridden}get markers(){return this._selection.markers}get _ranges(){return this._selection._ranges}getRanges(){return this._selection.getRanges()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getSelectedBlocks(){return this._selection.getSelectedBlocks()}getSelectedElement(){return this._selection.getSelectedElement()}containsEntireContent(t){return this._selection.containsEntireContent(t)}destroy(){this._selection.destroy()}getAttributeKeys(){return this._selection.getAttributeKeys()}getAttributes(){return this._selection.getAttributes()}getAttribute(t){return this._selection.getAttribute(t)}hasAttribute(t){return this._selection.hasAttribute(t)}refresh(){this._selection._updateMarkers(),this._selection._updateAttributes(!1)}is(t){return"selection"==t||"model:selection"==t||"documentSelection"==t||"model:documentSelection"==t}_setFocus(t,e){this._selection.setFocus(t,e)}_setTo(t,e,n){this._selection.setTo(t,e,n)}_setAttribute(t,e){this._selection.setAttribute(t,e)}_removeAttribute(t){this._selection.removeAttribute(t)}_getStoredAttributes(){return this._selection._getStoredAttributes()}_overrideGravity(){return this._selection.overrideGravity()}_restoreGravity(t){this._selection.restoreGravity(t)}static _getStoreAttributeKey(t){return ra+t}static _isStoreAttributeKey(t){return t.startsWith(ra)}}ci(sa,ei);class aa extends Xs{constructor(t){super(),this.markers=new oo({idProperty:"name"}),this._model=t.model,this._document=t,this._attributePriority=new Map,this._fixGraveyardRangesData=[],this._hasChangedRange=!1,this._overriddenGravityRegister=new Set,this.listenTo(this._model,"applyOperation",(t,e)=>{const n=e[0];if(n.isDocumentOperation&&"marker"!=n.type&&"rename"!=n.type&&"noop"!=n.type){for(;this._fixGraveyardRangesData.length;){const{liveRange:t,sourcePosition:e}=this._fixGraveyardRangesData.shift();this._fixGraveyardSelection(t,e)}this._hasChangedRange&&(this._hasChangedRange=!1,this.fire("change:range",{directChange:!1}))}},{priority:"lowest"}),this.on("change:range",()=>{for(const t of this.getRanges())if(!this._document._validateSelectionRange(t))throw new Gn.b("document-selection-wrong-position: Range from document selection starts or ends at incorrect position.",this,{range:t})}),this.listenTo(this._model.markers,"update",()=>this._updateMarkers()),this.listenTo(this._document,"change",(t,e)=>{!function(t,e){const n=t.document.differ;for(const i of n.getChanges()){if("insert"!=i.type)continue;const n=i.position.parent,o=i.length===n.maxOffset;o&&t.enqueueChange(e,t=>{const e=Array.from(n.getAttributeKeys()).filter(t=>t.startsWith(ra));for(const i of e)t.removeAttribute(i,n)})}}(this._model,e)})}get isCollapsed(){return 0===this._ranges.length?this._document._getDefaultRange().isCollapsed:super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().end}get rangeCount(){return this._ranges.length?this._ranges.length:1}get hasOwnRange(){return this._ranges.length>0}get isGravityOverridden(){return!!this._overriddenGravityRegister.size}destroy(){for(let t=0;t{this._hasChangedRange=!0,e.root==this._document.graveyard&&this._fixGraveyardRangesData.push({liveRange:e,sourcePosition:i.deletionPosition})}),e}_updateMarkers(){const t=[];for(const e of this._model.markers){const n=e.getRange();for(const i of this.getRanges())n.containsRange(i,!i.isCollapsed)&&t.push(e)}for(const e of t)this.markers.has(e)||this.markers.add(e);for(const e of Array.from(this.markers))t.includes(e)||this.markers.remove(e)}_updateAttributes(t){const e=js(this._getSurroundingAttributes()),n=js(this.getAttributes());if(t)this._attributePriority=new Map,this._attrs=new Map;else for(const[t,e]of this._attributePriority)"low"==e&&(this._attrs.delete(t),this._attributePriority.delete(t));this._setAttributesTo(e);const i=[];for(const[t,e]of this.getAttributes())n.has(t)&&n.get(t)===e||i.push(t);for(const[t]of n)this.hasAttribute(t)||i.push(t);i.length>0&&this.fire("change:attribute",{attributeKeys:i,directChange:!1})}_setAttribute(t,e,n=!0){const i=n?"normal":"low";return("low"!=i||"normal"!=this._attributePriority.get(t))&&(super.getAttribute(t)!==e&&(this._attrs.set(t,e),this._attributePriority.set(t,i),!0))}_removeAttribute(t,e=!0){const n=e?"normal":"low";return("low"!=n||"normal"!=this._attributePriority.get(t))&&(this._attributePriority.set(t,n),!!super.hasAttribute(t)&&(this._attrs.delete(t),!0))}_setAttributesTo(t){const e=new Set;for(const[e,n]of this.getAttributes())t.get(e)!==n&&this._removeAttribute(e,!1);for(const[n,i]of t){this._setAttribute(n,i,!1)&&e.add(n)}return e}*_getStoredAttributes(){const t=this.getFirstPosition().parent;if(this.isCollapsed&&t.isEmpty)for(const e of t.getAttributeKeys())if(e.startsWith(ra)){yield[e.substr(ra.length),t.getAttribute(e)]}}_getSurroundingAttributes(){const t=this.getFirstPosition(),e=this._model.schema;let n=null;if(this.isCollapsed){const e=t.textNode?t.textNode:t.nodeBefore,i=t.textNode?t.textNode:t.nodeAfter;if(this.isGravityOverridden||(n=ca(e)),n||(n=ca(i)),!this.isGravityOverridden&&!n){let t=e;for(;t&&!n;)n=ca(t=t.previousSibling)}if(!n){let t=i;for(;t&&!n;)n=ca(t=t.nextSibling)}n||(n=this._getStoredAttributes())}else{const t=this.getFirstRange();for(const i of t){if(i.item.is("element")&&e.isObject(i.item))break;if("text"==i.type){n=i.item.getAttributes();break}}}return n}_fixGraveyardSelection(t,e){const n=e.clone(),i=this._model.schema.getNearestSelectionRange(n),o=this._ranges.indexOf(t);if(this._ranges.splice(o,1),t.detach(),i){const t=this._prepareRange(i);this._ranges.splice(o,0,t)}}}function ca(t){return t instanceof Bs||t instanceof zs?t.getAttributes():null}class la{constructor(t){this._dispatchers=t}add(t){for(const e of this._dispatchers)t(e);return this}}var da=1,ha=4;var ua=function(t){return Fn(t,da|ha)};class fa extends la{elementToElement(t){return this.add(function(t){return(t=ua(t)).view=ma(t.view,"container"),e=>{e.on("insert:"+t.model,function(t){return(e,n,i)=>{const o=t(n.item,i.writer);if(!o)return;if(!i.consumable.consume(n.item,"insert"))return;const r=i.mapper.toViewPosition(n.range.start);i.mapper.bindElements(n.item,o),i.writer.insert(r,o)}}(t.view),{priority:t.converterPriority||"normal"})}}(t))}attributeToElement(t){return this.add(function(t){let e="attribute:"+((t=ua(t)).model.key?t.model.key:t.model);t.model.name&&(e+=":"+t.model.name);if(t.model.values)for(const e of t.model.values)t.view[e]=ma(t.view[e],"attribute");else t.view=ma(t.view,"attribute");const n=pa(t);return i=>{i.on(e,function(t){return(e,n,i)=>{const o=t(n.attributeOldValue,i.writer),r=t(n.attributeNewValue,i.writer);if(!o&&!r)return;if(!i.consumable.consume(n.item,e.name))return;const s=i.writer,a=s.document.selection;if(n.item instanceof Xs||n.item instanceof sa)s.wrap(a.getFirstRange(),r);else{let t=i.mapper.toViewRange(n.range);null!==n.attributeOldValue&&o&&(t=s.unwrap(t,o)),null!==n.attributeNewValue&&r&&s.wrap(t,r)}}}(n),{priority:t.converterPriority||"normal"})}}(t))}attributeToAttribute(t){return this.add(function(t){let e="attribute:"+((t=ua(t)).model.key?t.model.key:t.model);t.model.name&&(e+=":"+t.model.name);if(t.model.values)for(const e of t.model.values)t.view[e]=ba(t.view[e]);else t.view=ba(t.view);const n=pa(t);return i=>{i.on(e,function(t){return(e,n,i)=>{const o=t(n.attributeOldValue,n),r=t(n.attributeNewValue,n);if(!o&&!r)return;if(!i.consumable.consume(n.item,e.name))return;const s=i.mapper.toViewElement(n.item),a=i.writer;if(!s)throw new Gn.b("conversion-attribute-to-attribute-on-text: Trying to convert text node's attribute with attribute-to-attribute converter.",[n,i]);if(null!==n.attributeOldValue&&o)if("class"==o.key){const t=Array.isArray(o.value)?o.value:[o.value];for(const e of t)a.removeClass(e,s)}else if("style"==o.key){const t=Object.keys(o.value);for(const e of t)a.removeStyle(e,s)}else a.removeAttribute(o.key,s);if(null!==n.attributeNewValue&&r)if("class"==r.key){const t=Array.isArray(r.value)?r.value:[r.value];for(const e of t)a.addClass(e,s)}else if("style"==r.key){const t=Object.keys(r.value);for(const e of t)a.setStyle(e,r.value[e],s)}else a.setAttribute(r.key,r.value,s)}}(n),{priority:t.converterPriority||"normal"})}}(t))}markerToElement(t){return this.add(function(t){return(t=ua(t)).view=ma(t.view,"ui"),e=>{e.on("addMarker:"+t.model,function(t){return(e,n,i)=>{n.isOpening=!0;const o=t(n,i.writer);n.isOpening=!1;const r=t(n,i.writer);if(!o||!r)return;const s=n.markerRange;if(s.isCollapsed&&!i.consumable.consume(s,e.name))return;for(const t of s)if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper,c=i.writer;c.insert(a.toViewPosition(s.start),o),i.mapper.bindElementToMarker(o,n.markerName),s.isCollapsed||(c.insert(a.toViewPosition(s.end),r),i.mapper.bindElementToMarker(r,n.markerName)),e.stop()}}(t.view),{priority:t.converterPriority||"normal"}),e.on("removeMarker:"+t.model,(t.view,(t,e,n)=>{const i=n.mapper.markerNameToElements(e.markerName);if(i){for(const t of i)n.mapper.unbindElementFromMarkerName(t,e.markerName),n.writer.clear(n.writer.createRangeOn(t),t);n.writer.clearClonedElementsGroup(e.markerName),t.stop()}}),{priority:t.converterPriority||"normal"})}}(t))}markerToHighlight(t){return this.add(function(t){return e=>{e.on("addMarker:"+t.model,function(t){return(e,n,i)=>{if(!n.item)return;if(!(n.item instanceof Xs||n.item instanceof sa||n.item.is("textProxy")))return;const o=wa(t,n,i);if(!o)return;if(!i.consumable.consume(n.item,e.name))return;const r=ga(o),s=i.writer,a=s.document.selection;if(n.item instanceof Xs||n.item instanceof sa)s.wrap(a.getFirstRange(),r,a);else{const t=i.mapper.toViewRange(n.range),e=s.wrap(t,r);for(const t of e.getItems())if(t.is("attributeElement")&&t.isSimilar(r)){i.mapper.bindElementToMarker(t,n.markerName);break}}}}(t.view),{priority:t.converterPriority||"normal"}),e.on("addMarker:"+t.model,function(t){return(e,n,i)=>{if(!n.item)return;if(!(n.item instanceof Us))return;const o=wa(t,n,i);if(!o)return;if(!i.consumable.test(n.item,e.name))return;const r=i.mapper.toViewElement(n.item);if(r&&r.getCustomProperty("addHighlight")){i.consumable.consume(n.item,e.name);for(const t of $s._createIn(n.item))i.consumable.consume(t.item,e.name);r.getCustomProperty("addHighlight")(r,o,i.writer),i.mapper.bindElementToMarker(r,n.markerName)}}}(t.view),{priority:t.converterPriority||"normal"}),e.on("removeMarker:"+t.model,function(t){return(e,n,i)=>{if(n.markerRange.isCollapsed)return;const o=wa(t,n,i);if(!o)return;const r=ga(o),s=i.mapper.markerNameToElements(n.markerName);if(s){for(const t of s)i.mapper.unbindElementFromMarkerName(t,n.markerName),t.is("attributeElement")?i.writer.unwrap(i.writer.createRangeOn(t),r):t.getCustomProperty("removeHighlight")(t,o.id,i.writer);i.writer.clearClonedElementsGroup(n.markerName),e.stop()}}}(t.view),{priority:t.converterPriority||"normal"})}}(t))}}function ga(t){const e=new ao("span",t.attributes);return t.classes&&e._addClass(t.classes),t.priority&&(e._priority=t.priority),e._id=t.id,e}function ma(t,e){return"function"==typeof t?t:(n,i)=>(function(t,e,n){"string"==typeof t&&(t={name:t});let i;const o=Object.assign({},t.attributes);if("container"==n)i=e.createContainerElement(t.name,o);else if("attribute"==n){const n={priority:t.priority||ao.DEFAULT_PRIORITY};i=e.createAttributeElement(t.name,o,n)}else i=e.createUIElement(t.name,o);if(t.styles){const n=Object.keys(t.styles);for(const o of n)e.setStyle(o,t.styles[o],i)}if(t.classes){const n=t.classes;if("string"==typeof n)e.addClass(n,i);else for(const t of n)e.addClass(t,i)}return i})(t,i,e)}function pa(t){return t.model.values?(e,n)=>{const i=t.view[e];return i?i(e,n):null}:t.view}function ba(t){return"string"==typeof t?e=>({key:t,value:e}):"object"==typeof t?t.value?()=>t:e=>({key:t.key,value:e}):t}function wa(t,e,n){const i="function"==typeof t?t(e,n):t;return i?(i.priority||(i.priority=10),i.id||(i.id=e.markerName),i):null}class ka extends la{elementToElement(t){return this.add(_a(t))}elementToAttribute(t){return this.add(function(t){ya(t=ua(t));const e=xa(t,!1),n=va(t.view),i=n?"element:"+n:"element";return n=>{n.on(i,e,{priority:t.converterPriority||"low"})}}(t))}attributeToAttribute(t){return this.add(function(t){let e=null;("string"==typeof(t=ua(t)).view||t.view.key)&&(e=function(t){"string"==typeof t.view&&(t.view={key:t.view});const e=t.view.key;let n;if("class"==e||"style"==e){const i="class"==e?"classes":"styles";n={[i]:t.view.value}}else{const i=void 0===t.view.value?/[\s\S]*/:t.view.value;n={attributes:{[e]:i}}}t.view.name&&(n.name=t.view.name);return t.view=n,e}(t));ya(t,e);const n=xa(t,!0);return e=>{e.on("element",n,{priority:t.converterPriority||"low"})}}(t))}elementToMarker(t){return this.add(function(t){return function(t){const e=t.model;t.model=((t,n)=>{const i="string"==typeof e?e:e(t);return n.createElement("$marker",{"data-name":i})})}(t=ua(t)),_a(t)}(t))}}function _a(t){const e=function(t){const e=t.view?new bi(t.view):null;return(n,i,o)=>{let r={};if(e){const t=e.match(i.viewItem);if(!t)return;r=t.match}r.name=!0;const s=function(t,e,n){return t instanceof Function?t(e,n):n.createElement(t)}(t.model,i.viewItem,o.writer);if(!s)return;if(!o.consumable.test(i.viewItem,r))return;const a=o.splitToAllowedParent(s,i.modelCursor);if(!a)return;o.writer.insert(s,a.position),o.convertChildren(i.viewItem,o.writer.createPositionAt(s,0)),o.consumable.consume(i.viewItem,r);const c=o.getSplitParts(s);i.modelRange=new $s(o.writer.createPositionBefore(s),o.writer.createPositionAfter(c[c.length-1])),a.cursorParent?i.modelCursor=o.writer.createPositionAt(a.cursorParent,0):i.modelCursor=i.modelRange.end}}(t=ua(t)),n=va(t.view),i=n?"element:"+n:"element";return n=>{n.on(i,e,{priority:t.converterPriority||"normal"})}}function va(t){return"string"==typeof t?t:"object"==typeof t&&"string"==typeof t.name?t.name:null}function ya(t,e=null){const n=null===e||(t=>t.getAttribute(e)),i="object"!=typeof t.model?t.model:t.model.key,o="object"!=typeof t.model||void 0===t.model.value?n:t.model.value;t.model={key:i,value:o}}function xa(t,e){const n=new bi(t.view);return(i,o,r)=>{const s=n.match(o.viewItem);if(!s)return;const a=t.model.key,c="function"==typeof t.model.value?t.model.value(o.viewItem):t.model.value;null!==c&&(!function(t,e){const n="function"==typeof t?t(e):t;if("object"==typeof n&&!va(n))return!1;return!n.classes&&!n.attributes&&!n.styles}(t.view,o.viewItem)?delete s.match.name:s.match.name=!0,r.consumable.test(o.viewItem,s.match)&&(o.modelRange||(o=Object.assign(o,r.convertChildren(o.viewItem,o.modelCursor))),function(t,e,n,i){let o=!1;for(const r of Array.from(t.getItems({shallow:n})))i.schema.checkAttribute(r,e.key)&&(i.writer.setAttribute(e.key,e.value,r),o=!0);return o}(o.modelRange,{key:a,value:c},e,r)&&r.consumable.consume(o.viewItem,s.match)))}}class Aa{constructor(t){this.model=t,this.view=new Ls,this.mapper=new Gs,this.downcastDispatcher=new Js({mapper:this.mapper});const e=this.model.document,n=e.selection,i=this.model.markers;this.listenTo(this.model,"_beforeChanges",()=>{this.view._disableRendering(!0)},{priority:"highest"}),this.listenTo(this.model,"_afterChanges",()=>{this.view._disableRendering(!1)},{priority:"lowest"}),this.listenTo(e,"change",()=>{this.view.change(t=>{this.downcastDispatcher.convertChanges(e.differ,i,t),this.downcastDispatcher.convertSelection(n,i,t)})},{priority:"low"}),this.listenTo(this.view.document,"selectionChange",function(t,e){return(n,i)=>{const o=i.newSelection,r=new Xs,s=[];for(const t of o.getRanges())s.push(e.toModelRange(t));r.setTo(s,{backward:o.isBackward}),r.isEqual(t.document.selection)||t.change(t=>{t.setSelection(r)})}}(this.model,this.mapper)),this.downcastDispatcher.on("insert:$text",(t,e,n)=>{if(!n.consumable.consume(e.item,"insert"))return;const i=n.writer,o=n.mapper.toViewPosition(e.range.start),r=i.createText(e.item.data);i.insert(o,r)},{priority:"lowest"}),this.downcastDispatcher.on("remove",(t,e,n)=>{const i=n.mapper.toViewPosition(e.position),o=e.position.getShiftedBy(e.length),r=n.mapper.toViewPosition(o,{isPhantom:!0}),s=n.writer.createRange(i,r),a=n.writer.remove(s.getTrimmed());for(const t of n.writer.createRangeIn(a).getItems())n.mapper.unbindViewElement(t)},{priority:"low"}),this.downcastDispatcher.on("selection",(t,e,n)=>{const i=n.writer,o=i.document.selection;for(const t of o.getRanges())t.isCollapsed&&t.end.parent.document&&n.writer.mergeAttributes(t.start);i.setSelection(null)},{priority:"low"}),this.downcastDispatcher.on("selection",(t,e,n)=>{const i=e.selection;if(i.isCollapsed)return;if(!n.consumable.consume(i,"selection"))return;const o=[];for(const t of i.getRanges()){const e=n.mapper.toViewRange(t);o.push(e)}n.writer.setSelection(o,{backward:i.isBackward})},{priority:"low"}),this.downcastDispatcher.on("selection",(t,e,n)=>{const i=e.selection;if(!i.isCollapsed)return;if(!n.consumable.consume(i,"selection"))return;const o=n.writer,r=i.getFirstPosition(),s=n.mapper.toViewPosition(r),a=o.breakAttributes(s);o.setSelection(a)},{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using(t=>{if("$graveyard"==t.rootName)return null;const e=new Ki(t.name);return e.rootName=t.rootName,e._document=this.view.document,this.mapper.bindElements(t,e),e})}destroy(){this.view.destroy(),this.stopListening()}}ci(Aa,Fi);class Ta{constructor(t,e=[]){this._editor=t,this._availablePlugins=new Map,this._plugins=new Map;for(const t of e)this._availablePlugins.set(t,t),t.pluginName&&this._availablePlugins.set(t.pluginName,t)}*[Symbol.iterator](){for(const t of this._plugins)"function"==typeof t[0]&&(yield t)}get(t){const e=this._plugins.get(t);if(!e){const e="plugincollection-plugin-not-loaded: The requested plugin is not loaded.";let n=t;throw"function"==typeof t&&(n=t.pluginName||t.name),new Gn.b(e,this._editor,{plugin:n})}return e}has(t){return this._plugins.has(t)}init(t,e=[]){const n=this,i=this._editor,o=new Set,r=[],s=u(t),a=u(e),c=function(t){const e=[];for(const n of t)h(n)||e.push(n);return e.length?e:null}(t);if(c){const t="plugincollection-plugin-not-found: Some plugins are not available and could not be loaded.";return console.error(Object(Gn.a)(t),{plugins:c}),Promise.reject(new Gn.b(t,this._editor,{plugins:c}))}return Promise.all(s.map(l)).then(()=>d(r,"init")).then(()=>d(r,"afterInit")).then(()=>r);function l(t){if(!a.includes(t)&&!n._plugins.has(t)&&!o.has(t))return function(t){return new Promise(s=>{o.add(t),t.requires&&t.requires.forEach(n=>{const o=h(n);if(e.includes(o))throw new Gn.b("plugincollection-required: Cannot load a plugin because one of its dependencies is listed inthe `removePlugins` option.",i,{plugin:o,requiredBy:t});l(o)});const a=new t(i);n._add(t,a),r.push(a),s()})}(t).catch(e=>{throw console.error(Object(Gn.a)("plugincollection-load: It was not possible to load the plugin."),{plugin:t}),e})}function d(t,e){return t.reduce((t,n)=>n[e]?t.then(n[e].bind(n)):t,Promise.resolve())}function h(t){return"function"==typeof t?t:n._availablePlugins.get(t)}function u(t){return t.map(t=>h(t)).filter(t=>!!t)}}destroy(){const t=Array.from(this).map(([,t])=>t).filter(t=>"function"==typeof t.destroy).map(t=>t.destroy());return Promise.all(t)}_add(t,e){this._plugins.set(t,e);const n=t.pluginName;if(n){if(this._plugins.has(n))throw new Gn.b("plugincollection-plugin-name-conflict: Two plugins with the same name were loaded.",null,{pluginName:n,plugin1:this._plugins.get(n).constructor,plugin2:t});this._plugins.set(n,e)}}}ci(Ta,ei);class Ca{constructor(){this._commands=new Map}add(t,e){this._commands.set(t,e)}get(t){return this._commands.get(t)}execute(t,...e){const n=this.get(t);if(!n)throw new Gn.b("commandcollection-command-not-found: Command does not exist.",this,{commandName:t});n.execute(...e)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const t of this.commands())t.destroy()}}function Pa(t,e){const n=Object.keys(window.CKEDITOR_TRANSLATIONS).length;return 1===n&&(t=Object.keys(window.CKEDITOR_TRANSLATIONS)[0]),0!==n&&function(t,e){return t in window.CKEDITOR_TRANSLATIONS&&e in window.CKEDITOR_TRANSLATIONS[t]}(t,e)?window.CKEDITOR_TRANSLATIONS[t][e].replace(/ \[context: [^\]]+\]$/,""):e.replace(/ \[context: [^\]]+\]$/,"")}window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={});const Sa=["ar","fa","he","ku","ug"];class Ma{constructor(t={}){this.uiLanguage=t.uiLanguage||"en",this.contentLanguage=t.contentLanguage||this.uiLanguage,this.uiLanguageDirection=Ea(this.uiLanguage),this.contentLanguageDirection=Ea(this.contentLanguage),this.t=((...t)=>this._t(...t))}get language(){return console.warn("locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead."),this.uiLanguage}_t(t,e){let n=Pa(this.uiLanguage,t);return e&&(n=n.replace(/%(\d+)/g,(t,n)=>n{e[0]=new Ra(e[0])},{priority:"highest"}),this.on("checkChild",(t,e)=>{e[0]=new Ra(e[0]),e[1]=this.getDefinition(e[1])},{priority:"highest"})}register(t,e){if(this._sourceDefinitions[t])throw new Gn.b("schema-cannot-register-item-twice: A single item cannot be registered twice in the schema.",this,{itemName:t});this._sourceDefinitions[t]=[Object.assign({},e)],this._clearCache()}extend(t,e){if(!this._sourceDefinitions[t])throw new Gn.b("schema-cannot-extend-missing-item: Cannot extend an item which was not registered yet.",this,{itemName:t});this._sourceDefinitions[t].push(Object.assign({},e)),this._clearCache()}getDefinitions(){return this._compiledDefinitions||this._compile(),this._compiledDefinitions}getDefinition(t){let e;return e="string"==typeof t?t:t.is&&(t.is("text")||t.is("textProxy"))?"$text":t.name,this.getDefinitions()[e]}isRegistered(t){return!!this.getDefinition(t)}isBlock(t){const e=this.getDefinition(t);return!(!e||!e.isBlock)}isLimit(t){const e=this.getDefinition(t);return!!e&&!(!e.isLimit&&!e.isObject)}isObject(t){const e=this.getDefinition(t);return!(!e||!e.isObject)}isInline(t){const e=this.getDefinition(t);return!(!e||!e.isInline)}checkChild(t,e){return!!e&&this._checkContextMatch(e,t)}checkAttribute(t,e){const n=this.getDefinition(t.last);return!!n&&n.allowAttributes.includes(e)}checkMerge(t,e=null){if(t instanceof Ys){const e=t.nodeBefore,n=t.nodeAfter;if(!(e instanceof Us))throw new Gn.b("schema-check-merge-no-element-before: The node before the merge position must be an element.",this);if(!(n instanceof Us))throw new Gn.b("schema-check-merge-no-element-after: The node after the merge position must be an element.",this);return this.checkMerge(e,n)}for(const n of e.getChildren())if(!this.checkChild(t,n))return!1;return!0}addChildCheck(t){this.on("checkChild",(e,[n,i])=>{if(!i)return;const o=t(n,i);"boolean"==typeof o&&(e.stop(),e.return=o)},{priority:"high"})}addAttributeCheck(t){this.on("checkAttribute",(e,[n,i])=>{const o=t(n,i);"boolean"==typeof o&&(e.stop(),e.return=o)},{priority:"high"})}setAttributeProperties(t,e){this._attributeProperties[t]=Object.assign(this.getAttributeProperties(t),e)}getAttributeProperties(t){return this._attributeProperties[t]||{}}getLimitElement(t){let e;if(t instanceof Ys)e=t.parent;else{e=(t instanceof $s?[t]:Array.from(t.getRanges())).reduce((t,e)=>{const n=e.getCommonAncestor();return t?t.getCommonAncestor(n,{includeSelf:!0}):n},null)}for(;!this.isLimit(e)&&e.parent;)e=e.parent;return e}checkAttributeInSelection(t,e){if(t.isCollapsed){const n=[...t.getFirstPosition().getAncestors(),new zs("",t.getAttributes())];return this.checkAttribute(n,e)}{const n=t.getRanges();for(const t of n)for(const n of t)if(this.checkAttribute(n.item,e))return!0}return!1}*getValidRanges(t,e){t=function*(t){for(const e of t)yield*e.getMinimalFlatRanges()}(t);for(const n of t)yield*this._getValidRangesForRange(n,e)}getNearestSelectionRange(t,e="both"){if(this.checkChild(t,"$text"))return new $s(t);let n,i;"both"!=e&&"backward"!=e||(n=new Hs({startPosition:t,direction:"backward"})),"both"!=e&&"forward"!=e||(i=new Hs({startPosition:t}));for(const t of function*(t,e){let n=!1;for(;!n;){if(n=!0,t){const e=t.next();e.done||(n=!1,yield{walker:t,value:e.value})}if(e){const t=e.next();t.done||(n=!1,yield{walker:e,value:t.value})}}}(n,i)){const e=t.walker==n?"elementEnd":"elementStart",i=t.value;if(i.type==e&&this.isObject(i.item))return $s._createOn(i.item);if(this.checkChild(i.nextPosition,"$text"))return new $s(i.nextPosition)}return null}findAllowedParent(t,e){let n=t.parent;for(;n;){if(this.checkChild(n,e))return n;if(this.isLimit(n))return null;n=n.parent}return null}removeDisallowedAttributes(t,e){for(const n of t)if(n.is("text"))Wa(this,n,e);else{const t=$s._createIn(n).getPositions();for(const n of t){Wa(this,n.nodeBefore||n.parent,e)}}}createContext(t){return new Ra(t)}_clearCache(){this._compiledDefinitions=null}_compile(){const t={},e=this._sourceDefinitions,n=Object.keys(e);for(const i of n)t[i]=Da(e[i],i);for(const e of n)La(t,e);for(const e of n)ja(t,e);for(const e of n)Va(t,e),za(t,e);for(const e of n)Ba(t,e),Fa(t,e);this._compiledDefinitions=t}_checkContextMatch(t,e,n=e.length-1){const i=e.getItem(n);if(t.allowIn.includes(i.name)){if(0==n)return!0;{const t=this.getDefinition(i);return this._checkContextMatch(t,e,n-1)}}return!1}*_getValidRangesForRange(t,e){let n=t.start,i=t.start;for(const o of t.getItems({shallow:!0}))o.is("element")&&(yield*this._getValidRangesForRange($s._createIn(o),e)),this.checkAttribute(o,e)||(n.isEqual(i)||(yield new $s(n,i)),n=Ys._createAfter(o)),i=Ys._createAfter(o);n.isEqual(i)||(yield new $s(n,i))}}ci(Oa,Fi);class Ra{constructor(t){if(t instanceof Ra)return t;"string"==typeof t?t=[t]:Array.isArray(t)||(t=t.getAncestors({includeSelf:!0})),t[0]&&"string"!=typeof t[0]&&t[0].is("documentFragment")&&t.shift(),this._items=t.map(qa)}get length(){return this._items.length}get last(){return this._items[this._items.length-1]}[Symbol.iterator](){return this._items[Symbol.iterator]()}push(t){const e=new Ra([t]);return e._items=[...this._items,...e._items],e}getItem(t){return this._items[t]}*getNames(){yield*this._items.map(t=>t.name)}endsWith(t){return Array.from(this.getNames()).join(" ").endsWith(t)}}function Da(t,e){const n={name:e,allowIn:[],allowContentOf:[],allowWhere:[],allowAttributes:[],allowAttributesOf:[],inheritTypesFrom:[]};return function(t,e){for(const n of t){const t=Object.keys(n).filter(t=>t.startsWith("is"));for(const i of t)e[i]=n[i]}}(t,n),Ua(t,n,"allowIn"),Ua(t,n,"allowContentOf"),Ua(t,n,"allowWhere"),Ua(t,n,"allowAttributes"),Ua(t,n,"allowAttributesOf"),Ua(t,n,"inheritTypesFrom"),function(t,e){for(const n of t){const t=n.inheritAllFrom;t&&(e.allowContentOf.push(t),e.allowWhere.push(t),e.allowAttributesOf.push(t),e.inheritTypesFrom.push(t))}}(t,n),n}function La(t,e){for(const n of t[e].allowContentOf)if(t[n]){Ha(t,n).forEach(t=>{t.allowIn.push(e)})}delete t[e].allowContentOf}function ja(t,e){for(const n of t[e].allowWhere){const i=t[n];if(i){const n=i.allowIn;t[e].allowIn.push(...n)}}delete t[e].allowWhere}function Va(t,e){for(const n of t[e].allowAttributesOf){const i=t[n];if(i){const n=i.allowAttributes;t[e].allowAttributes.push(...n)}}delete t[e].allowAttributesOf}function za(t,e){const n=t[e];for(const e of n.inheritTypesFrom){const i=t[e];if(i){const t=Object.keys(i).filter(t=>t.startsWith("is"));for(const e of t)e in n||(n[e]=i[e])}}delete n.inheritTypesFrom}function Ba(t,e){const n=t[e],i=n.allowIn.filter(e=>t[e]);n.allowIn=Array.from(new Set(i))}function Fa(t,e){const n=t[e];n.allowAttributes=Array.from(new Set(n.allowAttributes))}function Ua(t,e,n){for(const i of t)"string"==typeof i[n]?e[n].push(i[n]):Array.isArray(i[n])&&e[n].push(...i[n])}function Ha(t,e){const n=t[e];return function(t){return Object.keys(t).map(e=>t[e])}(t).filter(t=>t.allowIn.includes(n.name))}function qa(t){return"string"==typeof t?{name:t,*getAttributeKeys(){},getAttribute(){}}:{name:t.is("element")?t.name:"$text",*getAttributeKeys(){yield*t.getAttributeKeys()},getAttribute:e=>t.getAttribute(e)}}function Wa(t,e,n){for(const i of e.getAttributeKeys())t.checkAttribute(e,i)||n.removeAttribute(i,e)}class Ya{constructor(t={}){this._splitParts=new Map,this._modelCursor=null,this.conversionApi=Object.assign({},t),this.conversionApi.convertItem=this._convertItem.bind(this),this.conversionApi.convertChildren=this._convertChildren.bind(this),this.conversionApi.splitToAllowedParent=this._splitToAllowedParent.bind(this),this.conversionApi.getSplitParts=this._getSplitParts.bind(this)}convert(t,e,n=["$root"]){this.fire("viewCleanup",t),this._modelCursor=function(t,e){let n;for(const i of new Ra(t)){const t={};for(const e of i.getAttributeKeys())t[e]=i.getAttribute(e);const o=e.createElement(i.name,t);n&&e.append(o,n),n=Ys._createAt(o,0)}return n}(n,e),this.conversionApi.writer=e,this.conversionApi.consumable=Ia.createFrom(t),this.conversionApi.store={};const{modelRange:i}=this._convertItem(t,this._modelCursor),o=e.createDocumentFragment();if(i){this._removeEmptyElements();for(const t of Array.from(this._modelCursor.parent.getChildren()))e.append(t,o);o.markers=function(t,e){const n=new Set,i=new Map,o=$s._createIn(t).getItems();for(const t of o)"$marker"==t.name&&n.add(t);for(const t of n){const n=t.getAttribute("data-name"),o=e.createPositionBefore(t);i.has(n)?i.get(n).end=o.clone():i.set(n,new $s(o.clone())),e.remove(t)}return i}(o,e)}return this._modelCursor=null,this._splitParts.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,o}_convertItem(t,e){const n=Object.assign({viewItem:t,modelCursor:e,modelRange:null});if(t.is("element")?this.fire("element:"+t.name,n,this.conversionApi):t.is("text")?this.fire("text",n,this.conversionApi):this.fire("documentFragment",n,this.conversionApi),n.modelRange&&!(n.modelRange instanceof $s))throw new Gn.b("view-conversion-dispatcher-incorrect-result: Incorrect conversion result was dropped.",this);return{modelRange:n.modelRange,modelCursor:n.modelCursor}}_convertChildren(t,e){const n=new $s(e);let i=e;for(const e of Array.from(t.getChildren())){const t=this._convertItem(e,i);t.modelRange instanceof $s&&(n.end=t.modelRange.end,i=t.modelCursor)}return{modelRange:n,modelCursor:i}}_splitToAllowedParent(t,e){const n=this.conversionApi.schema.findAllowedParent(e,t);if(!n)return null;if(n===e.parent)return{position:e};if(this._modelCursor.parent.getAncestors().includes(n))return null;const i=this.conversionApi.writer.split(e,n),o=[];for(const t of i.range.getWalker())if("elementEnd"==t.type)o.push(t.item);else{const e=o.pop(),n=t.item;this._registerSplitPair(e,n)}return{position:i.position,cursorParent:i.range.end.parent}}_registerSplitPair(t,e){this._splitParts.has(t)||this._splitParts.set(t,[t]);const n=this._splitParts.get(t);this._splitParts.set(e,n),n.push(e)}_getSplitParts(t){let e;return e=this._splitParts.has(t)?this._splitParts.get(t):[t]}_removeEmptyElements(){let t=!1;for(const e of this._splitParts.keys())e.isEmpty&&(this.conversionApi.writer.remove(e),this._splitParts.delete(e),t=!0);t&&this._removeEmptyElements()}}ci(Ya,ei);class $a{constructor(t,e){this.model=t,this.processor=e,this.mapper=new Gs,this.downcastDispatcher=new Js({mapper:this.mapper}),this.downcastDispatcher.on("insert:$text",(t,e,n)=>{if(!n.consumable.consume(e.item,"insert"))return;const i=n.writer,o=n.mapper.toViewPosition(e.range.start),r=i.createText(e.item.data);i.insert(o,r)},{priority:"lowest"}),this.upcastDispatcher=new Ya({schema:t.schema}),this.upcastDispatcher.on("text",(t,e,n)=>{if(n.schema.checkChild(e.modelCursor,"$text")&&n.consumable.consume(e.viewItem)){const t=n.writer.createText(e.viewItem.data);n.writer.insert(t,e.modelCursor),e.modelRange=$s._createFromPositionAndShift(e.modelCursor,t.offsetSize),e.modelCursor=e.modelRange.end}},{priority:"lowest"}),this.upcastDispatcher.on("element",(t,e,n)=>{if(!e.modelRange&&n.consumable.consume(e.viewItem,{name:!0})){const{modelRange:t,modelCursor:i}=n.convertChildren(e.viewItem,e.modelCursor);e.modelRange=t,e.modelCursor=i}},{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",(t,e,n)=>{if(!e.modelRange&&n.consumable.consume(e.viewItem,{name:!0})){const{modelRange:t,modelCursor:i}=n.convertChildren(e.viewItem,e.modelCursor);e.modelRange=t,e.modelCursor=i}},{priority:"lowest"}),this.decorate("init"),this.on("init",()=>{this.fire("ready")},{priority:"lowest"})}get(t){const{rootName:e="main",trim:n="empty"}=t||{};if(!this._checkIfRootsExists([e]))throw new Gn.b("datacontroller-get-non-existent-root: Attempting to get data from a non-existing root.",this);const i=this.model.document.getRoot(e);return"empty"!==n||this.model.hasContent(i,{ignoreWhitespaces:!0})?this.stringify(i):""}stringify(t){const e=this.toView(t);return this.processor.toData(e)}toView(t){this.mapper.clearBindings();const e=$s._createIn(t),n=new Ao,i=new To(new ro);if(this.mapper.bindElements(t,n),this.downcastDispatcher.convertInsert(e,i),!t.is("documentFragment")){const e=function(t){const e=[],n=t.root.document;if(!n)return[];const i=$s._createIn(t);for(const t of n.model.markers){const n=i.getIntersection(t.getRange());n&&e.push([t.name,n])}return e}(t);for(const[t,n]of e)this.downcastDispatcher.convertMarkerAdd(t,n,i)}return n}init(t){if(this.model.document.version)throw new Gn.b("datacontroller-init-document-not-empty: Trying to set initial data to not empty document.",this);let e={};if("string"==typeof t?e.main=t:e=t,!this._checkIfRootsExists(Object.keys(e)))throw new Gn.b("datacontroller-init-non-existent-root: Attempting to init data on a non-existing root.",this);return this.model.enqueueChange("transparent",t=>{for(const n of Object.keys(e)){const i=this.model.document.getRoot(n);t.insert(this.parse(e[n],i),i,0)}}),Promise.resolve()}set(t){let e={};if("string"==typeof t?e.main=t:e=t,!this._checkIfRootsExists(Object.keys(e)))throw new Gn.b("datacontroller-set-non-existent-root: Attempting to set data on a non-existing root.",this);this.model.enqueueChange("transparent",t=>{t.setSelection(null),t.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const n of Object.keys(e)){const i=this.model.document.getRoot(n);t.remove(t.createRangeIn(i)),t.insert(this.parse(e[n],i),i,0)}})}parse(t,e="$root"){const n=this.processor.toView(t);return this.toModel(n,e)}toModel(t,e="$root"){return this.model.change(n=>this.upcastDispatcher.convert(t,n,e))}destroy(){this.stopListening()}_checkIfRootsExists(t){for(const e of t)if(!this.model.document.getRootNames().includes(e))return!1;return!0}}ci($a,Fi);class Ga{constructor(t,e){this._helpers=new Map,this._downcast=Array.isArray(t)?t:[t],this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=Array.isArray(e)?e:[e],this._createConversionHelpers({name:"upcast",dispatchers:this._upcast,isDowncast:!1})}addAlias(t,e){const n=this._downcast.includes(e);if(!this._upcast.includes(e)&&!n)throw new Gn.b("conversion-add-alias-dispatcher-not-registered: Trying to register and alias for a dispatcher that nas not been registered.",this);this._createConversionHelpers({name:t,dispatchers:[e],isDowncast:n})}for(t){if(!this._helpers.has(t))throw new Gn.b("conversion-for-unknown-group: Trying to add a converter to an unknown dispatchers group.",this);return this._helpers.get(t)}elementToElement(t){this.for("downcast").elementToElement(t);for(const{model:e,view:n}of Qa(t))this.for("upcast").elementToElement({model:e,view:n,converterPriority:t.converterPriority})}attributeToElement(t){this.for("downcast").attributeToElement(t);for(const{model:e,view:n}of Qa(t))this.for("upcast").elementToAttribute({view:n,model:e,converterPriority:t.converterPriority})}attributeToAttribute(t){this.for("downcast").attributeToAttribute(t);for(const{model:e,view:n}of Qa(t))this.for("upcast").attributeToAttribute({view:n,model:e})}_createConversionHelpers({name:t,dispatchers:e,isDowncast:n}){if(this._helpers.has(t))throw new Gn.b("conversion-group-exists: Trying to register a group name that has already been registered.",this);const i=n?new fa(e):new ka(e);this._helpers.set(t,i)}}function*Qa(t){if(t.model.values)for(const e of t.model.values){yield*Ka({key:t.model.key,value:e},t.view[e],t.upcastAlso?t.upcastAlso[e]:void 0)}else yield*Ka(t.model,t.view,t.upcastAlso)}function*Ka(t,e,n){if(yield{model:t,view:e},n){n=Array.isArray(n)?n:[n];for(const e of n)yield{model:t,view:e}}}class Ja{constructor(t="default"){this.operations=[],this.type=t}get baseVersion(){for(const t of this.operations)if(null!==t.baseVersion)return t.baseVersion;return null}addOperation(t){return t.batch=this,this.operations.push(t),t}}class Za{constructor(t){this.baseVersion=t,this.isDocumentOperation=null!==this.baseVersion,this.batch=null}_validate(){}toJSON(){const t=Object.assign({},this);return t.__className=this.constructor.className,delete t.batch,delete t.isDocumentOperation,t}static get className(){return"Operation"}static fromJSON(t){return new this(t.baseVersion)}}class Xa{constructor(t){this.markers=new Map,this._children=new Fs,t&&this._insertChild(0,t)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(t){return"documentFragment"==t||"model:documentFragment"==t}getChild(t){return this._children.getNode(t)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(t){return this._children.getNodeIndex(t)}getChildStartOffset(t){return this._children.getNodeStartOffset(t)}getPath(){return[]}getNodeByPath(t){let e=this;for(const n of t)e=e.getChild(e.offsetToIndex(n));return e}offsetToIndex(t){return this._children.offsetToIndex(t)}toJSON(){const t=[];for(const e of this._children)t.push(e.toJSON());return t}static fromJSON(t){const e=[];for(const n of t)n.name?e.push(Us.fromJSON(n)):e.push(zs.fromJSON(n));return new Xa(e)}_appendChild(t){this._insertChild(this.childCount,t)}_insertChild(t,e){const n=function(t){if("string"==typeof t)return[new zs(t)];pi(t)||(t=[t]);return Array.from(t).map(t=>"string"==typeof t?new zs(t):t instanceof Bs?new zs(t.data,t.getAttributes()):t)}(e);for(const t of n)null!==t.parent&&t._remove(),t.parent=this;this._children._insertNodes(t,n)}_removeChildren(t,e=1){const n=this._children._removeNodes(t,e);for(const t of n)t.parent=null;return n}}function tc(t,e){const n=(e=ic(e)).reduce((t,e)=>t+e.offsetSize,0),i=t.parent;rc(t);const o=t.index;return i._insertChild(o,e),oc(i,o+e.length),oc(i,o),new $s(t,t.getShiftedBy(n))}function ec(t){if(!t.isFlat)throw new Gn.b("operation-utils-remove-range-not-flat: Trying to remove a range which starts and ends in different element.",this);const e=t.start.parent;rc(t.start),rc(t.end);const n=e._removeChildren(t.start.index,t.end.index-t.start.index);return oc(e,t.start.index),n}function nc(t,e){if(!t.isFlat)throw new Gn.b("operation-utils-move-range-not-flat: Trying to move a range which starts and ends in different element.",this);const n=ec(t);return tc(e=e._getTransformedByDeletion(t.start,t.end.offset-t.start.offset),n)}function ic(t){const e=[];t instanceof Array||(t=[t]);for(let n=0;nt.maxOffset)throw new Gn.b("move-operation-nodes-do-not-exist: The nodes which should be moved do not exist.",this);if(t===e&&n=n&&this.targetPosition.path[t]t._clone(!0))),e=new hc(this.position,t,this.baseVersion);return e.shouldReceiveAttributes=this.shouldReceiveAttributes,e}getReversed(){const t=this.position.root.document.graveyard,e=new Ys(t,[0]);return new dc(this.position,this.nodes.maxOffset,e,this.baseVersion+1)}_validate(){const t=this.position.parent;if(!t||t.maxOffsett._clone(!0))),tc(this.position,t)}toJSON(){const t=super.toJSON();return t.position=this.position.toJSON(),t.nodes=this.nodes.toJSON(),t}static get className(){return"InsertOperation"}static fromJSON(t,e){const n=[];for(const e of t.nodes)e.name?n.push(Us.fromJSON(e)):n.push(zs.fromJSON(e));const i=new hc(Ys.fromJSON(t.position,e),n,t.baseVersion);return i.shouldReceiveAttributes=t.shouldReceiveAttributes,i}}class uc extends Za{constructor(t,e,n,i,o,r){super(r),this.name=t,this.oldRange=e?e.clone():null,this.newRange=n?n.clone():null,this.affectsData=o,this._markers=i}get type(){return"marker"}clone(){return new uc(this.name,this.oldRange,this.newRange,this._markers,this.affectsData,this.baseVersion)}getReversed(){return new uc(this.name,this.newRange,this.oldRange,this._markers,this.affectsData,this.baseVersion+1)}_execute(){const t=this.newRange?"_set":"_remove";this._markers[t](this.name,this.newRange,!0,this.affectsData)}toJSON(){const t=super.toJSON();return this.oldRange&&(t.oldRange=this.oldRange.toJSON()),this.newRange&&(t.newRange=this.newRange.toJSON()),delete t._markers,t}static get className(){return"MarkerOperation"}static fromJSON(t,e){return new uc(t.name,t.oldRange?$s.fromJSON(t.oldRange,e):null,t.newRange?$s.fromJSON(t.newRange,e):null,e.model.markers,t.affectsData,t.baseVersion)}}class fc extends Za{constructor(t,e,n,i){super(i),this.position=t,this.position.stickiness="toNext",this.oldName=e,this.newName=n}get type(){return"rename"}clone(){return new fc(this.position.clone(),this.oldName,this.newName,this.baseVersion)}getReversed(){return new fc(this.position.clone(),this.newName,this.oldName,this.baseVersion+1)}_validate(){const t=this.position.nodeAfter;if(!(t instanceof Us))throw new Gn.b("rename-operation-wrong-position: Given position is invalid or node after it is not an instance of Element.",this);if(t.name!==this.oldName)throw new Gn.b("rename-operation-wrong-name: Element to change has different name than operation's old name.",this)}_execute(){this.position.nodeAfter.name=this.newName}toJSON(){const t=super.toJSON();return t.position=this.position.toJSON(),t}static get className(){return"RenameOperation"}static fromJSON(t,e){return new fc(Ys.fromJSON(t.position,e),t.oldName,t.newName,t.baseVersion)}}class gc extends Za{constructor(t,e,n,i,o){super(o),this.root=t,this.key=e,this.oldValue=n,this.newValue=i}get type(){return null===this.oldValue?"addRootAttribute":null===this.newValue?"removeRootAttribute":"changeRootAttribute"}clone(){return new gc(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new gc(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_validate(){if(this.root!=this.root.root||this.root.is("documentFragment"))throw new Gn.b("rootattribute-operation-not-a-root: The element to change is not a root element.",this,{root:this.root,key:this.key});if(null!==this.oldValue&&this.root.getAttribute(this.key)!==this.oldValue)throw new Gn.b("rootattribute-operation-wrong-old-value: Changed node has different attribute value than operation's old attribute value.",this,{root:this.root,key:this.key});if(null===this.oldValue&&null!==this.newValue&&this.root.hasAttribute(this.key))throw new Gn.b("rootattribute-operation-attribute-exists: The attribute with given key already exists.",this,{root:this.root,key:this.key})}_execute(){null!==this.newValue?this.root._setAttribute(this.key,this.newValue):this.root._removeAttribute(this.key)}toJSON(){const t=super.toJSON();return t.root=this.root.toJSON(),t}static get className(){return"RootAttributeOperation"}static fromJSON(t,e){if(!e.getRoot(t.root))throw new Gn.b("rootattribute-operation-fromjson-no-root: Cannot create RootAttributeOperation. Root with specified name does not exist.",this,{rootName:t.root});return new gc(e.getRoot(t.root),t.key,t.oldValue,t.newValue,t.baseVersion)}}class mc extends Za{constructor(t,e,n,i,o){super(o),this.sourcePosition=t.clone(),this.sourcePosition.stickiness="toPrevious",this.howMany=e,this.targetPosition=n.clone(),this.targetPosition.stickiness="toNext",this.graveyardPosition=i.clone()}get type(){return"merge"}get deletionPosition(){return new Ys(this.sourcePosition.root,this.sourcePosition.path.slice(0,-1))}get movedRange(){const t=this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);return new $s(this.sourcePosition,t)}clone(){return new this.constructor(this.sourcePosition,this.howMany,this.targetPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const t=this.targetPosition._getTransformedByMergeOperation(this),e=this.sourcePosition.path.slice(0,-1),n=new Ys(this.sourcePosition.root,e)._getTransformedByMergeOperation(this),i=new pc(t,this.howMany,this.graveyardPosition,this.baseVersion+1);return i.insertionPosition=n,i}_validate(){const t=this.sourcePosition.parent,e=this.targetPosition.parent;if(!t.parent)throw new Gn.b("merge-operation-source-position-invalid: Merge source position is invalid.",this);if(!e.parent)throw new Gn.b("merge-operation-target-position-invalid: Merge target position is invalid.",this);if(this.howMany!=t.maxOffset)throw new Gn.b("merge-operation-how-many-invalid: Merge operation specifies wrong number of nodes to move.",this)}_execute(){const t=this.sourcePosition.parent;nc($s._createIn(t),this.targetPosition),nc($s._createOn(t),this.graveyardPosition)}toJSON(){const t=super.toJSON();return t.sourcePosition=t.sourcePosition.toJSON(),t.targetPosition=t.targetPosition.toJSON(),t.graveyardPosition=t.graveyardPosition.toJSON(),t}static get className(){return"MergeOperation"}static fromJSON(t,e){const n=Ys.fromJSON(t.sourcePosition,e),i=Ys.fromJSON(t.targetPosition,e),o=Ys.fromJSON(t.graveyardPosition,e);return new this(n,t.howMany,i,o,t.baseVersion)}}class pc extends Za{constructor(t,e,n,i){super(i),this.splitPosition=t.clone(),this.splitPosition.stickiness="toNext",this.howMany=e,this.insertionPosition=pc.getInsertionPosition(t),this.insertionPosition.stickiness="toNone",this.graveyardPosition=n?n.clone():null,this.graveyardPosition&&(this.graveyardPosition.stickiness="toNext")}get type(){return"split"}get moveTargetPosition(){const t=this.insertionPosition.path.slice();return t.push(0),new Ys(this.insertionPosition.root,t)}get movedRange(){const t=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new $s(this.splitPosition,t)}clone(){const t=new this.constructor(this.splitPosition,this.howMany,this.graveyardPosition,this.baseVersion);return t.insertionPosition=this.insertionPosition,t}getReversed(){const t=this.splitPosition.root.document.graveyard,e=new Ys(t,[0]);return new mc(this.moveTargetPosition,this.howMany,this.splitPosition,e,this.baseVersion+1)}_validate(){const t=this.splitPosition.parent,e=this.splitPosition.offset;if(!t||t.maxOffset{for(const e of t.getAttributeKeys())this.removeAttribute(e,t)};if(t instanceof $s)for(const n of t.getItems())e(n);else e(t)}move(t,e,n){if(this._assertWriterUsedCorrectly(),!(t instanceof $s))throw new Gn.b("writer-move-invalid-range: Invalid range to move.",this);if(!t.isFlat)throw new Gn.b("writer-move-range-not-flat: Range to move is not flat.",this);const i=Ys._createAt(e,n);if(i.isEqual(t.start))return;if(this._addOperationForAffectedMarkers("move",t),!xc(t.root,i.root))throw new Gn.b("writer-move-different-document: Range is going to be moved between different documents.",this);const o=t.root.document?t.root.document.version:null,r=new dc(t.start,t.end.offset-t.start.offset,i,o);this.batch.addOperation(r),this.model.applyOperation(r)}remove(t){this._assertWriterUsedCorrectly();const e=(t instanceof $s?t:$s._createOn(t)).getMinimalFlatRanges().reverse();for(const t of e)this._addOperationForAffectedMarkers("move",t),yc(t.start,t.end.offset-t.start.offset,this.batch,this.model)}merge(t){this._assertWriterUsedCorrectly();const e=t.nodeBefore,n=t.nodeAfter;if(this._addOperationForAffectedMarkers("merge",t),!(e instanceof Us))throw new Gn.b("writer-merge-no-element-before: Node before merge position must be an element.",this);if(!(n instanceof Us))throw new Gn.b("writer-merge-no-element-after: Node after merge position must be an element.",this);t.root.document?this._merge(t):this._mergeDetached(t)}createPositionFromPath(t,e,n){return this.model.createPositionFromPath(t,e,n)}createPositionAt(t,e){return this.model.createPositionAt(t,e)}createPositionAfter(t){return this.model.createPositionAfter(t)}createPositionBefore(t){return this.model.createPositionBefore(t)}createRange(t,e){return this.model.createRange(t,e)}createRangeIn(t){return this.model.createRangeIn(t)}createRangeOn(t){return this.model.createRangeOn(t)}createSelection(t,e,n){return this.model.createSelection(t,e,n)}_mergeDetached(t){const e=t.nodeBefore,n=t.nodeAfter;this.move($s._createIn(n),Ys._createAt(e,"end")),this.remove(n)}_merge(t){const e=Ys._createAt(t.nodeBefore,"end"),n=Ys._createAt(t.nodeAfter,0),i=t.root.document.graveyard,o=new Ys(i,[0]),r=t.root.document.version,s=new mc(n,t.nodeAfter.maxOffset,e,o,r);this.batch.addOperation(s),this.model.applyOperation(s)}rename(t,e){if(this._assertWriterUsedCorrectly(),!(t instanceof Us))throw new Gn.b("writer-rename-not-element-instance: Trying to rename an object which is not an instance of Element.",this);const n=t.root.document?t.root.document.version:null,i=new fc(Ys._createBefore(t),t.name,e,n);this.batch.addOperation(i),this.model.applyOperation(i)}split(t,e){this._assertWriterUsedCorrectly();let n,i,o=t.parent;if(!o.parent)throw new Gn.b("writer-split-element-no-parent: Element with no parent can not be split.",this);if(e||(e=o.parent),!t.parent.getAncestors({includeSelf:!0}).includes(e))throw new Gn.b("writer-split-invalid-limit-element: Limit element is not a position ancestor.",this);do{const e=o.root.document?o.root.document.version:null,r=o.maxOffset-t.offset,s=new pc(t,r,null,e);this.batch.addOperation(s),this.model.applyOperation(s),n||i||(n=o,i=t.parent.nextSibling),o=(t=this.createPositionAfter(t.parent)).parent}while(o!==e);return{position:t,range:new $s(Ys._createAt(n,"end"),Ys._createAt(i,0))}}wrap(t,e){if(this._assertWriterUsedCorrectly(),!t.isFlat)throw new Gn.b("writer-wrap-range-not-flat: Range to wrap is not flat.",this);const n=e instanceof Us?e:new Us(e);if(n.childCount>0)throw new Gn.b("writer-wrap-element-not-empty: Element to wrap with is not empty.",this);if(null!==n.parent)throw new Gn.b("writer-wrap-element-attached: Element to wrap with is already attached to tree model.",this);this.insert(n,t.start);const i=new $s(t.start.getShiftedBy(1),t.end.getShiftedBy(1));this.move(i,Ys._createAt(n,0))}unwrap(t){if(this._assertWriterUsedCorrectly(),null===t.parent)throw new Gn.b("writer-unwrap-element-no-parent: Trying to unwrap an element which has no parent.",this);this.move($s._createIn(t),this.createPositionAfter(t)),this.remove(t)}addMarker(t,e){if(this._assertWriterUsedCorrectly(),!e||"boolean"!=typeof e.usingOperation)throw new Gn.b("writer-addMarker-no-usingOperation: The options.usingOperation parameter is required when adding a new marker.",this);const n=e.usingOperation,i=e.range,o=void 0!==e.affectsData&&e.affectsData;if(this.model.markers.has(t))throw new Gn.b("writer-addMarker-marker-exists: Marker with provided name already exists.",this);if(!i)throw new Gn.b("writer-addMarker-no-range: Range parameter is required when adding a new marker.",this);return n?(vc(this,t,null,i,o),this.model.markers.get(t)):this.model.markers._set(t,i,n,o)}updateMarker(t,e){this._assertWriterUsedCorrectly();const n="string"==typeof t?t:t.name,i=this.model.markers.get(n);if(!i)throw new Gn.b("writer-updateMarker-marker-not-exists: Marker with provided name does not exists.",this);if(!e)return void this.model.markers._refresh(i);const o="boolean"==typeof e.usingOperation,r="boolean"==typeof e.affectsData,s=r?e.affectsData:i.affectsData;if(!o&&!e.range&&!r)throw new Gn.b("writer-updateMarker-wrong-options: One of the options is required - provide range, usingOperations or affectsData.",this);const a=i.getRange(),c=e.range?e.range:a;o&&e.usingOperation!==i.managedUsingOperations?e.usingOperation?vc(this,n,null,c,s):(vc(this,n,a,null,s),this.model.markers._set(n,c,void 0,s)):i.managedUsingOperations?vc(this,n,a,c,s):this.model.markers._set(n,c,void 0,s)}removeMarker(t){this._assertWriterUsedCorrectly();const e="string"==typeof t?t:t.name;if(!this.model.markers.has(e))throw new Gn.b("writer-removeMarker-no-marker: Trying to remove marker which does not exist.",this);const n=this.model.markers.get(e);n.managedUsingOperations?vc(this,e,n.getRange(),null,n.affectsData):this.model.markers._remove(e)}setSelection(t,e,n){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(t,e,n)}setSelectionFocus(t,e){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(t,e)}setSelectionAttribute(t,e){if(this._assertWriterUsedCorrectly(),"string"==typeof t)this._setSelectionAttribute(t,e);else for(const[e,n]of js(t))this._setSelectionAttribute(e,n)}removeSelectionAttribute(t){if(this._assertWriterUsedCorrectly(),"string"==typeof t)this._removeSelectionAttribute(t);else for(const e of t)this._removeSelectionAttribute(e)}overrideSelectionGravity(){return this.model.document.selection._overrideGravity()}restoreSelectionGravity(t){this.model.document.selection._restoreGravity(t)}_setSelectionAttribute(t,e){const n=this.model.document.selection;if(n.isCollapsed&&n.anchor.parent.isEmpty){const i=sa._getStoreAttributeKey(t);this.setAttribute(i,e,n.anchor.parent)}n._setAttribute(t,e)}_removeSelectionAttribute(t){const e=this.model.document.selection;if(e.isCollapsed&&e.anchor.parent.isEmpty){const n=sa._getStoreAttributeKey(t);this.removeAttribute(n,e.anchor.parent)}e._removeAttribute(t)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new Gn.b("writer-incorrect-use: Trying to use a writer outside the change() block.",this)}_addOperationForAffectedMarkers(t,e){for(const n of this.model.markers){if(!n.managedUsingOperations)continue;const i=n.getRange();let o=!1;if("move"==t)o=e.containsPosition(i.start)||e.start.isEqual(i.start)||e.containsPosition(i.end)||e.end.isEqual(i.end);else{const t=e.nodeBefore,n=e.nodeAfter,r=i.start.parent==t&&i.start.isAtEnd,s=i.end.parent==n&&0==i.end.offset,a=i.end.nodeAfter==n,c=i.start.nodeAfter==n;o=r||s||a||c}o&&this.updateMarker(n.name,{range:i})}}}function kc(t,e,n,i){const o=t.model,r=o.document;let s,a,c,l=i.start;for(const t of i.getWalker({shallow:!0}))c=t.item.getAttribute(e),s&&a!=c&&(a!=n&&d(),l=s),s=t.nextPosition,a=c;function d(){const i=new $s(l,s),c=i.root.document?r.version:null,d=new cc(i,e,a,n,c);t.batch.addOperation(d),o.applyOperation(d)}s instanceof Ys&&s!=l&&a!=n&&d()}function _c(t,e,n,i){const o=t.model,r=o.document,s=i.getAttribute(e);let a,c;if(s!=n){if(i.root===i){const t=i.document?r.version:null;c=new gc(i,e,s,n,t)}else{const o=(a=new $s(Ys._createBefore(i),t.createPositionAfter(i))).root.document?r.version:null;c=new cc(a,e,s,n,o)}t.batch.addOperation(c),o.applyOperation(c)}}function vc(t,e,n,i,o){const r=t.model,s=r.document,a=new uc(e,n,i,r.markers,o,s.version);t.batch.addOperation(a),r.applyOperation(a)}function yc(t,e,n,i){let o;if(t.root.document){const n=i.document,r=new Ys(n.graveyard,[0]);o=new dc(t,e,r,n.version)}else o=new lc(t,e);n.addOperation(o),i.applyOperation(o)}function xc(t,e){return t===e||t instanceof bc&&e instanceof bc}class Ac{constructor(t){this._markerCollection=t,this._changesInElement=new Map,this._elementSnapshots=new Map,this._changedMarkers=new Map,this._changeCount=0,this._cachedChanges=null,this._cachedChangesWithGraveyard=null}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size}refreshItem(t){if(this._isInInsertedElement(t.parent))return;this._markRemove(t.parent,t.startOffset,t.offsetSize),this._markInsert(t.parent,t.startOffset,t.offsetSize);const e=$s._createOn(t);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getRange();this.bufferMarkerChange(t.name,e,e,t.affectsData)}this._cachedChanges=null}bufferOperation(t){switch(t.type){case"insert":if(this._isInInsertedElement(t.position.parent))return;this._markInsert(t.position.parent,t.position.offset,t.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":for(const e of t.range.getItems({shallow:!0}))this._isInInsertedElement(e.parent)||this._markAttribute(e);break;case"remove":case"move":case"reinsert":{if(t.sourcePosition.isEqual(t.targetPosition)||t.sourcePosition.getShiftedBy(t.howMany).isEqual(t.targetPosition))return;const e=this._isInInsertedElement(t.sourcePosition.parent),n=this._isInInsertedElement(t.targetPosition.parent);e||this._markRemove(t.sourcePosition.parent,t.sourcePosition.offset,t.howMany),n||this._markInsert(t.targetPosition.parent,t.getMovedRangeStart().offset,t.howMany);break}case"rename":{if(this._isInInsertedElement(t.position.parent))return;this._markRemove(t.position.parent,t.position.offset,1),this._markInsert(t.position.parent,t.position.offset,1);const e=$s._createFromPositionAndShift(t.position,1);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getRange();this.bufferMarkerChange(t.name,e,e,t.affectsData)}break}case"split":{const e=t.splitPosition.parent;this._isInInsertedElement(e)||this._markRemove(e,t.splitPosition.offset,t.howMany),this._isInInsertedElement(t.insertionPosition.parent)||this._markInsert(t.insertionPosition.parent,t.insertionPosition.offset,1),t.graveyardPosition&&this._markRemove(t.graveyardPosition.parent,t.graveyardPosition.offset,1);break}case"merge":{const e=t.sourcePosition.parent;this._isInInsertedElement(e.parent)||this._markRemove(e.parent,e.startOffset,1);const n=t.graveyardPosition.parent;this._markInsert(n,t.graveyardPosition.offset,1);const i=t.targetPosition.parent;this._isInInsertedElement(i)||this._markInsert(i,t.targetPosition.offset,e.maxOffset);break}}this._cachedChanges=null}bufferMarkerChange(t,e,n,i){const o=this._changedMarkers.get(t);o?(o.newRange=n,o.affectsData=i,null==o.oldRange&&null==o.newRange&&this._changedMarkers.delete(t)):this._changedMarkers.set(t,{oldRange:e,newRange:n,affectsData:i})}getMarkersToRemove(){const t=[];for(const[e,n]of this._changedMarkers)null!=n.oldRange&&t.push({name:e,range:n.oldRange});return t}getMarkersToAdd(){const t=[];for(const[e,n]of this._changedMarkers)null!=n.newRange&&t.push({name:e,range:n.newRange});return t}getChangedMarkers(){return Array.from(this._changedMarkers).map(t=>({name:t[0],data:{oldRange:t[1].oldRange,newRange:t[1].newRange}}))}hasDataChanges(){for(const[,t]of this._changedMarkers)if(t.affectsData)return!0;return this._changesInElement.size>0}getChanges(t={includeChangesInGraveyard:!1}){if(this._cachedChanges)return t.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();const e=[];for(const t of this._changesInElement.keys()){const n=this._changesInElement.get(t).sort((t,e)=>t.offset===e.offset?t.type!=e.type?"remove"==t.type?-1:1:0:t.offsett.position.root!=e.position.root?t.position.root.rootNamen.offset){if(i>o){const t={type:"attribute",offset:o,howMany:i-o,count:this._changeCount++};this._handleChange(t,e),e.push(t)}t.nodesToHandle=n.offset-t.offset,t.howMany=t.nodesToHandle}else t.offset>=n.offset&&t.offseto?(t.nodesToHandle=i-o,t.offset=o):t.nodesToHandle=0);if("remove"==n.type&&t.offsetn.offset){const o={type:"attribute",offset:n.offset,howMany:i-n.offset,count:this._changeCount++};this._handleChange(o,e),e.push(o),t.nodesToHandle=n.offset-t.offset,t.howMany=t.nodesToHandle}"attribute"==n.type&&(t.offset>=n.offset&&i<=o?(t.nodesToHandle=0,t.howMany=0,t.offset=0):t.offset<=n.offset&&i>=o&&(n.howMany=0))}}t.howMany=t.nodesToHandle,delete t.nodesToHandle}_getInsertDiff(t,e,n){return{type:"insert",position:Ys._createAt(t,e),name:n,length:1,changeCount:this._changeCount++}}_getRemoveDiff(t,e,n){return{type:"remove",position:Ys._createAt(t,e),name:n,length:1,changeCount:this._changeCount++}}_getAttributesDiff(t,e,n){const i=[];n=new Map(n);for(const[o,r]of e){const e=n.has(o)?n.get(o):null;e!==r&&i.push({type:"attribute",position:t.start,range:t.clone(),length:1,attributeKey:o,attributeOldValue:r,attributeNewValue:e,changeCount:this._changeCount++}),n.delete(o)}for(const[e,o]of n)i.push({type:"attribute",position:t.start,range:t.clone(),length:1,attributeKey:e,attributeOldValue:null,attributeNewValue:o,changeCount:this._changeCount++});return i}_isInInsertedElement(t){const e=t.parent;if(!e)return!1;const n=this._changesInElement.get(e),i=t.startOffset;if(n)for(const t of n)if("insert"==t.type&&i>=t.offset&&ii){for(let e=0;e{const n=e[0];if(n.isDocumentOperation&&n.baseVersion!==this.version)throw new Gn.b("model-document-applyOperation-wrong-version: Only operations with matching versions can be applied.",this,{operation:n})},{priority:"highest"}),this.listenTo(t,"applyOperation",(t,e)=>{const n=e[0];n.isDocumentOperation&&this.differ.bufferOperation(n)},{priority:"high"}),this.listenTo(t,"applyOperation",(t,e)=>{const n=e[0];n.isDocumentOperation&&(this.version++,this.history.addOperation(n))},{priority:"low"}),this.listenTo(this.selection,"change",()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0}),this.listenTo(t.markers,"update",(t,e,n,i)=>{this.differ.bufferMarkerChange(e.name,n,i,e.affectsData),null===n&&e.on("change",(t,n)=>{this.differ.bufferMarkerChange(e.name,n,e.getRange(),e.affectsData)})})}get graveyard(){return this.getRoot(Ic)}createRoot(t="$root",e="main"){if(this.roots.get(e))throw new Gn.b("model-document-createRoot-name-exists: Root with specified name already exists.",this,{name:e});const n=new bc(this,t,e);return this.roots.add(n),n}destroy(){this.selection.destroy(),this.stopListening()}getRoot(t="main"){return this.roots.get(t)}getRootNames(){return Array.from(this.roots,t=>t.rootName).filter(t=>t!=Ic)}registerPostFixer(t){this._postFixers.add(t)}toJSON(){const t=hi(this);return t.selection="[engine.model.DocumentSelection]",t.model="[engine.model.Model]",t}_handleChangeBlock(t){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(t),this.selection.refresh(),this.differ.hasDataChanges()?this.fire("change:data",t.batch):this.fire("change",t.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}_hasDocumentChangedFromTheLastChangeBlock(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}_getDefaultRoot(){for(const t of this.roots)if(t!==this.graveyard)return t;return this.graveyard}_getDefaultRange(){const t=this._getDefaultRoot(),e=this.model,n=e.schema,i=e.createPositionFromPath(t,[0]);return n.getNearestSelectionRange(i)||e.createRange(i)}_validateSelectionRange(t){return Oc(t.start)&&Oc(t.end)}_callPostFixers(t){let e=!1;do{for(const n of this._postFixers)if(this.selection.refresh(),e=n(t))break}while(e)}}function Oc(t){const e=t.textNode;if(e){const n=e.data,i=t.offset-e.startOffset;return!Mc(n,i)&&!Ec(n,i)}return!0}ci(Nc,ei);class Rc{constructor(){this._markers=new Map}[Symbol.iterator](){return this._markers.values()}has(t){return this._markers.has(t)}get(t){return this._markers.get(t)||null}_set(t,e,n=!1,i=!1){const o=t instanceof Dc?t.name:t,r=this._markers.get(o);if(r){const t=r.getRange();let s=!1;return t.isEqual(e)||(r._attachLiveRange(oa.fromRange(e)),s=!0),n!=r.managedUsingOperations&&(r._managedUsingOperations=n,s=!0),"boolean"==typeof i&&i!=r.affectsData&&(r._affectsData=i,s=!0),s&&this.fire("update:"+o,r,t,e),r}const s=oa.fromRange(e),a=new Dc(o,s,n,i);return this._markers.set(o,a),this.fire("update:"+o,a,null,e),a}_remove(t){const e=t instanceof Dc?t.name:t,n=this._markers.get(e);return!!n&&(this._markers.delete(e),this.fire("update:"+e,n,n.getRange(),null),this._destroyMarker(n),!0)}_refresh(t){const e=t instanceof Dc?t.name:t,n=this._markers.get(e);if(!n)throw new Gn.b("markercollection-refresh-marker-not-exists: Marker with provided name does not exists.",this);const i=n.getRange();this.fire("update:"+e,n,i,i,n.managedUsingOperations,n.affectsData)}*getMarkersAtPosition(t){for(const e of this)e.getRange().containsPosition(t)&&(yield e)}*getMarkersIntersectingRange(t){for(const e of this)null!==e.getRange().getIntersection(t)&&(yield e)}destroy(){for(const t of this._markers.values())this._destroyMarker(t);this._markers=null,this.stopListening()}*getMarkersGroup(t){for(const e of this._markers.values())e.name.startsWith(t+":")&&(yield e)}_destroyMarker(t){t.stopListening(),t._detachLiveRange()}}ci(Rc,ei);class Dc{constructor(t,e,n,i){this.name=t,this._liveRange=this._attachLiveRange(e),this._managedUsingOperations=n,this._affectsData=i}get managedUsingOperations(){if(!this._liveRange)throw new Gn.b("marker-destroyed: Cannot use a destroyed marker instance.",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new Gn.b("marker-destroyed: Cannot use a destroyed marker instance.",this);return this._affectsData}getStart(){if(!this._liveRange)throw new Gn.b("marker-destroyed: Cannot use a destroyed marker instance.",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new Gn.b("marker-destroyed: Cannot use a destroyed marker instance.",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new Gn.b("marker-destroyed: Cannot use a destroyed marker instance.",this);return this._liveRange.toRange()}is(t){return"marker"==t||"model:marker"==t}_attachLiveRange(t){return this._liveRange&&this._detachLiveRange(),t.delegate("change:range").to(this),t.delegate("change:content").to(this),this._liveRange=t,t}_detachLiveRange(){this._liveRange.stopDelegating("change:range",this),this._liveRange.stopDelegating("change:content",this),this._liveRange.detach(),this._liveRange=null}}ci(Dc,ei);class Lc extends Ys{constructor(t,e,n="toNone"){if(super(t,e,n),!this.root.is("rootElement"))throw new Gn.b("model-liveposition-root-not-rootelement: LivePosition's root has to be an instance of RootElement.",t);(function(){this.listenTo(this.root.document.model,"applyOperation",(t,e)=>{const n=e[0];n.isDocumentOperation&&function(t){const e=this.getTransformedByOperation(t);if(!this.isEqual(e)){const t=this.toPosition();this.path=e.path,this.root=e.root,this.fire("change",t)}}.call(this,n)},{priority:"low"})}).call(this)}detach(){this.stopListening()}is(t){return"livePosition"==t||"model:livePosition"==t||super.is(t)}toPosition(){return new Ys(this.root,this.path.slice(),this.stickiness)}static fromPosition(t,e){return new this(t.root,t.path.slice(),e||t.stickiness)}}ci(Lc,ei);class jc{constructor(t,e,n){this.model=t,this.writer=e,this.position=n,this.canMergeWith=new Set([this.position.parent]),this.schema=t.schema,this._filterAttributesOf=[],this._affectedStart=null,this._affectedEnd=null}handleNodes(t,e){t=Array.from(t);for(let n=0;n{if(!n.doNotResetEntireContent&&function(t,e){const n=t.getLimitElement(e);if(!e.containsEntireContent(n))return!1;const i=e.getFirstRange();if(i.start.parent==i.end.parent)return!1;return t.checkChild(n,"paragraph")}(o,e))return void function(t,e){const n=t.model.schema.getLimitElement(e);t.remove(t.createRangeIn(n)),zc(t,t.createPositionAt(n,0),e)}(t,e);const r=i.start,s=Lc.fromPosition(i.end,"toNext");if(i.start.isTouching(i.end)||t.remove(i),n.leaveUnmerged||(!function t(e,n,i){const o=n.parent;const r=i.parent;if(o==r)return;if(e.model.schema.isLimit(o)||e.model.schema.isLimit(r))return;if(!function(t,e,n){const i=new $s(t,e);for(const t of i.getWalker())if(n.isLimit(t.item))return!1;return!0}(n,i,e.model.schema))return;n=e.createPositionAfter(o);i=e.createPositionBefore(r);i.isEqual(n)||e.insert(r,n);e.merge(n);for(;i.parent.isEmpty;){const t=i.parent;i=e.createPositionBefore(t),e.remove(t)}t(e,n,i)}(t,r,s),o.removeDisallowedAttributes(r.parent.getChildren(),t)),Bc(t,e,r),function(t,e){const n=t.checkChild(e,"$text"),i=t.checkChild(e,"paragraph");return!n&&i}(o,r)){const i=o.getNearestSelectionRange(r);n.doNotAutoparagraph&&i?Bc(t,e,i):zc(t,r,e)}s.detach()})}function zc(t,e,n){const i=t.createElement("paragraph");t.insert(i,e),Bc(t,n,t.createPositionAt(i,0))}function Bc(t,e,n){e instanceof sa?t.setSelection(n):e.setTo(n)}const Fc=' ,.?!:;"-()';function Uc(t,e,n={}){const i=t.schema,o="backward"!=n.direction,r=n.unit?n.unit:"character",s=e.focus,a=new Hs({boundaries:function(t,e){const n=t.root,i=Ys._createAt(n,e?"end":0);return e?new $s(t,i):new $s(i,t)}(s,o),singleCharacters:!0,direction:o?"forward":"backward"}),c={walker:a,schema:i,isForward:o,unit:r};let l;for(;l=a.next();){if(l.done)return;const n=Hc(c,l.value);if(n)return void(e instanceof sa?t.change(t=>{t.setSelectionFocus(n)}):e.setFocus(n))}}function Hc(t,e){if("text"==e.type)return"word"===t.unit?function(t,e){let n=t.position.textNode;if(n){let i=t.position.offset-n.startOffset;for(;!qc(n.data,i,e)&&!Wc(n,i,e);){t.next();const o=e?t.position.nodeAfter:t.position.nodeBefore;if(o&&o.is("text")){const i=o.data.charAt(e?0:o.data.length-1);Fc.includes(i)||(t.next(),n=t.position.textNode)}i=t.position.offset-n.startOffset}}return t.position}(t.walker,t.isForward):function(t,e){const n=t.position.textNode;if(n){const i=n.data;let o=t.position.offset-n.startOffset;for(;Mc(i,o)||"character"==e&&Ec(i,o);)t.next(),o=t.position.offset-n.startOffset}return t.position}(t.walker,t.unit,t.isForward);if(e.type==(t.isForward?"elementStart":"elementEnd")){if(t.schema.isObject(e.item))return Ys._createAt(e.item,t.isForward?"after":"before");if(t.schema.checkChild(e.nextPosition,"$text"))return e.nextPosition}else{if(t.schema.isLimit(e.item))return void t.walker.skip(()=>!0);if(t.schema.checkChild(e.nextPosition,"$text"))return e.nextPosition}}function qc(t,e,n){const i=e+(n?0:-1);return Fc.includes(t.charAt(i))}function Wc(t,e,n){return e===(n?t.endOffset:0)}function Yc(t,e){const n=[];Array.from(t.getItems({direction:"backward"})).map(t=>e.createRangeOn(t)).filter(e=>{return(e.start.isAfter(t.start)||e.start.isEqual(t.start))&&(e.end.isBefore(t.end)||e.end.isEqual(t.end))}).forEach(t=>{n.push(t.start.parent),e.remove(t)}),n.forEach(t=>{let n=t;for(;n.parent&&n.isEmpty;){const t=e.createRangeOn(n);n=n.parent,e.remove(t)}})}function $c(t){t.document.registerPostFixer(e=>(function(t,e){const n=e.document.selection,i=e.schema,o=[];let r=!1;for(const t of n.getRanges()){const e=Gc(t,i);e?(o.push(e),r=!0):o.push(t)}if(r){let e=o;if(o.length>1){const t=o[0].start,n=o[o.length-1].end;e=[new $s(t,n)]}t.setSelection(e,{backward:n.isBackward})}})(e,t))}function Gc(t,e){return t.isCollapsed?function(t,e){const n=t.start,i=e.getNearestSelectionRange(n);if(!i)return null;const o=i.start;if(n.isEqual(o))return null;if(o.nodeAfter&&e.isLimit(o.nodeAfter))return new $s(o,Ys._createAfter(o.nodeAfter));return new $s(o)}(t,e):function(t,e){const n=t.start,i=t.end,o=e.checkChild(n,"$text"),r=e.checkChild(i,"$text"),s=e.getLimitElement(n),a=e.getLimitElement(i);if(s===a){if(o&&r)return null;if(function(t,e,n){const i=t.nodeAfter&&!n.isLimit(t.nodeAfter)||n.checkChild(t,"$text"),o=e.nodeBefore&&!n.isLimit(e.nodeBefore)||n.checkChild(e,"$text");return i||o}(n,i,e)){const t=n.nodeAfter&&e.isObject(n.nodeAfter),o=t?null:e.getNearestSelectionRange(n,"forward"),r=i.nodeBefore&&e.isObject(i.nodeBefore),s=r?null:e.getNearestSelectionRange(i,"backward"),a=o?o.start:n,c=s?s.start:i;return new $s(a,c)}}const c=s&&!s.is("rootElement"),l=a&&!a.is("rootElement");if(c||l){const t=n.nodeAfter&&i.nodeBefore&&n.nodeAfter.parent===i.nodeBefore.parent,o=c&&(!t||!Kc(n.nodeAfter,e)),r=l&&(!t||!Kc(i.nodeBefore,e));let d=n,h=i;return o&&(d=Ys._createBefore(Qc(s,e))),r&&(h=Ys._createAfter(Qc(a,e))),new $s(d,h)}return null}(t,e)}function Qc(t,e){let n=t,i=n;for(;e.isLimit(i)&&i.parent;)n=i,i=i.parent;return n}function Kc(t,e){return t&&e.isObject(t)}class Jc{constructor(){this.markers=new Rc,this.document=new Nc(this),this.schema=new Oa,this._pendingChanges=[],this._currentWriter=null,["insertContent","deleteContent","modifySelection","getSelectedContent","applyOperation"].forEach(t=>this.decorate(t)),this.on("applyOperation",(t,e)=>{e[0]._validate()},{priority:"highest"}),this.schema.register("$root",{isLimit:!0}),this.schema.register("$block",{allowIn:"$root",isBlock:!0}),this.schema.register("$text",{allowIn:"$block",isInline:!0}),this.schema.register("$clipboardHolder",{allowContentOf:"$root",isLimit:!0}),this.schema.extend("$text",{allowIn:"$clipboardHolder"}),this.schema.register("$marker"),this.schema.addChildCheck((t,e)=>{if("$marker"===e.name)return!0}),$c(this)}change(t){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new Ja,callback:t}),this._runPendingChanges()[0]):t(this._currentWriter)}catch(t){Gn.b.rethrowUnexpectedError(t,this)}}enqueueChange(t,e){try{"string"==typeof t?t=new Ja(t):"function"==typeof t&&(e=t,t=new Ja),this._pendingChanges.push({batch:t,callback:e}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(t){Gn.b.rethrowUnexpectedError(t,this)}}applyOperation(t){t._execute()}insertContent(t,e,n){return function(t,e,n,i){return t.change(o=>{let r;const s=(r=n?n instanceof Xs||n instanceof sa?n:o.createSelection(n,i):t.document.selection).getFirstPosition();r.isCollapsed||t.deleteContent(r,{doNotAutoparagraph:!0});const a=new jc(t,o,s);let c;c=e.is("documentFragment")?e.getChildren():[e],a.handleNodes(c,{isFirst:!0,isLast:!0});const l=a.getSelectionRange();l&&(r instanceof sa?o.setSelection(l):r.setTo(l));const d=a.getAffectedRange()||t.createRange(s);return a.destroy(),d})}(this,t,e,n)}deleteContent(t,e){Vc(this,t,e)}modifySelection(t,e){Uc(this,t,e)}getSelectedContent(t){return function(t,e){return t.change(t=>{const n=t.createDocumentFragment(),i=e.getFirstRange();if(!i||i.isCollapsed)return n;const o=i.start.root,r=i.start.getCommonPath(i.end),s=o.getNodeByPath(r);let a;const c=(a=i.start.parent==i.end.parent?i:t.createRange(t.createPositionAt(s,i.start.path[r.length]),t.createPositionAt(s,i.end.path[r.length]+1))).end.offset-a.start.offset;for(const e of a.getItems({shallow:!0}))e.is("textProxy")?t.appendText(e.data,e.getAttributes(),n):t.append(e._clone(!0),n);if(a!=i){const e=i._getTransformedByMove(a.start,t.createPositionAt(n,0),c)[0],o=t.createRange(t.createPositionAt(n,0),e.start);Yc(t.createRange(e.end,t.createPositionAt(n,"end")),t),Yc(o,t)}return n})}(this,t)}hasContent(t,e){const n=t instanceof Us?$s._createIn(t):t;if(n.isCollapsed)return!1;for(const t of this.markers.getMarkersIntersectingRange(n))if(t.affectsData)return!0;const{ignoreWhitespaces:i=!1}=e||{};for(const t of n.getItems())if(t.is("textProxy")){if(!i)return!0;if(-1!==t.data.search(/\S/))return!0}else if(this.schema.isObject(t))return!0;return!1}createPositionFromPath(t,e,n){return new Ys(t,e,n)}createPositionAt(t,e){return Ys._createAt(t,e)}createPositionAfter(t){return Ys._createAfter(t)}createPositionBefore(t){return Ys._createBefore(t)}createRange(t,e){return new $s(t,e)}createRangeIn(t){return $s._createIn(t)}createRangeOn(t){return $s._createOn(t)}createSelection(t,e,n){return new Xs(t,e,n)}createBatch(t){return new Ja(t)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const t=[];for(this.fire("_beforeChanges");this._pendingChanges.length;){const e=this._pendingChanges[0].batch;this._currentWriter=new wc(this,e);const n=this._pendingChanges[0].callback(this._currentWriter);t.push(n),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}return this.fire("_afterChanges"),t}}ci(Jc,Fi);class Zc{constructor(){this._listener=Object.create(cr)}listenTo(t){this._listener.listenTo(t,"keydown",(t,e)=>{this._listener.fire("_keydown:"+wo(e),e)})}set(t,e,n={}){const i=ko(t),o=n.priority;this._listener.listenTo(this._listener,"_keydown:"+i,(t,n)=>{e(n,()=>{n.preventDefault(),n.stopPropagation(),t.stop()}),t.return=!0},{priority:o})}press(t){return!!this._listener.fire("_keydown:"+wo(t),t)}destroy(){this._listener.stopListening()}}class Xc extends Zc{constructor(t){super(),this.editor=t}set(t,e,n={}){if("string"==typeof e){const t=e;e=((e,n)=>{this.editor.execute(t),n()})}super.set(t,e,n)}}class tl{constructor(t){const e=this.constructor.builtinPlugins;this.config=new Yn(t,this.constructor.defaultConfig),this.config.define("plugins",e),this.plugins=new Ta(this,e),this.commands=new Ca;const n=this.config.get("language")||{};this.locale=new Ma({uiLanguage:"string"==typeof n?n:n.ui,contentLanguage:this.config.get("language.content")}),this.t=this.locale.t,this.set("state","initializing"),this.once("ready",()=>this.state="ready",{priority:"high"}),this.once("destroy",()=>this.state="destroyed",{priority:"high"}),this.set("isReadOnly",!1),this.model=new Jc,this.data=new $a(this.model),this.editing=new Aa(this.model),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new Ga([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias("dataDowncast",this.data.downcastDispatcher),this.conversion.addAlias("editingDowncast",this.editing.downcastDispatcher),this.keystrokes=new Xc(this),this.keystrokes.listenTo(this.editing.view.document)}initPlugins(){const t=this.config,e=t.get("plugins")||[],n=t.get("removePlugins")||[],i=t.get("extraPlugins")||[];return this.plugins.init(e.concat(i),n)}destroy(){let t=Promise.resolve();return"initializing"==this.state&&(t=new Promise(t=>this.once("ready",t))),t.then(()=>{this.fire("destroy"),this.stopListening(),this.commands.destroy()}).then(()=>this.plugins.destroy()).then(()=>{this.model.destroy(),this.data.destroy(),this.editing.destroy(),this.keystrokes.destroy()})}execute(...t){try{this.commands.execute(...t)}catch(t){Gn.b.rethrowUnexpectedError(t,this)}}}ci(tl,Fi);var el={setData(t){this.data.set(t)},getData(t){return this.data.get(t)}};var nl={updateSourceElement(){if(!this.sourceElement)throw new Gn.b("editor-missing-sourceelement: Cannot update the source element of a detached editor.",this);!function(t,e){t instanceof HTMLTextAreaElement&&(t.value=e),t.innerHTML=e}(this.sourceElement,this.data.get())}};class il{getHtml(t){const e=document.implementation.createHTMLDocument("").createElement("div");return e.appendChild(t),e.innerHTML}}class ol{constructor(){this._domParser=new DOMParser,this._domConverter=new or({blockFillerMode:"nbsp"}),this._htmlWriter=new il}toData(t){const e=this._domConverter.viewToDom(t,document);return this._htmlWriter.getHtml(e)}toView(t){const e=this._toDom(t);return this._domConverter.domToView(e)}_toDom(t){const e=this._domParser.parseFromString(t,"text/html"),n=e.createDocumentFragment(),i=e.body.childNodes;for(;i.length>0;)n.appendChild(i[0]);return n}}class rl{constructor(t){this.editor=t,this._components=new Map}*names(){for(const t of this._components.values())yield t.originalName}add(t,e){if(this.has(t))throw new Gn.b("componentfactory-item-exists: The item already exists in the component factory.",this,{name:t});this._components.set(sl(t),{callback:e,originalName:t})}create(t){if(!this.has(t))throw new Gn.b("componentfactory-item-missing: The required component is not registered in the factory.",this,{name:t});return this._components.get(sl(t)).callback(this.editor.locale)}has(t){return this._components.has(sl(t))}}function sl(t){return String(t).toLowerCase()}class al{constructor(){this.set("isFocused",!1),this.set("focusedElement",null),this._elements=new Set,this._nextEventLoopTimeout=null}add(t){if(this._elements.has(t))throw new Gn.b("focusTracker-add-element-already-exist",this);this.listenTo(t,"focus",()=>this._focus(t),{useCapture:!0}),this.listenTo(t,"blur",()=>this._blur(),{useCapture:!0}),this._elements.add(t)}remove(t){t===this.focusedElement&&this._blur(t),this._elements.has(t)&&(this.stopListening(t),this._elements.delete(t))}destroy(){this.stopListening()}_focus(t){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=t,this.isFocused=!0}_blur(){clearTimeout(this._nextEventLoopTimeout),this._nextEventLoopTimeout=setTimeout(()=>{this.focusedElement=null,this.isFocused=!1},0)}}ci(al,cr),ci(al,Fi);class cl{constructor(t){this.editor=t,this.componentFactory=new rl(t),this.focusTracker=new al,this._editableElementsMap=new Map,this.listenTo(t.editing.view.document,"layoutChanged",()=>this.update())}get element(){return null}update(){this.fire("update")}destroy(){this.stopListening(),this.focusTracker.destroy();for(const t of this._editableElementsMap.values())t.ckeditorInstance=null;this._editableElementsMap=new Map}setEditableElement(t,e){this._editableElementsMap.set(t,e),e.ckeditorInstance||(e.ckeditorInstance=this.editor)}getEditableElement(t="main"){return this._editableElementsMap.get(t)}getEditableElementsNames(){return this._editableElementsMap.keys()}get _editableElements(){return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.",{editorUI:this}),this._editableElementsMap}}ci(cl,ei);n(14);const ll=new WeakMap;function dl(t){const{view:e,element:n,text:i,isDirectHost:o=!0}=t,r=e.document;ll.has(r)||(ll.set(r,new Map),r.registerPostFixer(t=>ul(r,t))),ll.get(r).set(n,{text:i,isDirectHost:o}),e.change(t=>ul(r,t))}function hl(t,e){return!!e.hasClass("ck-placeholder")&&(t.removeClass("ck-placeholder",e),!0)}function ul(t,e){const n=ll.get(t);let i=!1;for(const[t,o]of n)fl(e,t,o)&&(i=!0);return i}function fl(t,e,n){const{text:i,isDirectHost:o}=n,r=o?e:function(t){if(1===t.childCount){const e=t.getChild(0);if(e.is("element")&&!e.is("uiElement"))return e}return null}(e);let s=!1;return!!r&&(n.hostElement=r,r.getAttribute("data-placeholder")!==i&&(t.setAttribute("data-placeholder",i,r),s=!0),!function(t){const e=t.document;if(!e)return!1;const n=!Array.from(t.getChildren()).some(t=>!t.is("uiElement"));if(!e.isFocused&&n)return!0;const i=e.selection.anchor;return!(!n||!i||i.parent===t)}(r)?hl(t,r)&&(s=!0):function(t,e){return!e.hasClass("ck-placeholder")&&(t.addClass("ck-placeholder",e),!0)}(t,r)&&(s=!0),s)}class gl{constructor(){this._replacedElements=[]}replace(t,e){this._replacedElements.push({element:t,newElement:e}),t.style.display="none",e&&t.parentNode.insertBefore(e,t.nextSibling)}restore(){this._replacedElements.forEach(({element:t,newElement:e})=>{t.style.display="",e&&e.remove()}),this._replacedElements=[]}}class ml extends cl{constructor(t,e){super(t),this.view=e,this._toolbarConfig=function(t){return Array.isArray(t)?{items:t}:t?Object.assign({items:[]},t):{items:[]}}(t.config.get("toolbar")),this._elementReplacer=new gl}get element(){return this.view.element}init(t){const e=this.editor,n=this.view,i=e.editing.view,o=n.editable,r=i.document.getRoot();o.name=r.rootName,n.render();const s=o.element;this.setEditableElement(o.name,s),this.focusTracker.add(s),n.editable.bind("isFocused").to(this.focusTracker),i.attachDomRoot(s),t&&this._elementReplacer.replace(t,this.element),this._initPlaceholder(),this._initToolbar(),this.fire("ready")}destroy(){const t=this.view,e=this.editor.editing.view;this._elementReplacer.restore(),e.detachDomRoot(t.editable.name),t.destroy(),super.destroy()}_initToolbar(){const t=this.editor,e=this.view,n=t.editing.view;e.stickyPanel.bind("isActive").to(this.focusTracker,"isFocused"),e.stickyPanel.limiterElement=e.element,this._toolbarConfig.viewportTopOffset&&(e.stickyPanel.viewportTopOffset=this._toolbarConfig.viewportTopOffset),e.toolbar.fillFromConfig(this._toolbarConfig.items,this.componentFactory),function({origin:t,originKeystrokeHandler:e,originFocusTracker:n,toolbar:i,beforeFocus:o,afterBlur:r}){n.add(i.element),e.set("Alt+F10",(t,e)=>{n.isFocused&&!i.focusTracker.isFocused&&(o&&o(),i.focus(),e())}),i.keystrokes.set("Esc",(e,n)=>{i.focusTracker.isFocused&&(t.focus(),r&&r(),n())})}({origin:n,originFocusTracker:this.focusTracker,originKeystrokeHandler:t.keystrokes,toolbar:e.toolbar})}_initPlaceholder(){const t=this.editor,e=t.editing.view,n=e.document.getRoot(),i=t.sourceElement,o=t.config.get("placeholder")||i&&"textarea"===i.tagName.toLowerCase()&&i.getAttribute("placeholder");o&&dl({view:e,element:n,text:o,isDirectHost:!1})}}class pl extends oo{constructor(t){super({idProperty:"viewUid"}),this.on("add",(t,e,n)=>{e.isRendered||e.render(),e.element&&this._parentElement&&this._parentElement.insertBefore(e.element,this._parentElement.children[n])}),this.on("remove",(t,e)=>{e.element&&this._parentElement&&e.element.remove()}),this.locale=t,this._parentElement=null}destroy(){this.map(t=>t.destroy())}setParent(t){this._parentElement=t}delegate(...t){if(!t.length||!function(t){return t.every(t=>"string"==typeof t)}(t))throw new Gn.b("ui-viewcollection-delegate-wrong-events: All event names must be strings.",this);return{to:e=>{for(const n of this)for(const i of t)n.delegate(i).to(e);this.on("add",(n,i)=>{for(const n of t)i.delegate(n).to(e)}),this.on("remove",(n,i)=>{for(const n of t)i.stopDelegating(n,e)})}}}}const bl="http://www.w3.org/1999/xhtml";class wl{constructor(t){Object.assign(this,Pl(Cl(t))),this._isRendered=!1,this._revertData=null}render(){const t=this._renderNode({intoFragment:!0});return this._isRendered=!0,t}apply(t){return this._revertData={children:[],bindings:[],attributes:{}},this._renderNode({node:t,isApplying:!0,revertData:this._revertData}),t}revert(t){if(!this._revertData)throw new Gn.b("ui-template-revert-not-applied: Attempting to revert a template which has not been applied yet.",[this,t]);this._revertTemplateFromNode(t,this._revertData)}*getViews(){yield*function*t(e){if(e.children)for(const n of e.children)Nl(n)?yield n:Ol(n)&&(yield*t(n))}(this)}static bind(t,e){return{to:(n,i)=>new _l({eventNameOrFunction:n,attribute:n,observable:t,emitter:e,callback:i}),if:(n,i,o)=>new vl({observable:t,emitter:e,attribute:n,valueIfTrue:i,callback:o})}}static extend(t,e){if(t._isRendered)throw new Gn.b("template-extend-render: Attempting to extend a template which has already been rendered.",[this,t]);!function t(e,n){n.attributes&&(e.attributes||(e.attributes={}),El(e.attributes,n.attributes));n.eventListeners&&(e.eventListeners||(e.eventListeners={}),El(e.eventListeners,n.eventListeners));n.text&&e.text.push(...n.text);if(n.children&&n.children.length){if(e.children.length!=n.children.length)throw new Gn.b("ui-template-extend-children-mismatch: The number of children in extended definition does not match.",e);let i=0;for(const o of n.children)t(e.children[i++],o)}}(t,Pl(Cl(e)))}_renderNode(t){let e;if(e=t.node?this.tag&&this.text:this.tag?this.text:!this.text)throw new Gn.b('ui-template-wrong-syntax: Node definition must have either "tag" or "text" when rendering a new Node.',this);return this.text?this._renderText(t):this._renderElement(t)}_renderElement(t){let e=t.node;return e||(e=t.node=document.createElementNS(this.ns||bl,this.tag)),this._renderAttributes(t),this._renderElementChildren(t),this._setUpListeners(t),e}_renderText(t){let e=t.node;return e?t.revertData.text=e.textContent:e=t.node=document.createTextNode(""),yl(this.text)?this._bindToObservable({schema:this.text,updater:function(t){return{set(e){t.textContent=e},remove(){t.textContent=""}}}(e),data:t}):e.textContent=this.text.join(""),e}_renderAttributes(t){let e,n,i,o;if(!this.attributes)return;const r=t.node,s=t.revertData;for(e in this.attributes)if(i=r.getAttribute(e),n=this.attributes[e],s&&(s.attributes[e]=i),o=B(n[0])&&n[0].ns?n[0].ns:null,yl(n)){const a=o?n[0].value:n;s&&Dl(e)&&a.unshift(i),this._bindToObservable({schema:a,updater:Al(r,e,o),data:t})}else"style"==e&&"string"!=typeof n[0]?this._renderStyleAttribute(n[0],t):(s&&i&&Dl(e)&&n.unshift(i),Il(n=n.map(t=>t&&t.value||t).reduce((t,e)=>t.concat(e),[]).reduce(Ml,""))||r.setAttributeNS(o,e,n))}_renderStyleAttribute(t,e){const n=e.node;for(const i in t){const o=t[i];yl(o)?this._bindToObservable({schema:[o],updater:Tl(n,i),data:e}):n.style[i]=o}}_renderElementChildren(t){const e=t.node,n=t.intoFragment?document.createDocumentFragment():e,i=t.isApplying;let o=0;for(const r of this.children)if(Rl(r)){if(!i){r.setParent(e);for(const t of r)n.appendChild(t.element)}}else if(Nl(r))i||(r.isRendered||r.render(),n.appendChild(r.element));else if(Ko(r))n.appendChild(r);else if(i){const e={children:[],bindings:[],attributes:{}};t.revertData.children.push(e),r._renderNode({node:n.childNodes[o++],isApplying:!0,revertData:e})}else n.appendChild(r.render());t.intoFragment&&e.appendChild(n)}_setUpListeners(t){if(this.eventListeners)for(const e in this.eventListeners){const n=this.eventListeners[e].map(n=>{const[i,o]=e.split("@");return n.activateDomEventListener(i,o,t)});t.revertData&&t.revertData.bindings.push(n)}}_bindToObservable({schema:t,updater:e,data:n}){const i=n.revertData;xl(t,e,n);const o=t.filter(t=>!Il(t)).filter(t=>t.observable).map(i=>i.activateAttributeListener(t,e,n));i&&i.bindings.push(o)}_revertTemplateFromNode(t,e){for(const t of e.bindings)for(const e of t)e();if(e.text)t.textContent=e.text;else{for(const n in e.attributes){const i=e.attributes[n];null===i?t.removeAttribute(n):t.setAttribute(n,i)}for(let n=0;nxl(t,e,n);return this.emitter.listenTo(this.observable,"change:"+this.attribute,i),()=>{this.emitter.stopListening(this.observable,"change:"+this.attribute,i)}}}class _l extends kl{activateDomEventListener(t,e,n){const i=(t,n)=>{e&&!n.target.matches(e)||("function"==typeof this.eventNameOrFunction?this.eventNameOrFunction(n):this.observable.fire(this.eventNameOrFunction,n))};return this.emitter.listenTo(n.node,t,i),()=>{this.emitter.stopListening(n.node,t,i)}}}class vl extends kl{getValue(t){return!Il(super.getValue(t))&&(this.valueIfTrue||!0)}}function yl(t){return!!t&&(t.value&&(t=t.value),Array.isArray(t)?t.some(yl):t instanceof kl)}function xl(t,e,{node:n}){let i=function(t,e){return t.map(t=>t instanceof kl?t.getValue(e):t)}(t,n);Il(i=1==t.length&&t[0]instanceof vl?i[0]:i.reduce(Ml,""))?e.remove():e.set(i)}function Al(t,e,n){return{set(i){t.setAttributeNS(n,e,i)},remove(){t.removeAttributeNS(n,e)}}}function Tl(t,e){return{set(n){t.style[e]=n},remove(){t.style[e]=null}}}function Cl(t){return qn(t,t=>{if(t&&(t instanceof kl||Ol(t)||Nl(t)||Rl(t)))return t})}function Pl(t){if("string"==typeof t?t=function(t){return{text:[t]}}(t):t.text&&function(t){Array.isArray(t.text)||(t.text=[t.text])}(t),t.on&&(t.eventListeners=function(t){for(const e in t)Sl(t,e);return t}(t.on),delete t.on),!t.text){t.attributes&&function(t){for(const e in t)t[e].value&&(t[e].value=[].concat(t[e].value)),Sl(t,e)}(t.attributes);const e=[];if(t.children)if(Rl(t.children))e.push(t.children);else for(const n of t.children)Ol(n)||Nl(n)||Ko(n)?e.push(n):e.push(new wl(n));t.children=e}return t}function Sl(t,e){Array.isArray(t[e])||(t[e]=[t[e]])}function Ml(t,e){return Il(e)?t:Il(t)?e:`${t} ${e}`}function El(t,e){for(const n in e)t[n]?t[n].push(...e[n]):t[n]=e[n]}function Il(t){return!t&&0!==t}function Nl(t){return t instanceof Ll}function Ol(t){return t instanceof wl}function Rl(t){return t instanceof pl}function Dl(t){return"class"==t||"style"==t}n(16);class Ll{constructor(t){this.element=null,this.isRendered=!1,this.locale=t,this.t=t&&t.t,this._viewCollections=new oo,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",(e,n)=>{n.locale=t}),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=wl.bind(this,this)}createCollection(){const t=new pl;return this._viewCollections.add(t),t}registerChild(t){pi(t)||(t=[t]);for(const e of t)this._unboundChildren.add(e)}deregisterChild(t){pi(t)||(t=[t]);for(const e of t)this._unboundChildren.remove(e)}setTemplate(t){this.template=new wl(t)}extendTemplate(t){wl.extend(this.template,t)}render(){if(this.isRendered)throw new Gn.b("ui-view-render-already-rendered: This View has already been rendered.",this);this.template&&(this.element=this.template.render(),this.registerChild(this.template.getViews())),this.isRendered=!0}destroy(){this.stopListening(),this._viewCollections.map(t=>t.destroy()),this.template&&this.template._revertData&&this.template.revert(this.element)}}ci(Ll,cr),ci(Ll,Fi);n(18);class jl extends Ll{constructor(t){super(t),this.body=this.createCollection()}render(){super.render(),this._renderBodyCollection()}destroy(){return this._bodyCollectionContainer.remove(),super.destroy()}_renderBodyCollection(){const t=this.locale,e=this._bodyCollectionContainer=new wl({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:t.uiLanguageDirection},children:this.body}).render();document.body.appendChild(e)}}n(20);class Vl extends Ll{constructor(t){super(t),this.set("text"),this.set("for");const e=this.bindTemplate;this.setTemplate({tag:"label",attributes:{class:["ck","ck-label"],for:e.to("for")},children:[{text:e.to("text")}]})}}class zl extends jl{constructor(t){super(t);const e=Jn();this.top=this.createCollection(),this.main=this.createCollection(),this._voiceLabelView=this._createVoiceLabel(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-editor","ck-rounded-corners"],role:"application",dir:t.uiLanguageDirection,lang:t.uiLanguage,"aria-labelledby":`ck-editor__aria-label_${e}`},children:[this._voiceLabelView,{tag:"div",attributes:{class:["ck","ck-editor__top","ck-reset_all"],role:"presentation"},children:this.top},{tag:"div",attributes:{class:["ck","ck-editor__main"],role:"presentation"},children:this.main}]})}_createVoiceLabel(t){const e=this.t,n=new Vl;return n.text=e("bi"),n.extendTemplate({attributes:{id:`ck-editor__aria-label_${t}`,class:"ck-voice-label"}}),n}}class Bl extends Ll{constructor(t,e,n){super(t),this.setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:t.contentLanguage,dir:t.contentLanguageDirection}}),this.name=null,this.set("isFocused",!1),this._editableElement=n,this._hasExternalElement=!!this._editableElement,this._editingView=e}render(){super.render(),this._hasExternalElement?this.template.apply(this.element=this._editableElement):this._editableElement=this.element,this.on("change:isFocused",()=>this._updateIsFocusedClasses()),this._updateIsFocusedClasses()}destroy(){this._hasExternalElement&&this.template.revert(this._editableElement),super.destroy()}_updateIsFocusedClasses(){const t=this._editingView;function e(e){t.change(n=>{const i=t.document.getRoot(e.name);n.addClass(e.isFocused?"ck-focused":"ck-blurred",i),n.removeClass(e.isFocused?"ck-blurred":"ck-focused",i)})}t.isRenderingInProgress?function n(i){t.once("change:isRenderingInProgress",(t,o,r)=>{r?n(i):e(i)})}(this):e(this)}}class Fl extends Bl{constructor(t,e,n){super(t,e,n),this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}})}render(){super.render();const t=this._editingView,e=this.t;t.change(n=>{const i=t.document.getRoot(this.name);n.setAttribute("aria-label",e("bu",[this.name]),i)})}}function Ul(t){return e=>e+t}n(22);const Hl=Ul("px");class ql extends Ll{constructor(t){super(t);const e=this.bindTemplate;this.set("isActive",!1),this.set("isSticky",!1),this.set("limiterElement",null),this.set("limiterBottomOffset",50),this.set("viewportTopOffset",0),this.set("_marginLeft",null),this.set("_isStickyToTheLimiter",!1),this.set("_hasViewportTopOffset",!1),this.content=this.createCollection(),this._contentPanelPlaceholder=new wl({tag:"div",attributes:{class:["ck","ck-sticky-panel__placeholder"],style:{display:e.to("isSticky",t=>t?"block":"none"),height:e.to("isSticky",t=>t?Hl(this._panelRect.height):null)}}}).render(),this._contentPanel=new wl({tag:"div",attributes:{class:["ck","ck-sticky-panel__content",e.if("isSticky","ck-sticky-panel__content_sticky"),e.if("_isStickyToTheLimiter","ck-sticky-panel__content_sticky_bottom-limit")],style:{width:e.to("isSticky",t=>t?Hl(this._contentPanelPlaceholder.getBoundingClientRect().width):null),top:e.to("_hasViewportTopOffset",t=>t?Hl(this.viewportTopOffset):null),bottom:e.to("_isStickyToTheLimiter",t=>t?Hl(this.limiterBottomOffset):null),marginLeft:e.to("_marginLeft")}},children:this.content}).render(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-sticky-panel"]},children:[this._contentPanelPlaceholder,this._contentPanel]})}render(){super.render(),this._checkIfShouldBeSticky(),this.listenTo(tr.window,"scroll",()=>{this._checkIfShouldBeSticky()}),this.listenTo(this,"change:isActive",()=>{this._checkIfShouldBeSticky()})}_checkIfShouldBeSticky(){const t=this._panelRect=this._contentPanel.getBoundingClientRect();let e;this.limiterElement?(e=this._limiterRect=this.limiterElement.getBoundingClientRect(),this.isSticky=this.isActive&&e.top{this[e](),n()})}}get first(){return this.focusables.find(Yl)||null}get last(){return this.focusables.filter(Yl).slice(-1)[0]||null}get next(){return this._getFocusableItem(1)}get previous(){return this._getFocusableItem(-1)}get current(){let t=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find((e,n)=>{const i=e.element===this.focusTracker.focusedElement;return i&&(t=n),i}),t)}focusFirst(){this._focus(this.first)}focusLast(){this._focus(this.last)}focusNext(){this._focus(this.next)}focusPrevious(){this._focus(this.previous)}_focus(t){t&&t.focus()}_getFocusableItem(t){const e=this.current,n=this.focusables.length;if(!n)return null;if(null===e)return this[1===t?"first":"last"];let i=(e+n+t)%n;do{const e=this.focusables.get(i);if(Yl(e))return e;i=(i+n+t)%n}while(i!==e);return null}}function Yl(t){return!(!t.focus||"none"==tr.window.getComputedStyle(t.element).display)}class $l extends Ll{constructor(t){super(t),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}const Gl=100;class Ql{constructor(t){this._callback=t,this._elements=new Set,this._previousRects=new Map,this._periodicCheckTimeout=null}observe(t){this._elements.add(t),1===this._elements.size&&this._startPeriodicCheck()}unobserve(t){this._elements.delete(t),this._previousRects.delete(t),this._elements.size||this._stopPeriodicCheck()}disconnect(){this._elements.forEach(t=>this.unobserve(t))}_startPeriodicCheck(){const t=()=>{this._checkElementRectsAndExecuteCallback(),this._periodicCheckTimeout=setTimeout(t,Gl)};this.listenTo(tr.window,"resize",()=>{this._checkElementRectsAndExecuteCallback()}),t()}_stopPeriodicCheck(){clearTimeout(this._periodicCheckTimeout),this.stopListening(),this._previousRects.clear()}_checkElementRectsAndExecuteCallback(){const t=[];for(const e of this._elements)this._hasRectChanged(e)&&t.push({target:e,contentRect:this._previousRects.get(e)});t.length&&this._callback(t)}_hasRectChanged(t){if(!t.ownerDocument.body.contains(t))return!1;const e=new xs(t),n=this._previousRects.get(t),i=!n||!n.isEqual(e);return this._previousRects.set(t,e),i}}ci(Ql,cr);class Kl extends Ll{constructor(t){super(t);const e=this.bindTemplate;this.set("isVisible",!1),this.set("position","se"),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-dropdown__panel",e.to("position",t=>`ck-dropdown__panel_${t}`),e.if("isVisible","ck-dropdown__panel-visible")]},children:this.children,on:{selectstart:e.to(t=>t.preventDefault())}})}focus(){this.children.length&&this.children.first.focus()}focusLast(){if(this.children.length){const t=this.children.last;"function"==typeof t.focusLast?t.focusLast():t.focus()}}}n(24);function Jl({element:t,target:e,positions:n,limiter:i,fitInViewport:o}){W(e)&&(e=e()),W(i)&&(i=i());const r=function(t){for(;t&&"html"!=t.tagName.toLowerCase();){if("static"!=tr.window.getComputedStyle(t).position)return t;t=t.parentElement}return null}(t.parentElement),s=new xs(t),a=new xs(e);let c,l;if(i||o){const t=i&&new xs(i).getVisible(),e=o&&new xs(tr.window);[l,c]=function(t,e,n,i,o){let r,s,a=0,c=0;const l=n.getArea();return t.some(t=>{const[d,h]=Zl(t,e,n);let u,f;if(i)if(o){const t=i.getIntersection(o);u=t?t.getIntersectionArea(h):0}else u=i.getIntersectionArea(h);function g(){c=f,a=u,r=h,s=d}return o&&(f=o.getIntersectionArea(h)),o&&!i?f>c&&g():!o&&i?u>a&&g():f>c&&u>=a?g():f>=c&&u>a&&g(),u===l}),r?[s,r]:null}(n,a,s,t,e)||Zl(n[0],a,s)}else[l,c]=Zl(n[0],a,s);let{left:d,top:h}=Xl(c);if(r){const t=Xl(new xs(r)),e=vs(r);d-=t.left,h-=t.top,d+=r.scrollLeft,h+=r.scrollTop,d-=e.left,h-=e.top}return{left:d,top:h,name:l}}function Zl(t,e,n){const{left:i,top:o,name:r}=t(e,n);return[r,n.clone().moveTo(i,o)]}function Xl({left:t,top:e}){const{scrollX:n,scrollY:i}=tr.window;return{left:t+n,top:e+i}}class td extends Ll{constructor(t,e,n){super(t);const i=this.bindTemplate;this.buttonView=e,this.panelView=n,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("class"),this.set("panelPosition","auto"),this.focusTracker=new al,this.keystrokes=new Zc,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",i.to("class"),i.if("isEnabled","ck-disabled",t=>!t)]},children:[e,n]}),e.extendTemplate({attributes:{class:["ck-dropdown__button"]}})}render(){super.render(),this.listenTo(this.buttonView,"open",()=>{this.isOpen=!this.isOpen}),this.panelView.bind("isVisible").to(this,"isOpen"),this.on("change:isOpen",()=>{this.isOpen&&("auto"===this.panelPosition?this.panelView.position=td._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions}).name:this.panelView.position=this.panelPosition)}),this.keystrokes.listenTo(this.element),this.focusTracker.add(this.element);const t=(t,e)=>{this.isOpen&&(this.buttonView.focus(),this.isOpen=!1,e())};this.keystrokes.set("arrowdown",(t,e)=>{this.buttonView.isEnabled&&!this.isOpen&&(this.isOpen=!0,e())}),this.keystrokes.set("arrowright",(t,e)=>{this.isOpen&&e()}),this.keystrokes.set("arrowleft",t),this.keystrokes.set("esc",t)}focus(){this.buttonView.focus()}get _panelPositions(){const{southEast:t,southWest:e,northEast:n,northWest:i}=td.defaultPanelPositions;return"ltr"===this.locale.uiLanguageDirection?[t,e,n,i]:[e,t,i,n]}}td.defaultPanelPositions={southEast:t=>({top:t.bottom,left:t.left,name:"se"}),southWest:(t,e)=>({top:t.bottom,left:t.left-e.width+t.width,name:"sw"}),northEast:(t,e)=>({top:t.top-e.height,left:t.left,name:"ne"}),northWest:(t,e)=>({top:t.bottom-e.height,left:t.left-e.width+t.width,name:"nw"})},td._getOptimalPosition=Jl;n(26);class ed extends Ll{constructor(){super();const t=this.bindTemplate;this.set("content",""),this.set("viewBox","0 0 20 20"),this.set("fillColor",""),this.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon"],viewBox:t.to("viewBox")}})}render(){super.render(),this._updateXMLContent(),this._colorFillPaths(),this.on("change:content",()=>{this._updateXMLContent(),this._colorFillPaths()}),this.on("change:fillColor",()=>{this._colorFillPaths()})}_updateXMLContent(){if(this.content){const t=(new DOMParser).parseFromString(this.content.trim(),"image/svg+xml").querySelector("svg"),e=t.getAttribute("viewBox");for(e&&(this.viewBox=e),this.element.innerHTML="";t.childNodes.length>0;)this.element.appendChild(t.childNodes[0])}}_colorFillPaths(){this.fillColor&&this.element.querySelectorAll(".ck-icon__fill").forEach(t=>{t.style.fill=this.fillColor})}}n(28);class nd extends Ll{constructor(t){super(t),this.set("text",""),this.set("position","s");const e=this.bindTemplate;this.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip",e.to("position",t=>"ck-tooltip_"+t),e.if("text","ck-hidden",t=>!t.trim())]},children:[{tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:e.to("text")}]}]})}}n(30);class id extends Ll{constructor(t){super(t);const e=this.bindTemplate,n=Jn();this.set("class"),this.set("labelStyle"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isVisible",!0),this.set("isToggleable",!1),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.children=this.createCollection(),this.tooltipView=this._createTooltipView(),this.labelView=this._createLabelView(n),this.iconView=new ed,this.iconView.extendTemplate({attributes:{class:"ck-button__icon"}}),this.bind("_tooltipString").to(this,"tooltip",this,"label",this,"keystroke",this._getTooltipString.bind(this)),this.setTemplate({tag:"button",attributes:{class:["ck","ck-button",e.to("class"),e.if("isEnabled","ck-disabled",t=>!t),e.if("isVisible","ck-hidden",t=>!t),e.to("isOn",t=>t?"ck-on":"ck-off"),e.if("withText","ck-button_with-text")],type:e.to("type",t=>t||"button"),tabindex:e.to("tabindex"),"aria-labelledby":`ck-editor__aria-label_${n}`,"aria-disabled":e.if("isEnabled",!0,t=>!t),"aria-pressed":e.to("isOn",t=>!!this.isToggleable&&String(t))},children:this.children,on:{mousedown:e.to(t=>{t.preventDefault()}),click:e.to(t=>{this.isEnabled?this.fire("execute"):t.preventDefault()})}})}render(){super.render(),this.icon&&(this.iconView.bind("content").to(this,"icon"),this.children.add(this.iconView)),this.children.add(this.tooltipView),this.children.add(this.labelView)}focus(){this.element.focus()}_createTooltipView(){const t=new nd;return t.bind("text").to(this,"_tooltipString"),t.bind("position").to(this,"tooltipPosition"),t}_createLabelView(t){const e=new Ll,n=this.bindTemplate;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:n.to("labelStyle"),id:`ck-editor__aria-label_${t}`},children:[{text:this.bindTemplate.to("label")}]}),e}_getTooltipString(t,e,n){return t?"string"==typeof t?t:(n&&(n=function(t){return go.isMac?_o(t).map(t=>po[t.toLowerCase()]||t).reduce((t,e)=>t.slice(-1)in mo?t+e:t+"+"+e):t}(n)),t instanceof Function?t(e,n):`${e}${n?` (${n})`:""}`):""}}var od='';class rd extends id{constructor(t){super(t),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const t=new ed;return t.content=od,t.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),t}}n(32);class sd extends Ll{constructor(){super(),this.items=this.createCollection(),this.focusTracker=new al,this.keystrokes=new Zc,this._focusCycler=new Wl({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"]},children:this.items})}render(){super.render();for(const t of this.items)this.focusTracker.add(t.element);this.items.on("add",(t,e)=>{this.focusTracker.add(e.element)}),this.items.on("remove",(t,e)=>{this.focusTracker.remove(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}class ad extends Ll{constructor(t){super(t),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item"]},children:this.children})}focus(){this.children.first.focus()}}class cd extends Ll{constructor(t){super(t),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}n(34);class ld extends id{constructor(t){super(t),this.isToggleable=!0,this.toggleSwitchView=this._createToggleView(),this.extendTemplate({attributes:{class:"ck-switchbutton"}})}render(){super.render(),this.children.add(this.toggleSwitchView)}_createToggleView(){const t=new Ll;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),t}}function dd({emitter:t,activator:e,callback:n,contextElements:i}){t.listenTo(document,"mousedown",(t,{target:o})=>{if(e()){for(const t of i)if(t.contains(o))return;n()}})}n(36),n(38);function hd(t,e=rd){const n=new e(t),i=new Kl(t),o=new td(t,n,i);return n.bind("isEnabled").to(o),n instanceof rd?n.bind("isOn").to(o,"isOpen"):n.arrowView.bind("isOn").to(o,"isOpen"),function(t){(function(t){t.on("render",()=>{dd({emitter:t,activator:()=>t.isOpen,callback:()=>{t.isOpen=!1},contextElements:[t.element]})})})(t),function(t){t.on("execute",e=>{e.source instanceof ld||(t.isOpen=!1)})}(t),function(t){t.keystrokes.set("arrowdown",(e,n)=>{t.isOpen&&(t.panelView.focus(),n())}),t.keystrokes.set("arrowup",(e,n)=>{t.isOpen&&(t.panelView.focusLast(),n())})}(t)}(o),o}function ud(t,e){const n=t.locale,i=t.listView=new sd(n);i.items.bindTo(e).using(({type:t,model:e})=>{if("separator"===t)return new cd(n);if("button"===t||"switchbutton"===t){const i=new ad(n);let o;return(o="button"===t?new id(n):new ld(n)).bind(...Object.keys(e)).to(e),o.delegate("execute").to(i),i.children.add(o),i}}),t.panelView.children.add(i),i.items.delegate("execute").to(t)}var fd='\n';n(40);class gd extends Ll{constructor(t,e){super(t);const n=this.bindTemplate,i=this.t;this.options=e||{},this.set("ariaLabel",i("bo")),this.items=this.createCollection(),this.focusTracker=new al,this.keystrokes=new Zc,this.set("class"),this.itemsView=new md(t),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection(),this._focusCycler=new Wl({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:["arrowleft","arrowup"],focusNext:["arrowright","arrowdown"]}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar",n.to("class")],role:"toolbar","aria-label":n.to("ariaLabel")},children:this.children,on:{mousedown:function(t){return t.bindTemplate.to(e=>{e.target===t.element&&e.preventDefault()})}(this)}}),this._behavior=this.options.shouldGroupWhenFull?new bd(this):new pd(this)}render(){super.render();for(const t of this.items)this.focusTracker.add(t.element);this.items.on("add",(t,e)=>{this.focusTracker.add(e.element)}),this.items.on("remove",(t,e)=>{this.focusTracker.remove(e.element)}),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(t,e){t.map(t=>{"|"==t?this.items.add(new $l):e.has(t)?this.items.add(e.create(t)):console.warn(Object(Gn.a)("toolbarview-item-unavailable: The requested toolbar item is unavailable."),{name:t})})}}class md extends Ll{constructor(t){super(t),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class pd{constructor(t){const e=t.bindTemplate;t.set("isVertical",!1),t.itemsView.children.bindTo(t.items).using(t=>t),t.focusables.bindTo(t.items).using(t=>t),t.extendTemplate({attributes:{class:[e.if("isVertical","ck-toolbar_vertical")]}})}render(){}destroy(){}}class bd{constructor(t){this.viewChildren=t.children,this.viewFocusables=t.focusables,this.viewItemsView=t.itemsView,this.viewFocusTracker=t.focusTracker,this.viewLocale=t.locale,this.ungroupedItems=t.createCollection(),this.groupedItems=t.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),this.resizeObserver=null,this.cachedPadding=null,t.itemsView.children.bindTo(this.ungroupedItems).using(t=>t),this.ungroupedItems.on("add",this._updateFocusCycleableItems.bind(this)),this.ungroupedItems.on("remove",this._updateFocusCycleableItems.bind(this)),t.children.on("add",this._updateFocusCycleableItems.bind(this)),t.children.on("remove",this._updateFocusCycleableItems.bind(this)),t.items.on("add",(t,e,n)=>{n>this.ungroupedItems.length?this.groupedItems.add(e,n-this.ungroupedItems.length):this.ungroupedItems.add(e,n),this._updateGrouping()}),t.items.on("remove",(t,e,n)=>{n>this.ungroupedItems.length?this.groupedItems.remove(e):this.ungroupedItems.remove(e),this._updateGrouping()}),t.extendTemplate({attributes:{class:["ck-toolbar_grouping"]}})}render(t){this.viewElement=t.element,this._enableGroupingOnResize()}destroy(){this.groupedItemsDropdown.destroy(),this.resizeObserver.disconnect()}_updateGrouping(){if(!this.viewElement.ownerDocument.body.contains(this.viewElement))return;let t;for(;this._areItemsOverflowing;)this._groupLastItem(),t=!0;if(!t&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}}get _areItemsOverflowing(){if(!this.ungroupedItems.length)return!1;const t=this.viewElement,e=this.viewLocale.uiLanguageDirection,n=new xs(t.lastChild),i=new xs(t);if(!this.cachedPadding){const n=tr.window.getComputedStyle(t),i="ltr"===e?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(n[i])}return"ltr"===e?n.right>i.right-this.cachedPadding:n.left{t&&t===e.contentRect.width||(this._updateGrouping(),t=e.contentRect.width)}),this.resizeObserver.observe(this.viewElement),this._updateGrouping()}_groupLastItem(){this.groupedItems.length||(this.viewChildren.add(new $l),this.viewChildren.add(this.groupedItemsDropdown),this.viewFocusTracker.add(this.groupedItemsDropdown.element)),this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last),0)}_ungroupFirstItem(){this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),this.groupedItems.length||(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last),this.viewFocusTracker.remove(this.groupedItemsDropdown.element))}_createGroupedItemsDropdown(){const t=this.viewLocale,e=t.t,n=hd(t);return n.class="ck-toolbar__grouped-dropdown",n.panelPosition="ltr"===t.uiLanguageDirection?"sw":"se",function(t,e){const n=t.locale,i=n.t,o=t.toolbarView=new gd(n);o.set("ariaLabel",i("bq")),t.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),e.map(t=>o.items.add(t)),t.panelView.children.add(o),o.items.delegate("execute").to(t)}(n,[]),n.buttonView.set({label:e("bp"),tooltip:!0,icon:fd}),n.toolbarView.items.bindTo(this.groupedItems).using(t=>t),n}_updateFocusCycleableItems(){this.viewFocusables.clear(),this.ungroupedItems.map(t=>{this.viewFocusables.add(t)}),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}n(42);class wd extends zl{constructor(t,e){super(t),this.stickyPanel=new ql(t),this.toolbar=new gd(t,{shouldGroupWhenFull:!0}),this.editable=new Fl(t,e)}render(){super.render(),this.stickyPanel.content.add(this.toolbar),this.top.add(this.stickyPanel),this.main.add(this.editable)}}class kd extends tl{constructor(t,e){super(e),Wn(t)&&(this.sourceElement=t),this.data.processor=new ol,this.model.document.createRoot(),this.ui=new ml(this,new wd(this.locale,this.editing.view)),function(t){if(!W(t.updateSourceElement))throw new Gn.b("attachtoform-missing-elementapi-interface: Editor passed to attachToForm() must implement ElementApi.",t);const e=t.sourceElement;if(e&&"textarea"===e.tagName.toLowerCase()&&e.form){let n;const i=e.form,o=()=>t.updateSourceElement();W(i.submit)&&(n=i.submit,i.submit=(()=>{o(),n.apply(i)})),i.addEventListener("submit",o),t.on("destroy",()=>{i.removeEventListener("submit",o),n&&(i.submit=n)})}}(this)}destroy(){return this.sourceElement&&this.updateSourceElement(),this.ui.destroy(),super.destroy()}static create(t,e={}){return new Promise(n=>{const i=new this(t,e);n(i.initPlugins().then(()=>i.ui.init(Wn(t)?t:null)).then(()=>{if(!Wn(t)&&e.initialData)throw new Gn.b("editor-create-initial-data: The config.initialData option cannot be used together with initial data passed in Editor.create().",null);const n=e.initialData||function(t){return Wn(t)?function(t){return t instanceof HTMLTextAreaElement?t.value:t.innerHTML}(t):t}(t);return i.data.init(n)}).then(()=>i.fire("ready")).then(()=>i))})}}ci(kd,el),ci(kd,nl);class _d{constructor(t){this.editor=t}destroy(){this.stopListening()}}ci(_d,Fi);class vd{constructor(t){this.files=function(t){const e=t.files?Array.from(t.files):[],n=t.items?Array.from(t.items):[];if(e.length)return e;return n.filter(t=>"file"===t.kind).map(t=>t.getAsFile())}(t),this._native=t}get types(){return this._native.types}getData(t){return this._native.getData(t)}setData(t,e){this._native.setData(t,e)}}class yd extends Xr{constructor(t){super(t);const e=this.document;function n(t,n){n.preventDefault();const i=n.dropRange?[n.dropRange]:Array.from(e.selection.getRanges()),o=new Kn(e,"clipboardInput");e.fire(o,{dataTransfer:n.dataTransfer,targetRanges:i}),o.stop.called&&n.stopPropagation()}this.domEventType=["paste","copy","cut","drop","dragover"],this.listenTo(e,"paste",n,{priority:"low"}),this.listenTo(e,"drop",n,{priority:"low"})}onDomEvent(t){const e={dataTransfer:new vd(t.clipboardData?t.clipboardData:t.dataTransfer)};"drop"==t.type&&(e.dropRange=function(t,e){const n=e.target.ownerDocument,i=e.clientX,o=e.clientY;let r;n.caretRangeFromPoint&&n.caretRangeFromPoint(i,o)?r=n.caretRangeFromPoint(i,o):e.rangeParent&&((r=n.createRange()).setStart(e.rangeParent,e.rangeOffset),r.collapse(!0));return r?t.domConverter.domRangeToView(r):t.document.selection.getFirstRange()}(this.view,t)),this.fire(t.type,t,e)}}const xd=["figcaption","li"];class Ad extends _d{static get pluginName(){return"Clipboard"}init(){const t=this.editor,e=t.model.document,n=t.editing.view,i=n.document;function o(n,o){const r=o.dataTransfer;o.preventDefault();const s=t.data.toView(t.model.getSelectedContent(e.selection));i.fire("clipboardOutput",{dataTransfer:r,content:s,method:n.name})}this._htmlDataProcessor=new ol,n.addObserver(yd),this.listenTo(i,"clipboardInput",e=>{t.isReadOnly&&e.stop()},{priority:"highest"}),this.listenTo(i,"clipboardInput",(t,e)=>{const i=e.dataTransfer;let o="";i.getData("text/html")?o=function(t){return t.replace(/(\s+)<\/span>/g,(t,e)=>1==e.length?" ":e)}(i.getData("text/html")):i.getData("text/plain")&&(o=function(t){return(t=t.replace(//g,">").replace(/\n/g,"

").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).indexOf("

")>-1&&(t=`

${t}

`),t}(i.getData("text/plain"))),o=this._htmlDataProcessor.toView(o),this.fire("inputTransformation",{content:o,dataTransfer:i}),n.scrollToTheSelection()},{priority:"low"}),this.listenTo(this,"inputTransformation",(t,e)=>{if(!e.content.isEmpty){const t=this.editor.data,n=this.editor.model,i=t.toModel(e.content,"$clipboardHolder");if(0==i.childCount)return;n.insertContent(i)}},{priority:"low"}),this.listenTo(i,"copy",o,{priority:"low"}),this.listenTo(i,"cut",(e,n)=>{t.isReadOnly?n.preventDefault():o(e,n)},{priority:"low"}),this.listenTo(i,"clipboardOutput",(n,i)=>{i.content.isEmpty||(i.dataTransfer.setData("text/html",this._htmlDataProcessor.toData(i.content)),i.dataTransfer.setData("text/plain",function t(e){let n="";if(e.is("text")||e.is("textProxy"))n=e.data;else if(e.is("img")&&e.hasAttribute("alt"))n=e.getAttribute("alt");else{let i=null;for(const o of e.getChildren()){const e=t(o);i&&(i.is("containerElement")||o.is("containerElement"))&&(xd.includes(i.name)||xd.includes(o.name)?n+="\n":n+="\n\n"),n+=e,i=o}}return n}(i.content))),"cut"==i.method&&t.model.deleteContent(e.selection)},{priority:"low"})}}class Td{constructor(t){this.editor=t,this.set("value",void 0),this.set("isEnabled",!1),this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",()=>{this.refresh()}),this.on("execute",t=>{this.isEnabled||t.stop()},{priority:"high"}),this.listenTo(t,"change:isReadOnly",(t,e,n)=>{n?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})}refresh(){this.isEnabled=!0}forceDisabled(t){this._disableStack.add(t),1==this._disableStack.size&&(this.on("set:isEnabled",Cd,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(t){this._disableStack.delete(t),0==this._disableStack.size&&(this.off("set:isEnabled",Cd),this.refresh())}execute(){}destroy(){this.stopListening()}}function Cd(t){t.return=!1,t.stop()}function*Pd(t,e){for(const n of e)n&&t.getAttributeProperties(n[0]).copyOnEnter&&(yield n)}ci(Td,Fi);class Sd extends Td{execute(){const t=this.editor.model,e=t.document;t.change(n=>{!function(t,e,n,i){const o=n.isCollapsed,r=n.getFirstRange(),s=r.start.parent,a=r.end.parent;if(i.isLimit(s)||i.isLimit(a))return void(o||s!=a||t.deleteContent(n));if(o){const t=Pd(e.model.schema,n.getAttributes());Md(e,r.start),e.setSelectionAttribute(t)}else{const i=!(r.start.isAtStart&&r.end.isAtEnd),o=s==a;t.deleteContent(n,{leaveUnmerged:i}),i&&(o?Md(e,n.focus):e.setSelection(a,0))}}(this.editor.model,n,e.selection,t.schema),this.fire("afterExecute",{writer:n})})}}function Md(t,e){t.split(e),t.setSelection(e.parent.nextSibling,0)}class Ed extends hr{constructor(t){super(t);const e=this.document;e.on("keydown",(t,n)=>{if(this.isEnabled&&n.keyCode==bo.enter){let i;e.once("enter",t=>i=t,{priority:"highest"}),e.fire("enter",new Zr(e,n.domEvent,{isSoft:n.shiftKey})),i&&i.stop.called&&t.stop()}})}observe(){}}class Id extends _d{static get pluginName(){return"Enter"}init(){const t=this.editor,e=t.editing.view,n=e.document;e.addObserver(Ed),t.commands.add("enter",new Sd(t)),this.listenTo(n,"enter",(n,i)=>{i.preventDefault(),i.isSoft||(t.execute("enter"),e.scrollToTheSelection())},{priority:"low"})}}class Nd extends Td{execute(){const t=this.editor.model,e=t.document;t.change(n=>{!function(t,e,n){const i=n.isCollapsed,o=n.getFirstRange(),r=o.start.parent,s=o.end.parent,a=r==s;if(i){const i=Pd(t.schema,n.getAttributes());Od(e,o.end),e.removeSelectionAttribute(n.getAttributeKeys()),e.setSelectionAttribute(i)}else{const i=!(o.start.isAtStart&&o.end.isAtEnd);t.deleteContent(n,{leaveUnmerged:i}),a?Od(e,n.focus):i&&e.setSelection(s,0)}}(t,n,e.selection),this.fire("afterExecute",{writer:n})})}refresh(){const t=this.editor.model,e=t.document;this.isEnabled=function(t,e){if(e.rangeCount>1)return!1;const n=e.anchor;if(!n||!t.checkChild(n,"softBreak"))return!1;const i=e.getFirstRange(),o=i.start.parent,r=i.end.parent;if((Rd(o,t)||Rd(r,t))&&o!==r)return!1;return!0}(t.schema,e.selection)}}function Od(t,e){const n=t.createElement("softBreak");t.insert(n,e),t.setSelection(n,"after")}function Rd(t,e){return!t.is("rootElement")&&(e.isLimit(t)||Rd(t.parent,e))}class Dd extends _d{static get pluginName(){return"ShiftEnter"}init(){const t=this.editor,e=t.model.schema,n=t.conversion,i=t.editing.view,o=i.document;e.register("softBreak",{allowWhere:"$text",isInline:!0}),n.for("upcast").elementToElement({model:"softBreak",view:"br"}),n.for("downcast").elementToElement({model:"softBreak",view:(t,e)=>e.createEmptyElement("br")}),i.addObserver(Ed),t.commands.add("shiftEnter",new Nd(t)),this.listenTo(o,"enter",(e,n)=>{n.preventDefault(),n.isSoft&&(t.execute("shiftEnter"),i.scrollToTheSelection())},{priority:"low"})}}class Ld{constructor(t,e=20){this.model=t,this.size=0,this.limit=e,this.isLocked=!1,this._changeCallback=((t,e)=>{"transparent"!=e.type&&e!==this._batch&&this._reset(!0)}),this._selectionChangeCallback=(()=>{this._reset()}),this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch()),this._batch}input(t){this.size+=t,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(t){this.isLocked&&!t||(this._batch=null,this.size=0)}}class jd extends Td{constructor(t,e){super(t),this._buffer=new Ld(t.model,e),this._batches=new WeakSet}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(t={}){const e=this.editor.model,n=e.document,i=t.text||"",o=i.length,r=t.range||n.selection.getFirstRange(),s=t.resultRange;e.enqueueChange(this._buffer.batch,t=>{const a=r.isCollapsed;this._buffer.lock(),e.deleteContent(e.createSelection(r)),i&&e.insertContent(t.createText(i,n.selection.getAttributes()),r.start),s?t.setSelection(s):a&&t.setSelection(r.start.getShiftedBy(o)),this._buffer.unlock(),this._buffer.input(o),this._batches.add(this._buffer.batch)})}}function Vd(t){let e=null;const n=t.model,i=t.editing.view,o=t.commands.get("input");function r(t){const r=n.document,a=i.document.isComposing,c=e&&e.isEqual(r.selection);e=null,o.isEnabled&&(function(t){if(t.ctrlKey)return!0;return zd.includes(t.keyCode)}(t)||r.selection.isCollapsed||a&&229===t.keyCode||!a&&229===t.keyCode&&c||s())}function s(){const t=o.buffer;t.lock(),n.enqueueChange(t.batch,()=>{n.deleteContent(n.document.selection)}),t.unlock()}go.isAndroid?i.document.on("beforeinput",(t,e)=>r(e),{priority:"lowest"}):i.document.on("keydown",(t,e)=>r(e),{priority:"lowest"}),i.document.on("compositionstart",function(){const t=n.document,e=1!==t.selection.rangeCount||t.selection.getFirstRange().isFlat;if(t.selection.isCollapsed||e)return;s()},{priority:"lowest"}),i.document.on("compositionend",()=>{e=n.createSelection(n.document.selection)},{priority:"lowest"})}const zd=[wo("arrowUp"),wo("arrowRight"),wo("arrowDown"),wo("arrowLeft"),9,16,17,18,19,20,27,33,34,35,36,45,91,93,144,145,173,174,175,176,177,178,179,255];for(let t=112;t<=135;t++)zd.push(t);function Bd(t){if(t.newChildren.length-t.oldChildren.length!=1)return;const e=function(t,e){const n=[];let i,o=0;return t.forEach(t=>{"equal"==t?(r(),o++):"insert"==t?(s("insert")?i.values.push(e[o]):(r(),i={type:"insert",index:o,values:[e[o]]}),o++):s("delete")?i.howMany++:(r(),i={type:"delete",index:o,howMany:1})}),r(),n;function r(){i&&(n.push(i),i=null)}function s(t){return i&&i.type==t}}($o(t.oldChildren,t.newChildren,Fd),t.newChildren);if(e.length>1)return;const n=e[0];return n.values[0]&&n.values[0].is("text")?n:void 0}function Fd(t,e){return t&&t.is("text")&&e&&e.is("text")?t.data===e.data:t===e}class Ud{constructor(t){this.editor=t,this.editing=this.editor.editing}handle(t,e){if(function(t){if(0==t.length)return!1;for(const e of t)if("children"===e.type&&!Bd(e))return!0;return!1}(t))this._handleContainerChildrenMutations(t,e);else for(const n of t)this._handleTextMutation(n,e),this._handleTextNodeInsertion(n)}_handleContainerChildrenMutations(t,e){const n=function(t){const e=t.map(t=>t.node).reduce((t,e)=>t.getCommonAncestor(e,{includeSelf:!0}));if(!e)return;return e.getAncestors({includeSelf:!0,parentFirst:!0}).find(t=>t.is("containerElement")||t.is("rootElement"))}(t);if(!n)return;const i=this.editor.editing.view.domConverter.mapViewToDom(n),o=new or,r=this.editor.data.toModel(o.domToView(i)).getChild(0),s=this.editor.editing.mapper.toModelElement(n);if(!s)return;const a=Array.from(r.getChildren()),c=Array.from(s.getChildren()),l=a[a.length-1],d=c[c.length-1];l&&l.is("softBreak")&&d&&!d.is("softBreak")&&a.pop();const h=this.editor.model.schema;if(!Hd(a,h)||!Hd(c,h))return;const u=a.map(t=>t.is("text")?t.data:"@").join("").replace(/\u00A0/g," "),f=c.map(t=>t.is("text")?t.data:"@").join("").replace(/\u00A0/g," ");if(f===u)return;const g=$o(f,u),{firstChangeAt:m,insertions:p,deletions:b}=qd(g);let w=null;e&&(w=this.editing.mapper.toModelRange(e.getFirstRange()));const k=u.substr(m,p),_=this.editor.model.createRange(this.editor.model.createPositionAt(s,m),this.editor.model.createPositionAt(s,m+b));this.editor.execute("input",{text:k,range:_,resultRange:w})}_handleTextMutation(t,e){if("text"!=t.type)return;const n=t.newText.replace(/\u00A0/g," "),i=t.oldText.replace(/\u00A0/g," ");if(i===n)return;const o=$o(i,n),{firstChangeAt:r,insertions:s,deletions:a}=qd(o);let c=null;e&&(c=this.editing.mapper.toModelRange(e.getFirstRange()));const l=this.editing.view.createPositionAt(t.node,r),d=this.editing.mapper.toModelPosition(l),h=this.editor.model.createRange(d,d.getShiftedBy(a)),u=n.substr(r,s);this.editor.execute("input",{text:u,range:h,resultRange:c})}_handleTextNodeInsertion(t){if("children"!=t.type)return;const e=Bd(t),n=this.editing.view.createPositionAt(t.node,e.index),i=this.editing.mapper.toModelPosition(n),o=e.values[0].data;this.editor.execute("input",{text:o.replace(/\u00A0/g," "),range:this.editor.model.createRange(i)})}}function Hd(t,e){return t.every(t=>e.isInline(t))}function qd(t){let e=null,n=null;for(let i=0;i{new Ud(t).handle(n,i)})}(t)}isInput(t){return this.editor.commands.get("input")._batches.has(t)}}class Yd extends Td{constructor(t,e){super(t),this.direction=e,this._buffer=new Ld(t.model,t.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(t={}){const e=this.editor.model,n=e.document;e.enqueueChange(this._buffer.batch,i=>{this._buffer.lock();const o=i.createSelection(t.selection||n.selection),r=o.isCollapsed;if(o.isCollapsed&&e.modifySelection(o,{direction:this.direction,unit:t.unit}),this._shouldEntireContentBeReplacedWithParagraph(t.sequence||1))return void this._replaceEntireContentWithParagraph(i);if(o.isCollapsed)return;let s=0;o.getFirstRange().getMinimalFlatRanges().forEach(t=>{s+=eo(t.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),e.deleteContent(o,{doNotResetEntireContent:r}),this._buffer.input(s),i.setSelection(o),this._buffer.unlock()})}_shouldEntireContentBeReplacedWithParagraph(t){if(t>1)return!1;const e=this.editor.model,n=e.document.selection,i=e.schema.getLimitElement(n);if(!(n.isCollapsed&&n.containsEntireContent(i)))return!1;if(!e.schema.checkChild(i,"paragraph"))return!1;const o=i.getChild(0);return!o||"paragraph"!==o.name}_replaceEntireContentWithParagraph(t){const e=this.editor.model,n=e.document.selection,i=e.schema.getLimitElement(n),o=t.createElement("paragraph");t.remove(t.createRangeIn(i)),t.insert(o,i),t.setSelection(o,0)}}class $d extends hr{constructor(t){super(t);const e=t.document;let n=0;function i(t,n,i){let o;e.once("delete",t=>o=t,{priority:Number.POSITIVE_INFINITY}),e.fire("delete",new Zr(e,n,i)),o&&o.stop.called&&t.stop()}e.on("keyup",(t,e)=>{e.keyCode!=bo.delete&&e.keyCode!=bo.backspace||(n=0)}),e.on("keydown",(t,e)=>{const o={};if(e.keyCode==bo.delete)o.direction="forward",o.unit="character";else{if(e.keyCode!=bo.backspace)return;o.direction="backward",o.unit="codePoint"}const r=go.isMac?e.altKey:e.ctrlKey;o.unit=r?"word":o.unit,o.sequence=++n,i(t,e.domEvent,o)}),go.isAndroid&&e.on("beforeinput",(e,n)=>{if("deleteContentBackward"!=n.domEvent.inputType)return;const o={unit:"codepoint",direction:"backward",sequence:1},r=n.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(o.selectionToRemove=t.domConverter.domSelectionToView(r)),i(e,n.domEvent,o)})}observe(){}}class Gd extends _d{static get pluginName(){return"Delete"}init(){const t=this.editor,e=t.editing.view,n=e.document;if(e.addObserver($d),t.commands.add("forwardDelete",new Yd(t,"forward")),t.commands.add("delete",new Yd(t,"backward")),this.listenTo(n,"delete",(n,i)=>{const o={unit:i.unit,sequence:i.sequence};if(i.selectionToRemove){const e=t.model.createSelection(),n=[];for(const e of i.selectionToRemove.getRanges())n.push(t.editing.mapper.toModelRange(e));e.setTo(n),o.selection=e}t.execute("forward"==i.direction?"forwardDelete":"delete",o),i.preventDefault(),e.scrollToTheSelection()}),go.isAndroid){let t=null;this.listenTo(n,"delete",(e,n)=>{const i=n.domTarget.ownerDocument.defaultView.getSelection();t={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}},{priority:"lowest"}),this.listenTo(n,"keyup",(e,n)=>{if(t){const e=n.domTarget.ownerDocument.defaultView.getSelection();e.collapse(t.anchorNode,t.anchorOffset),e.extend(t.focusNode,t.focusOffset),t=null}})}}}class Qd extends _d{static get requires(){return[Wd,Gd]}static get pluginName(){return"Typing"}}class Kd extends Za{get type(){return"noop"}clone(){return new Kd(this.baseVersion)}getReversed(){return new Kd(this.baseVersion+1)}_execute(){}static get className(){return"NoOperation"}}const Jd=new Map;function Zd(t,e,n){let i=Jd.get(t);i||(i=new Map,Jd.set(t,i)),i.set(e,n)}function Xd(t){return[t]}function th(t,e,n={}){const i=function(t,e){const n=Jd.get(t);return n&&n.has(e)?n.get(e):Xd}(t.constructor,e.constructor);try{return i(t=t.clone(),e,n)}catch(t){throw t}}function eh(t,e,n){t=t.slice(),e=e.slice();const i=new nh(n.document,n.useRelations,n.forceWeakRemove);i.setOriginalOperations(t),i.setOriginalOperations(e);const o=i.originalOperations;if(0==t.length||0==e.length)return{operationsA:t,operationsB:e,originalOperations:o};const r=new WeakMap;for(const e of t)r.set(e,0);const s={nextBaseVersionA:t[t.length-1].baseVersion+1,nextBaseVersionB:e[e.length-1].baseVersion+1,originalOperationsACount:t.length,originalOperationsBCount:e.length};let a=0;for(;a{if(t.key===e.key){const i=t.range.getDifference(e.range).map(e=>new cc(e,t.key,t.oldValue,t.newValue,0)),o=t.range.getIntersection(e.range);return o&&n.aIsStrong&&i.push(new cc(o,e.key,e.newValue,t.newValue,0)),0==i.length?[new Kd(0)]:i}return[t]}),Zd(cc,hc,(t,e)=>{if(t.range.start.hasSameParentAs(e.position)&&t.range.containsPosition(e.position)){const n=t.range._getTransformedByInsertion(e.position,e.howMany,!e.shouldReceiveAttributes).map(e=>new cc(e,t.key,t.oldValue,t.newValue,t.baseVersion));if(e.shouldReceiveAttributes){const i=rh(e,t.key,t.oldValue);i&&n.unshift(i)}return n}return t.range=t.range._getTransformedByInsertion(e.position,e.howMany,!1)[0],[t]}),Zd(cc,mc,(t,e)=>{const n=[];t.range.start.hasSameParentAs(e.deletionPosition)&&(t.range.containsPosition(e.deletionPosition)||t.range.start.isEqual(e.deletionPosition))&&n.push($s._createFromPositionAndShift(e.graveyardPosition,1));const i=t.range._getTransformedByMergeOperation(e);return i.isCollapsed||n.push(i),n.map(e=>new cc(e,t.key,t.oldValue,t.newValue,t.baseVersion))}),Zd(cc,dc,(t,e)=>{return function(t,e){const n=$s._createFromPositionAndShift(e.sourcePosition,e.howMany);let i=null,o=[];n.containsRange(t,!0)?i=t:t.start.hasSameParentAs(n.start)?(o=t.getDifference(n),i=t.getIntersection(n)):o=[t];const r=[];for(let t of o){t=t._getTransformedByDeletion(e.sourcePosition,e.howMany);const n=e.getMovedRangeStart(),i=t.start.hasSameParentAs(n);t=t._getTransformedByInsertion(n,e.howMany,i),r.push(...t)}i&&r.push(i._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany,!1)[0]);return r}(t.range,e).map(e=>new cc(e,t.key,t.oldValue,t.newValue,t.baseVersion))}),Zd(cc,pc,(t,e)=>{if(t.range.end.isEqual(e.insertionPosition))return e.graveyardPosition||t.range.end.offset++,[t];if(t.range.start.hasSameParentAs(e.splitPosition)&&t.range.containsPosition(e.splitPosition)){const n=t.clone();return n.range=new $s(e.moveTargetPosition.clone(),t.range.end._getCombined(e.splitPosition,e.moveTargetPosition)),t.range.end=e.splitPosition.clone(),t.range.end.stickiness="toPrevious",[t,n]}return t.range=t.range._getTransformedBySplitOperation(e),[t]}),Zd(hc,cc,(t,e)=>{const n=[t];if(t.shouldReceiveAttributes&&t.position.hasSameParentAs(e.range.start)&&e.range.containsPosition(t.position)){const i=rh(t,e.key,e.newValue);i&&n.push(i)}return n}),Zd(hc,hc,(t,e,n)=>t.position.isEqual(e.position)&&n.aIsStrong?[t]:(t.position=t.position._getTransformedByInsertOperation(e),[t])),Zd(hc,dc,(t,e)=>(t.position=t.position._getTransformedByMoveOperation(e),[t])),Zd(hc,pc,(t,e)=>(t.position=t.position._getTransformedBySplitOperation(e),[t])),Zd(hc,mc,(t,e)=>(t.position=t.position._getTransformedByMergeOperation(e),[t])),Zd(uc,hc,(t,e)=>(t.oldRange&&(t.oldRange=t.oldRange._getTransformedByInsertOperation(e)[0]),t.newRange&&(t.newRange=t.newRange._getTransformedByInsertOperation(e)[0]),[t])),Zd(uc,uc,(t,e,n)=>{if(t.name==e.name){if(!n.aIsStrong)return[new Kd(0)];t.oldRange=e.newRange?e.newRange.clone():null}return[t]}),Zd(uc,mc,(t,e)=>(t.oldRange&&(t.oldRange=t.oldRange._getTransformedByMergeOperation(e)),t.newRange&&(t.newRange=t.newRange._getTransformedByMergeOperation(e)),[t])),Zd(uc,dc,(t,e,n)=>{if(t.oldRange&&(t.oldRange=$s._createFromRanges(t.oldRange._getTransformedByMoveOperation(e))),t.newRange){if(n.abRelation){const i=$s._createFromRanges(t.newRange._getTransformedByMoveOperation(e));if("left"==n.abRelation.side&&e.targetPosition.isEqual(t.newRange.start))return t.newRange.start.path=n.abRelation.path,t.newRange.end=i.end,[t];if("right"==n.abRelation.side&&e.targetPosition.isEqual(t.newRange.end))return t.newRange.start=i.start,t.newRange.end.path=n.abRelation.path,[t]}t.newRange=$s._createFromRanges(t.newRange._getTransformedByMoveOperation(e))}return[t]}),Zd(uc,pc,(t,e,n)=>{if(t.oldRange&&(t.oldRange=t.oldRange._getTransformedBySplitOperation(e)),t.newRange){if(n.abRelation){const i=t.newRange._getTransformedBySplitOperation(e);return t.newRange.start.isEqual(e.splitPosition)&&n.abRelation.wasStartBeforeMergedElement?t.newRange.start=Ys._createAt(e.insertionPosition):t.newRange.start.isEqual(e.splitPosition)&&!n.abRelation.wasInLeftElement&&(t.newRange.start=Ys._createAt(e.moveTargetPosition)),t.newRange.end.isEqual(e.splitPosition)&&n.abRelation.wasInRightElement?t.newRange.end=Ys._createAt(e.moveTargetPosition):t.newRange.end.isEqual(e.splitPosition)&&n.abRelation.wasEndBeforeMergedElement?t.newRange.end=Ys._createAt(e.insertionPosition):t.newRange.end=i.end,[t]}t.newRange=t.newRange._getTransformedBySplitOperation(e)}return[t]}),Zd(mc,hc,(t,e)=>(t.sourcePosition.hasSameParentAs(e.position)&&(t.howMany+=e.howMany),t.sourcePosition=t.sourcePosition._getTransformedByInsertOperation(e),t.targetPosition=t.targetPosition._getTransformedByInsertOperation(e),[t])),Zd(mc,mc,(t,e,n)=>{if(t.sourcePosition.isEqual(e.sourcePosition)&&t.targetPosition.isEqual(e.targetPosition)){if(n.bWasUndone){const n=e.graveyardPosition.path.slice();return n.push(0),t.sourcePosition=new Ys(e.graveyardPosition.root,n),t.howMany=0,[t]}return[new Kd(0)]}if(t.sourcePosition.isEqual(e.sourcePosition)&&!t.targetPosition.isEqual(e.targetPosition)&&!n.bWasUndone&&"splitAtSource"!=n.abRelation){const i="$graveyard"==t.targetPosition.root.rootName,o="$graveyard"==e.targetPosition.root.rootName;if(o&&!i||!(i&&!o)&&n.aIsStrong){const n=e.targetPosition._getTransformedByMergeOperation(e),i=t.targetPosition._getTransformedByMergeOperation(e);return[new dc(n,t.howMany,i,0)]}return[new Kd(0)]}return t.sourcePosition.hasSameParentAs(e.targetPosition)&&(t.howMany+=e.howMany),t.sourcePosition=t.sourcePosition._getTransformedByMergeOperation(e),t.targetPosition=t.targetPosition._getTransformedByMergeOperation(e),t.graveyardPosition.isEqual(e.graveyardPosition)&&n.aIsStrong||(t.graveyardPosition=t.graveyardPosition._getTransformedByMergeOperation(e)),[t]}),Zd(mc,dc,(t,e,n)=>{const i=$s._createFromPositionAndShift(e.sourcePosition,e.howMany);return"remove"==e.type&&!n.bWasUndone&&!n.forceWeakRemove&&t.deletionPosition.hasSameParentAs(e.sourcePosition)&&i.containsPosition(t.sourcePosition)?[new Kd(0)]:(t.sourcePosition.hasSameParentAs(e.targetPosition)&&(t.howMany+=e.howMany),t.sourcePosition.hasSameParentAs(e.sourcePosition)&&(t.howMany-=e.howMany),t.sourcePosition=t.sourcePosition._getTransformedByMoveOperation(e),t.targetPosition=t.targetPosition._getTransformedByMoveOperation(e),t.graveyardPosition.isEqual(e.targetPosition)||(t.graveyardPosition=t.graveyardPosition._getTransformedByMoveOperation(e)),[t])}),Zd(mc,pc,(t,e,n)=>{if(e.graveyardPosition&&(t.graveyardPosition=t.graveyardPosition._getTransformedByDeletion(e.graveyardPosition,1),t.deletionPosition.isEqual(e.graveyardPosition)&&(t.howMany=e.howMany)),t.targetPosition.isEqual(e.splitPosition)){const i=0!=e.howMany,o=e.graveyardPosition&&t.deletionPosition.isEqual(e.graveyardPosition);if(i||o||"mergeTargetNotMoved"==n.abRelation)return t.sourcePosition=t.sourcePosition._getTransformedBySplitOperation(e),[t]}if(t.sourcePosition.isEqual(e.splitPosition)){if("mergeSourceNotMoved"==n.abRelation)return t.howMany=0,t.targetPosition=t.targetPosition._getTransformedBySplitOperation(e),[t];if("mergeSameElement"==n.abRelation||t.sourcePosition.offset>0)return t.sourcePosition=e.moveTargetPosition.clone(),t.targetPosition=t.targetPosition._getTransformedBySplitOperation(e),[t]}return t.sourcePosition.hasSameParentAs(e.splitPosition)&&(t.howMany=e.splitPosition.offset),t.sourcePosition=t.sourcePosition._getTransformedBySplitOperation(e),t.targetPosition=t.targetPosition._getTransformedBySplitOperation(e),[t]}),Zd(dc,hc,(t,e)=>{const n=$s._createFromPositionAndShift(t.sourcePosition,t.howMany)._getTransformedByInsertOperation(e,!1)[0];return t.sourcePosition=n.start,t.howMany=n.end.offset-n.start.offset,t.targetPosition.isEqual(e.position)||(t.targetPosition=t.targetPosition._getTransformedByInsertOperation(e)),[t]}),Zd(dc,dc,(t,e,n)=>{const i=$s._createFromPositionAndShift(t.sourcePosition,t.howMany),o=$s._createFromPositionAndShift(e.sourcePosition,e.howMany);let r,s=n.aIsStrong,a=!n.aIsStrong;if("insertBefore"==n.abRelation||"insertAfter"==n.baRelation?a=!0:"insertAfter"!=n.abRelation&&"insertBefore"!=n.baRelation||(a=!1),r=t.targetPosition.isEqual(e.targetPosition)&&a?t.targetPosition._getTransformedByDeletion(e.sourcePosition,e.howMany):t.targetPosition._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),sh(t,e)&&sh(e,t))return[e.getReversed()];if(i.containsPosition(e.targetPosition)&&i.containsRange(o,!0))return i.start=i.start._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),i.end=i.end._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),ah([i],r);if(o.containsPosition(t.targetPosition)&&o.containsRange(i,!0))return i.start=i.start._getCombined(e.sourcePosition,e.getMovedRangeStart()),i.end=i.end._getCombined(e.sourcePosition,e.getMovedRangeStart()),ah([i],r);const c=li(t.sourcePosition.getParentPath(),e.sourcePosition.getParentPath());if("prefix"==c||"extension"==c)return i.start=i.start._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),i.end=i.end._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),ah([i],r);"remove"!=t.type||"remove"==e.type||n.aWasUndone||n.forceWeakRemove?"remove"==t.type||"remove"!=e.type||n.bWasUndone||n.forceWeakRemove||(s=!1):s=!0;const l=[],d=i.getDifference(o);for(const t of d){t.start=t.start._getTransformedByDeletion(e.sourcePosition,e.howMany),t.end=t.end._getTransformedByDeletion(e.sourcePosition,e.howMany);const n="same"==li(t.start.getParentPath(),e.getMovedRangeStart().getParentPath()),i=t._getTransformedByInsertion(e.getMovedRangeStart(),e.howMany,n);l.push(...i)}const h=i.getIntersection(o);return null!==h&&s&&(h.start=h.start._getCombined(e.sourcePosition,e.getMovedRangeStart()),h.end=h.end._getCombined(e.sourcePosition,e.getMovedRangeStart()),0===l.length?l.push(h):1==l.length?o.start.isBefore(i.start)||o.start.isEqual(i.start)?l.unshift(h):l.push(h):l.splice(1,0,h)),0===l.length?[new Kd(t.baseVersion)]:ah(l,r)}),Zd(dc,pc,(t,e,n)=>{let i=t.targetPosition.clone();t.targetPosition.isEqual(e.insertionPosition)&&e.graveyardPosition&&"moveTargetAfter"!=n.abRelation||(i=t.targetPosition._getTransformedBySplitOperation(e));const o=$s._createFromPositionAndShift(t.sourcePosition,t.howMany);if(o.end.isEqual(e.insertionPosition))return e.graveyardPosition||t.howMany++,t.targetPosition=i,[t];if(o.start.hasSameParentAs(e.splitPosition)&&o.containsPosition(e.splitPosition)){let t=new $s(e.splitPosition,o.end);return t=t._getTransformedBySplitOperation(e),ah([new $s(o.start,e.splitPosition),t],i)}t.targetPosition.isEqual(e.splitPosition)&&"insertAtSource"==n.abRelation&&(i=e.moveTargetPosition),t.targetPosition.isEqual(e.insertionPosition)&&"insertBetween"==n.abRelation&&(i=t.targetPosition);const r=[o._getTransformedBySplitOperation(e)];if(e.graveyardPosition){const i=o.start.isEqual(e.graveyardPosition)||o.containsPosition(e.graveyardPosition);t.howMany>1&&i&&!n.aWasUndone&&r.push($s._createFromPositionAndShift(e.insertionPosition,1))}return ah(r,i)}),Zd(dc,mc,(t,e,n)=>{const i=$s._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.deletionPosition.hasSameParentAs(t.sourcePosition)&&i.containsPosition(e.sourcePosition))if("remove"!=t.type||n.forceWeakRemove){if(1==t.howMany)return n.bWasUndone?(t.sourcePosition=e.graveyardPosition.clone(),t.targetPosition=t.targetPosition._getTransformedByMergeOperation(e),[t]):[new Kd(0)]}else if(!n.aWasUndone){const n=[];let i=e.graveyardPosition.clone(),o=e.targetPosition._getTransformedByMergeOperation(e);t.howMany>1&&(n.push(new dc(t.sourcePosition,t.howMany-1,t.targetPosition,0)),i=i._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany-1),o=o._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany-1));const r=e.deletionPosition._getCombined(t.sourcePosition,t.targetPosition),s=new dc(i,1,r,0),a=s.getMovedRangeStart().path.slice();a.push(0);const c=new Ys(s.targetPosition.root,a);o=o._getTransformedByMove(i,r,1);const l=new dc(o,e.howMany,c,0);return n.push(s),n.push(l),n}const o=$s._createFromPositionAndShift(t.sourcePosition,t.howMany)._getTransformedByMergeOperation(e);return t.sourcePosition=o.start,t.howMany=o.end.offset-o.start.offset,t.targetPosition=t.targetPosition._getTransformedByMergeOperation(e),[t]}),Zd(fc,hc,(t,e)=>(t.position=t.position._getTransformedByInsertOperation(e),[t])),Zd(fc,mc,(t,e)=>t.position.isEqual(e.deletionPosition)?(t.position=e.graveyardPosition.clone(),t.position.stickiness="toNext",[t]):(t.position=t.position._getTransformedByMergeOperation(e),[t])),Zd(fc,dc,(t,e)=>(t.position=t.position._getTransformedByMoveOperation(e),[t])),Zd(fc,fc,(t,e,n)=>{if(t.position.isEqual(e.position)){if(!n.aIsStrong)return[new Kd(0)];t.oldName=e.newName}return[t]}),Zd(fc,pc,(t,e)=>{if("same"==li(t.position.path,e.splitPosition.getParentPath())&&!e.graveyardPosition){return[t,new fc(t.position.getShiftedBy(1),t.oldName,t.newName,0)]}return t.position=t.position._getTransformedBySplitOperation(e),[t]}),Zd(gc,gc,(t,e,n)=>{if(t.root===e.root&&t.key===e.key){if(!n.aIsStrong||t.newValue===e.newValue)return[new Kd(0)];t.oldValue=e.newValue}return[t]}),Zd(pc,hc,(t,e)=>(t.splitPosition.hasSameParentAs(e.position)&&t.splitPosition.offset{if(!t.graveyardPosition&&!n.bWasUndone&&t.splitPosition.hasSameParentAs(e.sourcePosition)){const n=e.graveyardPosition.path.slice();n.push(0);const i=new Ys(e.graveyardPosition.root,n),o=pc.getInsertionPosition(new Ys(e.graveyardPosition.root,n)),r=new pc(i,0,null,0);return r.insertionPosition=o,t.splitPosition=t.splitPosition._getTransformedByMergeOperation(e),t.insertionPosition=pc.getInsertionPosition(t.splitPosition),t.graveyardPosition=r.insertionPosition.clone(),t.graveyardPosition.stickiness="toNext",[r,t]}return t.splitPosition.hasSameParentAs(e.deletionPosition)&&!t.splitPosition.isAfter(e.deletionPosition)&&t.howMany--,t.splitPosition.hasSameParentAs(e.targetPosition)&&(t.howMany+=e.howMany),t.splitPosition=t.splitPosition._getTransformedByMergeOperation(e),t.insertionPosition=pc.getInsertionPosition(t.splitPosition),t.graveyardPosition&&(t.graveyardPosition=t.graveyardPosition._getTransformedByMergeOperation(e)),[t]}),Zd(pc,dc,(t,e,n)=>{const i=$s._createFromPositionAndShift(e.sourcePosition,e.howMany);if(t.graveyardPosition){const o=i.start.isEqual(t.graveyardPosition)||i.containsPosition(t.graveyardPosition);if(!n.bWasUndone&&o){const n=t.splitPosition._getTransformedByMoveOperation(e),i=t.graveyardPosition._getTransformedByMoveOperation(e),o=i.path.slice();o.push(0);const r=new Ys(i.root,o);return[new dc(n,t.howMany,r,0)]}t.graveyardPosition=t.graveyardPosition._getTransformedByMoveOperation(e)}if(t.splitPosition.hasSameParentAs(e.sourcePosition)&&i.containsPosition(t.splitPosition)){const n=e.howMany-(t.splitPosition.offset-e.sourcePosition.offset);return t.howMany-=n,t.splitPosition.hasSameParentAs(e.targetPosition)&&t.splitPosition.offset{if(t.splitPosition.isEqual(e.splitPosition)){if(!t.graveyardPosition&&!e.graveyardPosition)return[new Kd(0)];if(t.graveyardPosition&&e.graveyardPosition&&t.graveyardPosition.isEqual(e.graveyardPosition))return[new Kd(0)];if("splitBefore"==n.abRelation)return t.howMany=0,t.graveyardPosition=t.graveyardPosition._getTransformedBySplitOperation(e),[t]}if(t.graveyardPosition&&e.graveyardPosition&&t.graveyardPosition.isEqual(e.graveyardPosition)){const i="$graveyard"==t.splitPosition.root.rootName,o="$graveyard"==e.splitPosition.root.rootName;if(o&&!i||!(i&&!o)&&n.aIsStrong){const n=[];return e.howMany&&n.push(new dc(e.moveTargetPosition,e.howMany,e.splitPosition,0)),t.howMany&&n.push(new dc(t.splitPosition,t.howMany,t.moveTargetPosition,0)),n}return[new Kd(0)]}if(t.graveyardPosition&&(t.graveyardPosition=t.graveyardPosition._getTransformedBySplitOperation(e)),t.splitPosition.isEqual(e.insertionPosition)&&"splitBefore"==n.abRelation)return t.howMany++,[t];if(e.splitPosition.isEqual(t.insertionPosition)&&"splitBefore"==n.baRelation){const n=e.insertionPosition.path.slice();n.push(0);const i=new Ys(e.insertionPosition.root,n);return[t,new dc(t.insertionPosition,1,i,0)]}return t.splitPosition.hasSameParentAs(e.splitPosition)&&t.splitPosition.offset0}addBatch(t){const e=this.editor.model.document.selection,n={ranges:e.hasOwnRange?Array.from(e.getRanges()):[],isBackward:e.isBackward};this._stack.push({batch:t,selection:n}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(t,e,n){const i=this.editor.model,o=i.document,r=[];for(const e of t){const t=lh(e,n).find(t=>t.start.root!=o.graveyard);t&&r.push(t)}r.length&&i.change(t=>{t.setSelection(r,{backward:e})})}_undo(t,e){const n=this.editor.model,i=n.document;this._createdBatches.add(e);const o=t.operations.slice().filter(t=>t.isDocumentOperation);o.reverse();for(const t of o){const o=t.baseVersion+1,r=Array.from(i.history.getOperations(o)),s=eh([t.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const o of s)e.addOperation(o),n.applyOperation(o),i.history.setOperationAsUndone(t,o)}}}function lh(t,e){const n=t.getTransformedByOperations(e);n.sort((t,e)=>t.start.isBefore(e.start)?-1:1);for(let t=1;te.batch==t):this._stack.length-1,n=this._stack.splice(e,1)[0],i=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(i,()=>{this._undo(n.batch,i);const t=this.editor.model.document.history.getOperations(n.batch.baseVersion);this._restoreSelection(n.selection.ranges,n.selection.isBackward,t),this.fire("revert",n.batch,i)}),this.refresh()}}class hh extends ch{execute(){const t=this._stack.pop(),e=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(e,()=>{const n=t.batch.operations[t.batch.operations.length-1].baseVersion+1,i=this.editor.model.document.history.getOperations(n);this._restoreSelection(t.selection.ranges,t.selection.isBackward,i),this._undo(t.batch,e)}),this.refresh()}}class uh extends _d{static get pluginName(){return"UndoEditing"}constructor(t){super(t),this._batchRegistry=new WeakSet}init(){const t=this.editor;this._undoCommand=new dh(t),this._redoCommand=new hh(t),t.commands.add("undo",this._undoCommand),t.commands.add("redo",this._redoCommand),this.listenTo(t.model,"applyOperation",(t,e)=>{const n=e[0];if(!n.isDocumentOperation)return;const i=n.batch,o=this._redoCommand._createdBatches.has(i),r=this._undoCommand._createdBatches.has(i);this._batchRegistry.has(i)||"transparent"==i.type&&!o&&!r||(o?this._undoCommand.addBatch(i):r||(this._undoCommand.addBatch(i),this._redoCommand.clearStack()),this._batchRegistry.add(i))},{priority:"highest"}),this.listenTo(this._undoCommand,"revert",(t,e,n)=>{this._redoCommand.addBatch(n)}),t.keystrokes.set("CTRL+Z","undo"),t.keystrokes.set("CTRL+Y","redo"),t.keystrokes.set("CTRL+SHIFT+Z","redo")}}var fh='',gh='';class mh extends _d{init(){const t=this.editor,e=t.locale,n=t.t,i="ltr"==e.uiLanguageDirection?fh:gh,o="ltr"==e.uiLanguageDirection?gh:fh;this._addButton("undo",n("bj"),"CTRL+Z",i),this._addButton("redo",n("bk"),"CTRL+Y",o)}_addButton(t,e,n,i){const o=this.editor;o.ui.componentFactory.add(t,r=>{const s=o.commands.get(t),a=new id(r);return a.set({label:e,icon:i,keystroke:n,tooltip:!0}),a.bind("isEnabled").to(s,"isEnabled"),this.listenTo(a,"execute",()=>o.execute(t)),a})}}class ph extends _d{static get requires(){return[uh,mh]}static get pluginName(){return"Undo"}}class bh extends _d{static get pluginName(){return"PendingActions"}init(){this.set("hasAny",!1),this._actions=new oo({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(t){if("string"!=typeof t)throw new Gn.b("pendingactions-add-invalid-message: The message must be a string.",this);const e=Object.create(Fi);return e.set("message",t),this._actions.add(e),this.hasAny=!0,e}remove(t){this._actions.remove(t),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}class wh{constructor(){const t=new window.FileReader;this._reader=t,this._data=void 0,this.set("loaded",0),t.onprogress=(t=>{this.loaded=t.loaded})}get error(){return this._reader.error}get data(){return this._data}read(t){const e=this._reader;return this.total=t.size,new Promise((n,i)=>{e.onload=(()=>{const t=e.result;this._data=t,n(t)}),e.onerror=(()=>{i("error")}),e.onabort=(()=>{i("aborted")}),this._reader.readAsDataURL(t)})}abort(){this._reader.abort()}}ci(wh,Fi);class kh extends _d{static get pluginName(){return"FileRepository"}static get requires(){return[bh]}init(){this.loaders=new oo,this.loaders.on("add",()=>this._updatePendingAction()),this.loaders.on("remove",()=>this._updatePendingAction()),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(t,e)=>e?t/e*100:0)}getLoader(t){return this._loadersMap.get(t)||null}createLoader(t){if(!this.createUploadAdapter)return console.warn(Object(Gn.a)("filerepository-no-upload-adapter: Upload adapter is not defined.")),null;const e=new _h(Promise.resolve(t),this.createUploadAdapter);return this.loaders.add(e),this._loadersMap.set(t,e),t instanceof Promise&&e.file.then(t=>{this._loadersMap.set(t,e)}).catch(()=>{}),e.on("change:uploaded",()=>{let t=0;for(const e of this.loaders)t+=e.uploaded;this.uploaded=t}),e.on("change:uploadTotal",()=>{let t=0;for(const e of this.loaders)e.uploadTotal&&(t+=e.uploadTotal);this.uploadTotal=t}),e}destroyLoader(t){const e=t instanceof _h?t:this.getLoader(t);e._destroy(),this.loaders.remove(e),this._loadersMap.forEach((t,n)=>{t===e&&this._loadersMap.delete(n)})}_updatePendingAction(){const t=this.editor.plugins.get(bh);if(this.loaders.length){if(!this._pendingAction){const e=this.editor.t,n=t=>`${e("ay")} ${parseInt(t)}%.`;this._pendingAction=t.add(n(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",n)}}else t.remove(this._pendingAction),this._pendingAction=null}}ci(kh,Fi);class _h{constructor(t,e){this.id=Jn(),this._filePromiseWrapper=this._createFilePromiseWrapper(t),this._adapter=e(this),this._reader=new wh,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(t,e)=>e?t/e*100:0),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then(t=>this._filePromiseWrapper?t:null):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new Gn.b("filerepository-read-wrong-status: You cannot call read if the status is different than idle.",this);return this.status="reading",this.file.then(t=>this._reader.read(t)).then(t=>{if("reading"!==this.status)throw this.status;return this.status="idle",t}).catch(t=>{if("aborted"===t)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:t})}upload(){if("idle"!=this.status)throw new Gn.b("filerepository-upload-wrong-status: You cannot call upload if the status is different than idle.",this);return this.status="uploading",this.file.then(()=>this._adapter.upload()).then(t=>(this.uploadResponse=t,this.status="idle",t)).catch(t=>{if("aborted"===this.status)throw"aborted";throw this.status="error",t})}abort(){const t=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==t?this._reader.abort():"uploading"==t&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch(()=>{}),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(t){const e={};return e.promise=new Promise((n,i)=>{e.rejecter=i,e.isFulfilled=!1,t.then(t=>{e.isFulfilled=!0,n(t)}).catch(t=>{e.isFulfilled=!0,i(t)})}),e}}ci(_h,Fi);const vh="ckCsrfToken",yh=40,xh="abcdefghijklmnopqrstuvwxyz0123456789";function Ah(){let t=function(t){t=t.toLowerCase();const e=document.cookie.split(";");for(const n of e){const e=n.split("="),i=decodeURIComponent(e[0].trim().toLowerCase());if(i===t)return decodeURIComponent(e[1])}return null}(vh);return t&&t.length==yh||(t=function(t){let e="";const n=new Uint8Array(t);window.crypto.getRandomValues(n);for(let t=0;t.5?i.toUpperCase():i}return e}(yh),function(t,e){document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(e)+";path=/"}(vh,t)),t}class Th extends _d{static get requires(){return[kh]}static get pluginName(){return"CKFinderUploadAdapter"}init(){const t=this.editor.config.get("ckfinder.uploadUrl");t&&(this.editor.plugins.get(kh).createUploadAdapter=(e=>new Ch(e,t,this.editor.t)))}}class Ch{constructor(t,e,n){this.loader=t,this.url=e,this.t=n}upload(){return this.loader.file.then(t=>new Promise((e,n)=>{this._initRequest(),this._initListeners(e,n,t),this._sendRequest(t)}))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const t=this.xhr=new XMLHttpRequest;t.open("POST",this.url,!0),t.responseType="json"}_initListeners(t,e,n){const i=this.xhr,o=this.loader,r=(0,this.t)("a")+` ${n.name}.`;i.addEventListener("error",()=>e(r)),i.addEventListener("abort",()=>e()),i.addEventListener("load",()=>{const n=i.response;if(!n||!n.uploaded)return e(n&&n.error&&n.error.message?n.error.message:r);t({default:n.url})}),i.upload&&i.upload.addEventListener("progress",t=>{t.lengthComputable&&(o.uploadTotal=t.total,o.uploaded=t.loaded)})}_sendRequest(t){const e=new FormData;e.append("upload",t),e.append("ckCsrfToken",Ah()),this.xhr.send(e)}}class Ph{static get pluginName(){return"BlockAutoformatEditing"}constructor(t,e,n){let i,o=null;"function"==typeof n?i=n:(o=t.commands.get(n),i=(()=>{t.execute(n)})),t.model.document.on("change",(n,r)=>{if(o&&!o.isEnabled)return;if("transparent"==r.type)return;const s=Array.from(t.model.document.differ.getChanges()),a=s[0];if(1!=s.length||"insert"!==a.type||"$text"!=a.name||1!=a.length)return;const c=a.position.textNode||a.position.nodeAfter;if(!c.parent.is("paragraph"))return;const l=e.exec(c.data);l&&t.model.enqueueChange(t=>{const e=t.createPositionAt(c.parent,0),n=t.createPositionAt(c.parent,l[0].length),o=new oa(e,n);!1!==i({match:l})&&t.remove(o),o.detach()})})}}class Sh{static get pluginName(){return"InlineAutoformatEditing"}constructor(t,e,n){let i,o,r,s;e instanceof RegExp?i=e:r=e,"string"==typeof n?o=n:s=n,r=r||(t=>{let e;const n=[],o=[];for(;null!==(e=i.exec(t))&&!(e&&e.length<4);){let{index:t,1:i,2:r,3:s}=e;const a=i+r+s,c=[t+=e[0].length-a.length,t+i.length],l=[t+i.length+r.length,t+i.length+r.length+s.length];n.push(c),n.push(l),o.push([t+i.length,t+i.length+r.length])}return{remove:n,format:o}}),s=s||((e,n)=>{const i=t.model.schema.getValidRanges(n,o);for(const t of i)e.setAttribute(o,!0,t);e.removeSelectionAttribute(o)}),t.model.document.on("change",(e,n)=>{if("transparent"==n.type)return;const i=t.model,o=i.document.selection;if(!o.isCollapsed)return;const a=Array.from(i.document.differ.getChanges()),c=a[0];if(1!=a.length||"insert"!==c.type||"$text"!=c.name||1!=c.length)return;const l=o.focus,d=l.parent,{text:h,range:u}=function(t,e){let n=t.start;return{text:Array.from(t.getItems()).reduce((t,i)=>i.is("text")||i.is("textProxy")?t+i.data:(n=e.createPositionAfter(i),""),""),range:e.createRange(n,t.end)}}(i.createRange(i.createPositionAt(d,0),l),i),f=r(h),g=Mh(u.start,f.format,i),m=Mh(u.start,f.remove,i);g.length&&m.length&&i.enqueueChange(t=>{if(!1!==s(t,g))for(const e of m.reverse())t.remove(e)})})}}function Mh(t,e,n){return e.filter(t=>void 0!==t[0]&&void 0!==t[1]).map(e=>n.createRange(t.getShiftedBy(e[0]),t.getShiftedBy(e[1])))}function Eh(t,e){return(n,i)=>{if(!t.commands.get(e).isEnabled)return!1;const o=t.model.schema.getValidRanges(i,e);for(const t of o)n.setAttribute(e,!0,t);n.removeSelectionAttribute(e)}}class Ih extends Td{constructor(t,e){super(t),this.attributeKey=e}refresh(){const t=this.editor.model,e=t.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=t.schema.checkAttributeInSelection(e.selection,this.attributeKey)}execute(t={}){const e=this.editor.model,n=e.document.selection,i=void 0===t.forceValue?!this.value:t.forceValue;e.change(t=>{if(n.isCollapsed)i?t.setSelectionAttribute(this.attributeKey,!0):t.removeSelectionAttribute(this.attributeKey);else{const o=e.schema.getValidRanges(n.getRanges(),this.attributeKey);for(const e of o)i?t.setAttribute(this.attributeKey,i,e):t.removeAttribute(this.attributeKey,e)}})}_getValueFromFirstAllowedNode(){const t=this.editor.model,e=t.schema,n=t.document.selection;if(n.isCollapsed)return n.hasAttribute(this.attributeKey);for(const t of n.getRanges())for(const n of t.getItems())if(e.checkAttribute(n,this.attributeKey))return n.hasAttribute(this.attributeKey);return!1}}const Nh="bold";class Oh extends _d{static get pluginName(){return"BoldEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:Nh}),t.model.schema.setAttributeProperties(Nh,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:Nh,view:"strong",upcastAlso:["b",t=>{const e=t.getStyle("font-weight");return e?"bold"==e||Number(e)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),t.commands.add(Nh,new Ih(t,Nh)),t.keystrokes.set("CTRL+B",Nh)}}var Rh='';const Dh="bold";class Lh extends _d{init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(Dh,n=>{const i=t.commands.get(Dh),o=new id(n);return o.set({label:e("d"),icon:Rh,keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(i,"value","isEnabled"),this.listenTo(o,"execute",()=>t.execute(Dh)),o})}}const jh="italic";class Vh extends _d{static get pluginName(){return"ItalicEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:jh}),t.model.schema.setAttributeProperties(jh,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:jh,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),t.commands.add(jh,new Ih(t,jh)),t.keystrokes.set("CTRL+I",jh)}}var zh='';const Bh="italic";class Fh extends _d{init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(Bh,n=>{const i=t.commands.get(Bh),o=new id(n);return o.set({label:e("al"),icon:zh,keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(i,"value","isEnabled"),this.listenTo(o,"execute",()=>t.execute(Bh)),o})}}function Uh(t){const e=t.next();return e.done?null:e.value}class Hh extends Td{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.schema,i=e.document.selection,o=Array.from(i.getSelectedBlocks()),r=void 0===t.forceValue?!this.value:t.forceValue;e.change(t=>{if(r){const e=o.filter(t=>qh(t)||Yh(n,t));this._applyQuote(t,e)}else this._removeQuote(t,o.filter(qh))})}_getValue(){const t=Uh(this.editor.model.document.selection.getSelectedBlocks());return!(!t||!qh(t))}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,n=Uh(t.getSelectedBlocks());return!!n&&Yh(e,n)}_removeQuote(t,e){Wh(t,e).reverse().forEach(e=>{if(e.start.isAtStart&&e.end.isAtEnd)return void t.unwrap(e.start.parent);if(e.start.isAtStart){const n=t.createPositionBefore(e.start.parent);return void t.move(e,n)}e.end.isAtEnd||t.split(e.end);const n=t.createPositionAfter(e.end.parent);t.move(e,n)})}_applyQuote(t,e){const n=[];Wh(t,e).reverse().forEach(e=>{let i=qh(e.start);i||(i=t.createElement("blockQuote"),t.wrap(e,i)),n.push(i)}),n.reverse().reduce((e,n)=>e.nextSibling==n?(t.merge(t.createPositionAfter(e)),e):n)}}function qh(t){return"blockQuote"==t.parent.name?t.parent:null}function Wh(t,e){let n,i=0;const o=[];for(;i{if(t.endsWith("blockQuote")&&"blockQuote"==e.name)return!1}),t.conversion.elementToElement({model:"blockQuote",view:"blockquote"}),t.model.document.registerPostFixer(n=>{const i=t.model.document.differ.getChanges();for(const t of i)if("insert"==t.type){const i=t.position.nodeAfter;if(!i)continue;if(i.is("blockQuote")&&i.isEmpty)return n.remove(i),!0;if(i.is("blockQuote")&&!e.checkChild(t.position,i))return n.unwrap(i),!0;if(i.is("element")){const t=n.createRangeIn(i);for(const i of t.getItems())if(i.is("blockQuote")&&!e.checkChild(n.createPositionBefore(i),i))return n.unwrap(i),!0}}else if("remove"==t.type){const e=t.position.parent;if(e.is("blockQuote")&&e.isEmpty)return n.remove(e),!0}return!1})}afterInit(){const t=this.editor.commands.get("blockQuote");this.listenTo(this.editor.editing.view.document,"enter",(e,n)=>{const i=this.editor.model.document,o=i.selection.getLastPosition().parent;i.selection.isCollapsed&&o.isEmpty&&t.value&&(this.editor.execute("blockQuote"),this.editor.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())})}}var Gh='';n(44);class Qh extends _d{init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("blockQuote",n=>{const i=t.commands.get("blockQuote"),o=new id(n);return o.set({label:e("n"),icon:Gh,tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(i,"value","isEnabled"),this.listenTo(o,"execute",()=>t.execute("blockQuote")),o})}}var Kh='';class Jh extends _d{static get pluginName(){return"CKFinderUI"}init(){const t=this.editor,e=t.ui.componentFactory,n=t.t;e.add("ckfinder",e=>{const i=t.commands.get("ckfinder"),o=new id(e);return o.set({label:n("e"),icon:Kh,tooltip:!0}),o.bind("isEnabled").to(i),o.on("execute",()=>{t.execute("ckfinder"),t.editing.view.focus()}),o})}}class Zh extends hr{constructor(t){super(t),this._observedElements=new Set}observe(t,e){this.document.getRoot(e).on("change:children",(e,n)=>{this.view.once("render",()=>this._updateObservedElements(t,n))})}_updateObservedElements(t,e){if(!e.is("element")||e.is("attributeElement"))return;const n=this.view.domConverter.mapViewToDom(e);if(n){for(const t of n.querySelectorAll("img"))this._observedElements.has(t)||(this.listenTo(t,"load",(t,e)=>this._fireEvents(e)),this._observedElements.add(t));for(const e of this._observedElements)t.contains(e)||(this.stopListening(e),this._observedElements.delete(e))}}_fireEvents(t){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",t))}destroy(){this._observedElements.clear(),super.destroy()}}function Xh(t){return n=>{n.on(`attribute:${t}:image`,e)};function e(t,e,n){if(!n.consumable.consume(e.item,t.name))return;const i=n.writer,o=n.mapper.toViewElement(e.item).getChild(0);null!==e.attributeNewValue?i.setAttribute(e.attributeKey,e.attributeNewValue,o):i.removeAttribute(e.attributeKey,o)}}class tu{constructor(){this._stack=[]}add(t,e){const n=this._stack,i=n[0];this._insertDescriptor(t);const o=n[0];i===o||eu(i,o)||this.fire("change:top",{oldDescriptor:i,newDescriptor:o,writer:e})}remove(t,e){const n=this._stack,i=n[0];this._removeDescriptor(t);const o=n[0];i===o||eu(i,o)||this.fire("change:top",{oldDescriptor:i,newDescriptor:o,writer:e})}_insertDescriptor(t){const e=this._stack,n=e.findIndex(e=>e.id===t.id);if(eu(t,e[n]))return;n>-1&&e.splice(n,1);let i=0;for(;e[i]&&nu(e[i],t);)i++;e.splice(i,0,t)}_removeDescriptor(t){const e=this._stack,n=e.findIndex(e=>e.id===t);n>-1&&e.splice(n,1)}}function eu(t,e){return t&&e&&t.priority==e.priority&&iu(t.classes)==iu(e.classes)}function nu(t,e){return t.priority>e.priority||!(t.priorityiu(e.classes)}function iu(t){return Array.isArray(t)?t.sort().join(","):t}ci(tu,ei);var ou='';const ru="ck-widget",su="ck-widget_selected";function au(t){return!!t.is("element")&&!!t.getCustomProperty("widget")}function cu(t,e,n={}){return go.isEdge||e.setAttribute("contenteditable","false",t),e.addClass(ru,t),e.setCustomProperty("widget",!0,t),t.getFillerOffset=uu,n.label&&function(t,e,n){n.setCustomProperty("widgetLabel",e,t)}(t,n.label,e),n.hasSelectionHandle&&function(t,e){const n=e.createUIElement("div",{class:"ck ck-widget__selection-handle"},function(t){const e=this.toDomElement(t),n=new ed;return n.set("content",ou),n.render(),e.appendChild(n.element),e});e.insert(e.createPositionAt(t,0),n),e.addClass(["ck-widget_with-selection-handle"],t)}(t,e),function(t,e,n,i){const o=new tu;o.on("change:top",(e,o)=>{o.oldDescriptor&&i(t,o.oldDescriptor,o.writer),o.newDescriptor&&n(t,o.newDescriptor,o.writer)}),e.setCustomProperty("addHighlight",(t,e,n)=>o.add(e,n),t),e.setCustomProperty("removeHighlight",(t,e,n)=>o.remove(e,n),t)}(t,e,(t,e,n)=>n.addClass(i(e.classes),t),(t,e,n)=>n.removeClass(i(e.classes),t)),t;function i(t){return Array.isArray(t)?t:[t]}}function lu(t){const e=t.getCustomProperty("widgetLabel");return e?"function"==typeof e?e():e:""}function du(t,e){return e.addClass(["ck-editor__editable","ck-editor__nested-editable"],t),go.isEdge||(e.setAttribute("contenteditable",t.isReadOnly?"false":"true",t),t.on("change:isReadOnly",(n,i,o)=>{e.setAttribute("contenteditable",o?"false":"true",t)})),t.on("change:isFocused",(n,i,o)=>{o?e.addClass("ck-editor__nested-editable_focused",t):e.removeClass("ck-editor__nested-editable_focused",t)}),t}function hu(t,e){const n=t.getSelectedElement();if(n&&e.schema.isBlock(n))return e.createPositionAfter(n);const i=t.getSelectedBlocks().next().value;if(i){if(i.isEmpty)return e.createPositionAt(i,0);const n=e.createPositionAfter(i);return t.focus.isTouching(n)?n:e.createPositionBefore(i)}return t.focus}function uu(){return null}function fu(t){const e=t.getSelectedElement();return e&&function(t){return!!t.getCustomProperty("image")&&au(t)}(e)?e:null}function gu(t){return!!t&&t.is("image")}function mu(t,e,n={}){const i=t.createElement("image",n),o=hu(e.document.selection,e);e.insertContent(i,o),i.parent&&t.setSelection(i,"on")}function pu(t){const e=t.schema,n=t.document.selection;return function(t,e,n){const i=function(t,e){const n=hu(t,e).parent;if(n.isEmpty&&!n.is("$root"))return n.parent;return n}(t,n);return e.checkChild(i,"image")}(n,e,t)&&!function(t,e){const n=t.getSelectedElement();return n&&e.isObject(n)}(n,e)&&function(t){return[...t.focus.getAncestors()].every(t=>!t.is("image"))}(n)}class bu extends Td{refresh(){this.isEnabled=pu(this.editor.model)}execute(t){const e=this.editor.model;e.change(n=>{const i=Array.isArray(t.source)?t.source:[t.source];for(const t of i)mu(n,e,{src:t})})}}class wu extends _d{static get pluginName(){return"ImageEditing"}init(){const t=this.editor,e=t.model.schema,n=t.t,i=t.conversion;t.editing.view.addObserver(Zh),e.register("image",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["alt","src","srcset"]}),i.for("dataDowncast").elementToElement({model:"image",view:(t,e)=>ku(e)}),i.for("editingDowncast").elementToElement({model:"image",view:(t,e)=>(function(t,e,n){return e.setCustomProperty("image",!0,t),cu(t,e,{label:function(){const e=t.getChild(0).getAttribute("alt");return e?`${e} ${n}`:n}})})(ku(e),e,n("m"))}),i.for("downcast").add(Xh("src")).add(Xh("alt")).add(function(){return e=>{e.on("attribute:srcset:image",t)};function t(t,e,n){if(!n.consumable.consume(e.item,t.name))return;const i=n.writer,o=n.mapper.toViewElement(e.item).getChild(0);if(null===e.attributeNewValue){const t=e.attributeOldValue;t.data&&(i.removeAttribute("srcset",o),i.removeAttribute("sizes",o),t.width&&i.removeAttribute("width",o))}else{const t=e.attributeNewValue;t.data&&(i.setAttribute("srcset",t.data,o),i.setAttribute("sizes","100vw",o),t.width&&i.setAttribute("width",t.width,o))}}}()),i.for("upcast").elementToElement({view:{name:"img",attributes:{src:!0}},model:(t,e)=>e.createElement("image",{src:t.getAttribute("src")})}).attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:t=>{const e={data:t.getAttribute("srcset")};return t.hasAttribute("width")&&(e.width=t.getAttribute("width")),e}}}).add(function(){return e=>{e.on("element:figure",t)};function t(t,e,n){if(!n.consumable.test(e.viewItem,{name:!0,classes:"image"}))return;const i=Array.from(e.viewItem.getChildren()).find(t=>t.is("img"));if(!i||!i.hasAttribute("src")||!n.consumable.test(i,{name:!0}))return;const o=n.convertItem(i,e.modelCursor),r=Uh(o.modelRange.getItems());r&&(n.convertChildren(e.viewItem,n.writer.createPositionAt(r,0)),e.modelRange=o.modelRange,e.modelCursor=o.modelCursor)}}()),t.commands.add("imageInsert",new bu(t))}}function ku(t){const e=t.createEmptyElement("img"),n=t.createContainerElement("figure",{class:"image"});return t.insert(t.createPositionAt(n,0),e),n}function _u(t,e,n){return n.createRange(vu(t,e,!0,n),vu(t,e,!1,n))}function vu(t,e,n,i){let o=t.textNode||(n?t.nodeBefore:t.nodeAfter),r=null;for(;o&&o.getAttribute("linkHref")==e;)r=o,o=n?o.previousSibling:o.nextSibling;return r?i.createPositionAt(r,n?"before":"after"):t}class yu extends Td{constructor(t){super(t),this.manualDecorators=new oo}restoreManualDecoratorStates(){for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}refresh(){const t=this.editor.model,e=t.document;this.value=e.selection.getAttribute("linkHref");for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id);this.isEnabled=t.schema.checkAttributeInSelection(e.selection,"linkHref")}execute(t,e={}){const n=this.editor.model,i=n.document.selection,o=[],r=[];for(const t in e)e[t]?o.push(t):r.push(t);n.change(e=>{if(i.isCollapsed){const s=i.getFirstPosition();if(i.hasAttribute("linkHref")){const a=_u(s,i.getAttribute("linkHref"),n);e.setAttribute("linkHref",t,a),o.forEach(t=>{e.setAttribute(t,!0,a)}),r.forEach(t=>{e.removeAttribute(t,a)}),e.setSelection(a)}else if(""!==t){const r=js(i.getAttributes());r.set("linkHref",t),o.forEach(t=>{r.set(t,!0)});const a=e.createText(t,r);n.insertContent(a,s),e.setSelection(e.createRangeOn(a))}}else{const s=n.schema.getValidRanges(i.getRanges(),"linkHref");for(const n of s)e.setAttribute("linkHref",t,n),o.forEach(t=>{e.setAttribute(t,!0,n)}),r.forEach(t=>{e.removeAttribute(t,n)})}})}_getDecoratorStateFromModel(t){return this.editor.model.document.selection.getAttribute(t)||!1}}class xu extends Td{refresh(){this.isEnabled=this.editor.model.document.selection.hasAttribute("linkHref")}execute(){const t=this.editor,e=this.editor.model,n=e.document.selection,i=t.commands.get("link");e.change(t=>{const o=n.isCollapsed?[_u(n.getFirstPosition(),n.getAttribute("linkHref"),e)]:n.getRanges();for(const e of o)if(t.removeAttribute("linkHref",e),i)for(const n of i.manualDecorators)t.removeAttribute(n.id,e)})}}var Au=function(t,e,n){var i=-1,o=t.length;e<0&&(e=-e>o?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var r=Array(o);++i=i?t:Au(t,e,n)},Cu=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var Pu=function(t){return Cu.test(t)};var Su=function(t){return t.split("")},Mu="[\\ud800-\\udfff]",Eu="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Iu="\\ud83c[\\udffb-\\udfff]",Nu="[^\\ud800-\\udfff]",Ou="(?:\\ud83c[\\udde6-\\uddff]){2}",Ru="[\\ud800-\\udbff][\\udc00-\\udfff]",Du="(?:"+Eu+"|"+Iu+")"+"?",Lu="[\\ufe0e\\ufe0f]?"+Du+("(?:\\u200d(?:"+[Nu,Ou,Ru].join("|")+")[\\ufe0e\\ufe0f]?"+Du+")*"),ju="(?:"+[Nu+Eu+"?",Eu,Ou,Ru,Mu].join("|")+")",Vu=RegExp(Iu+"(?="+Iu+")|"+ju+Lu,"g");var zu=function(t){return t.match(Vu)||[]};var Bu=function(t){return Pu(t)?zu(t):Su(t)};var Fu=function(t,e){for(var n=-1,i=null==t?0:t.length,o=Array(i);++nthis._definitions.add(t)):this._definitions.add(t)}getDispatcher(){return t=>{t.on("attribute:linkHref",(t,e,n)=>{if(!n.consumable.test(e.item,"attribute:linkHref"))return;const i=n.writer,o=i.document.selection;for(const t of this._definitions){const r=i.createAttributeElement("a",t.attributes,{priority:5});i.setCustomProperty("link",!0,r),t.callback(e.attributeNewValue)?e.item.is("selection")?i.wrap(o.getFirstRange(),r):i.wrap(n.mapper.toViewRange(e.range),r):i.unwrap(n.mapper.toViewRange(e.range),r)}},{priority:"high"})}}}class Xu{constructor({id:t,label:e,attributes:n}){this.id=t,this.set("value"),this.label=e,this.attributes=n}}ci(Xu,Fi);class tf{constructor(t,e,n){this.model=t,this.attribute=n,this._modelSelection=t.document.selection,this._overrideUid=null,this._isNextGravityRestorationSkipped=!1,e.listenTo(this._modelSelection,"change:range",(t,e)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!e.directChange&&ef(this._modelSelection.getFirstPosition(),n)||this._restoreGravity())})}handleForwardMovement(t,e){const n=this.attribute;if(!(this._isGravityOverridden||t.isAtStart&&this._hasSelectionAttribute))return rf(t,n)&&this._hasSelectionAttribute?(this._preventCaretMovement(e),this._removeSelectionAttribute(),!0):nf(t,n)?(this._preventCaretMovement(e),this._overrideGravity(),!0):of(t,n)&&this._hasSelectionAttribute?(this._preventCaretMovement(e),this._overrideGravity(),!0):void 0}handleBackwardMovement(t,e){const n=this.attribute;return this._isGravityOverridden?rf(t,n)&&this._hasSelectionAttribute?(this._preventCaretMovement(e),this._restoreGravity(),this._removeSelectionAttribute(),!0):(this._preventCaretMovement(e),this._restoreGravity(),t.isAtStart&&this._removeSelectionAttribute(),!0):rf(t,n)&&!this._hasSelectionAttribute?(this._preventCaretMovement(e),this._setSelectionAttributeFromTheNodeBefore(t),!0):t.isAtEnd&&of(t,n)?this._hasSelectionAttribute?void(sf(t,n)&&(this._skipNextAutomaticGravityRestoration(),this._overrideGravity())):(this._preventCaretMovement(e),this._setSelectionAttributeFromTheNodeBefore(t),!0):t.isAtStart?this._hasSelectionAttribute?(this._removeSelectionAttribute(),this._preventCaretMovement(e),!0):void 0:void(sf(t,n)&&(this._skipNextAutomaticGravityRestoration(),this._overrideGravity()))}get _isGravityOverridden(){return!!this._overrideUid}get _hasSelectionAttribute(){return this._modelSelection.hasAttribute(this.attribute)}_overrideGravity(){this._overrideUid=this.model.change(t=>t.overrideSelectionGravity())}_restoreGravity(){this.model.change(t=>{t.restoreSelectionGravity(this._overrideUid),this._overrideUid=null})}_preventCaretMovement(t){t.preventDefault()}_removeSelectionAttribute(){this.model.change(t=>{t.removeSelectionAttribute(this.attribute)})}_setSelectionAttributeFromTheNodeBefore(t){const e=this.attribute;this.model.change(n=>{n.setSelectionAttribute(this.attribute,t.nodeBefore.getAttribute(e))})}_skipNextAutomaticGravityRestoration(){this._isNextGravityRestorationSkipped=!0}}function ef(t,e){return nf(t,e)||of(t,e)}function nf(t,e){const{nodeBefore:n,nodeAfter:i}=t,o=!!n&&n.hasAttribute(e);return!!i&&i.hasAttribute(e)&&(!o||n.getAttribute(e)!==i.getAttribute(e))}function of(t,e){const{nodeBefore:n,nodeAfter:i}=t,o=!!n&&n.hasAttribute(e),r=!!i&&i.hasAttribute(e);return o&&(!r||n.getAttribute(e)!==i.getAttribute(e))}function rf(t,e){const{nodeBefore:n,nodeAfter:i}=t,o=!!n&&n.hasAttribute(e);if(!!i&&i.hasAttribute(e)&&o)return i.getAttribute(e)!==n.getAttribute(e)}function sf(t,e){return ef(t.getShiftedBy(-1),e)}n(46);const af="ck-link_selected",cf="automatic",lf="manual",df=/^(https?:)?\/\//;class hf extends _d{static get pluginName(){return"LinkEditing"}constructor(t){super(t),t.config.define("link",{addTargetToExternalLinks:!1})}init(){const t=this.editor,e=t.locale;t.model.schema.extend("$text",{allowAttributes:"linkHref"}),t.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:Ku}),t.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(t,e)=>Ku(Ju(t),e)}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:t=>t.getAttribute("href")}}),t.commands.add("link",new yu(t)),t.commands.add("unlink",new xu(t));const n=function(t,e){const n={"Open in a new tab":t("az"),Downloadable:t("ba")};return e.forEach(t=>(t.label&&n[t.label]&&(t.label=n[t.label]),t)),e}(t.t,function(t){const e=[];if(t)for(const[n,i]of Object.entries(t)){const t=Object.assign({},i,{id:`link${$u(n)}`});e.push(t)}return e}(t.config.get("link.decorators")));this._enableAutomaticDecorators(n.filter(t=>t.mode===cf)),this._enableManualDecorators(n.filter(t=>t.mode===lf)),function({view:t,model:e,emitter:n,attribute:i,locale:o}){const r=new tf(e,n,i),s=e.document.selection;n.listenTo(t.document,"keydown",(t,e)=>{if(!s.isCollapsed)return;if(e.shiftKey||e.altKey||e.ctrlKey)return;const n=e.keyCode==bo.arrowright,i=e.keyCode==bo.arrowleft;if(!n&&!i)return;const a=s.getFirstPosition(),c=o.contentLanguageDirection;let l;(l="ltr"===c&&n||"rtl"===c&&i?r.handleForwardMovement(a,e):r.handleBackwardMovement(a,e))&&t.stop()},{priority:Zn.get("high")+1})}({view:t.editing.view,model:t.model,emitter:this,attribute:"linkHref",locale:e}),this._setupLinkHighlight()}_enableAutomaticDecorators(t){const e=this.editor,n=new Zu;e.config.get("link.addTargetToExternalLinks")&&n.add({id:"linkIsExternal",mode:cf,callback:t=>df.test(t),attributes:{target:"_blank",rel:"noopener noreferrer"}}),n.add(t),n.length&&e.conversion.for("downcast").add(n.getDispatcher())}_enableManualDecorators(t){if(!t.length)return;const e=this.editor,n=e.commands.get("link").manualDecorators;t.forEach(t=>{e.model.schema.extend("$text",{allowAttributes:t.id}),n.add(new Xu(t)),e.conversion.for("downcast").attributeToElement({model:t.id,view:(e,i)=>{if(e){const e=n.get(t.id).attributes,o=i.createAttributeElement("a",e,{priority:5});return i.setCustomProperty("link",!0,o),o}}}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:n.get(t.id).attributes},model:{key:t.id}})})}_setupLinkHighlight(){const t=this.editor,e=t.editing.view,n=new Set;e.document.registerPostFixer(e=>{const i=t.model.document.selection;let o=!1;if(i.hasAttribute("linkHref")){const r=_u(i.getFirstPosition(),i.getAttribute("linkHref"),t.model),s=t.editing.mapper.toViewRange(r);for(const t of s.getItems())t.is("a")&&!t.hasClass(af)&&(e.addClass(af,t),n.add(t),o=!0)}return o}),t.conversion.for("editingDowncast").add(t=>{function i(){e.change(t=>{for(const e of n.values())t.removeClass(af,e),n.delete(e)})}t.on("insert",i,{priority:"highest"}),t.on("remove",i,{priority:"highest"}),t.on("attribute",i,{priority:"highest"}),t.on("selection",i,{priority:"highest"})})}}class uf extends _d{static get pluginName(){return"Notification"}init(){this.on("show:warning",(t,e)=>{window.alert(e.message)},{priority:"lowest"})}showSuccess(t,e={}){this._showNotification({message:t,type:"success",namespace:e.namespace,title:e.title})}showInfo(t,e={}){this._showNotification({message:t,type:"info",namespace:e.namespace,title:e.title})}showWarning(t,e={}){this._showNotification({message:t,type:"warning",namespace:e.namespace,title:e.title})}_showNotification(t){const e=`show:${t.type}`+(t.namespace?`:${t.namespace}`:"");this.fire(e,{message:t.message,type:t.type,title:t.title||""})}}class ff extends Td{constructor(t){super(t),this.stopListening(this.editor.model.document,"change"),this.listenTo(this.editor.model.document,"change",()=>this.refresh(),{priority:"low"})}refresh(){const t=this.editor.commands.get("imageInsert"),e=this.editor.commands.get("link");this.isEnabled=t.isEnabled||e.isEnabled}execute(){const t=this.editor,e=this.editor.config.get("ckfinder.openerMethod")||"modal";if("popup"!=e&&"modal"!=e)throw new Gn.b('ckfinder-unknown-openerMethod: The openerMethod config option must by "popup" or "modal".',t);const n=this.editor.config.get("ckfinder.options")||{};n.chooseFiles=!0;const i=n.onInit;n.language||(n.language=t.locale.uiLanguage),n.onInit=(e=>{i&&i(e),e.on("files:choose",n=>{const i=n.data.files.toArray(),o=i.filter(t=>!t.isImage()),r=i.filter(t=>t.isImage());for(const e of o)t.execute("link",e.getUrl());const s=[];for(const t of r){const n=t.getUrl();s.push(n||e.request("file:getProxyUrl",{file:t}))}s.length&&gf(t,s)}),e.on("file:choose:resizedImage",e=>{const n=e.data.resizedUrl;if(n)gf(t,[n]);else{const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("at"),{title:n("au"),namespace:"ckfinder"})}})}),window.CKFinder[e](n)}}function gf(t,e){if(t.commands.get("imageInsert").isEnabled)t.execute("imageInsert",{source:e});else{const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("av"),{title:n("aw"),namespace:"ckfinder"})}}class mf extends _d{static get pluginName(){return"CKFinderEditing"}static get requires(){return[uf,wu,hf]}init(){const t=this.editor;t.commands.add("ckfinder",new ff(t))}}const pf=/^data:(\S*?);base64,/;class bf{constructor(t,e,n){if(!t)throw new Gn.b("fileuploader-missing-file: File must be provided as the first argument",null);if(!e)throw new Gn.b("fileuploader-missing-token: Token must be provided as the second argument.",null);if(!n)throw new Gn.b("fileuploader-missing-api-address: Api address must be provided as the third argument.",null);this.file=function(t){if("string"!=typeof t)return!1;const e=t.match(pf);return!(!e||!e.length)}(t)?function(t,e=512){try{const n=t.match(pf)[1],i=atob(t.replace(pf,"")),o=[];for(let t=0;tt(n)),this}onError(t){return this.once("error",(e,n)=>t(n)),this}abort(){this.xhr.abort()}send(){return this._prepareRequest(),this._attachXHRListeners(),this._sendRequest()}_prepareRequest(){const t=new XMLHttpRequest;t.open("POST",this._apiAddress),t.setRequestHeader("Authorization",this._token.value),t.responseType="json",this.xhr=t}_attachXHRListeners(){const t=this,e=this.xhr;function n(e){return()=>t.fire("error",e)}e.addEventListener("error",n("Network Error")),e.addEventListener("abort",n("Abort")),e.upload&&e.upload.addEventListener("progress",t=>{t.lengthComputable&&this.fire("progress",{total:t.total,uploaded:t.loaded})}),e.addEventListener("load",()=>{const t=e.status,n=e.response;if(t<200||t>299)return this.fire("error",n.message||n.error)})}_sendRequest(){const t=new FormData,e=this.xhr;return t.append("file",this.file),new Promise((n,i)=>{e.addEventListener("load",()=>{const t=e.status,o=e.response;return t<200||t>299?o.message?i(new Gn.b("fileuploader-uploading-data-failed: Uploading file failed.",this,{message:o.message})):i(o.error):n(o)}),e.addEventListener("error",()=>i(new Error("Network Error"))),e.addEventListener("abort",()=>i(new Error("Abort"))),e.send(t)})}}ci(bf,ei);const wf={refreshInterval:36e5,autoRefresh:!0};class kf{constructor(t,e=wf){if(!t)throw new Gn.b("token-missing-token-url: A `tokenUrl` must be provided as the first constructor argument.",this);this.set("value",e.initValue),this._refresh="function"==typeof t?t:()=>(function(t){return new Promise((e,n)=>{const i=new XMLHttpRequest;i.open("GET",t),i.addEventListener("load",()=>{const t=i.status,o=i.response;return t<200||t>299?n(new Gn.b("token-cannot-download-new-token: Cannot download new token from the provided url.",null)):e(o)}),i.addEventListener("error",()=>n(new Error("Network Error"))),i.addEventListener("abort",()=>n(new Error("Abort"))),i.send()})})(t),this._options=Object.assign({},wf,e)}init(){return new Promise((t,e)=>{this._options.autoRefresh&&this._startRefreshing(),this.value?t(this):this._refreshToken().then(t).catch(e)})}_refreshToken(){return this._refresh().then(t=>this.set("value",t)).then(()=>this)}destroy(){this._stopRefreshing()}_startRefreshing(){this._refreshInterval=setInterval(()=>this._refreshToken(),this._options.refreshInterval)}_stopRefreshing(){clearInterval(this._refreshInterval)}static create(t,e=wf){return new kf(t,e).init()}}ci(kf,Fi);var _f=kf;class vf extends _d{static get pluginName(){return"CloudServices"}init(){const t=this.editor.config.get("cloudServices")||{};for(const e in t)this[e]=t[e];if(this.tokenUrl)return this.token=new vf.Token(this.tokenUrl),this.token.init();this.token=null}}vf.Token=_f;class yf extends _d{static get requires(){return[kh,vf]}init(){const t=this.editor,e=t.plugins.get(vf),n=e.token,i=e.uploadUrl;n&&(this._uploadGateway=new yf._UploadGateway(n,i),t.plugins.get(kh).createUploadAdapter=(t=>new xf(this._uploadGateway,t)))}}class xf{constructor(t,e){this.uploadGateway=t,this.loader=e}upload(){return this.loader.file.then(t=>(this.fileUploader=this.uploadGateway.upload(t),this.fileUploader.on("progress",(t,e)=>{this.loader.uploadTotal=e.total,this.loader.uploaded=e.uploaded}),this.fileUploader.send()))}abort(){this.fileUploader.abort()}}yf._UploadGateway=class{constructor(t,e){if(!t)throw new Gn.b("uploadgateway-missing-token: Token must be provided.",null);if(!e)throw new Gn.b("uploadgateway-missing-api-address: Api address must be provided.",null);this._token=t,this._apiAddress=e}upload(t){return new bf(t,this._token,this._apiAddress)}};class Af extends Xr{constructor(t){super(t),this.domEventType="mousedown"}onDomEvent(t){this.fire(t.type,t)}}n(48);const Tf=ko("Ctrl+A");class Cf extends _d{static get pluginName(){return"Widget"}init(){const t=this.editor.editing.view,e=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",(t,e,n)=>{this._clearPreviouslySelectedWidgets(n.writer);const i=n.writer,o=i.document.selection,r=o.getSelectedElement();let s=null;for(const t of o.getRanges())for(const e of t){const t=e.item;au(t)&&!Pf(t,s)&&(i.addClass(su,t),this._previouslySelected.add(t),s=t,t==r&&i.setSelection(o.getRanges(),{fake:!0,label:lu(r)}))}},{priority:"low"}),t.addObserver(Af),this.listenTo(e,"mousedown",(...t)=>this._onMousedown(...t)),this.listenTo(e,"keydown",(...t)=>this._onKeydown(...t),{priority:"high"}),this.listenTo(e,"delete",(t,e)=>{this._handleDelete("forward"==e.direction)&&(e.preventDefault(),t.stop())},{priority:"high"})}_onMousedown(t,e){const n=this.editor,i=n.editing.view,o=i.document;let r=e.target;if(function(t){for(;t;){if(t.is("editableElement")&&!t.is("rootElement"))return!0;if(au(t))return!1;t=t.parent}return!1}(r)){if(go.isSafari&&e.domEvent.detail>=3){const t=n.editing.mapper.toModelElement(r);this.editor.model.change(n=>{e.preventDefault(),n.setSelection(t,"in")})}return}if(!au(r)&&!(r=r.findAncestor(au)))return;e.preventDefault(),o.isFocused||i.focus();const s=n.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_onKeydown(t,e){const n=e.keyCode,i="ltr"===this.editor.locale.contentLanguageDirection,o=n==bo.arrowdown||n==bo[i?"arrowright":"arrowleft"];let r=!1;!function(t){return t==bo.arrowright||t==bo.arrowleft||t==bo.arrowup||t==bo.arrowdown}(n)?!function(t){return wo(t)==Tf}(e)?n===bo.enter&&(r=this._handleEnterKey(e.shiftKey)):r=this._selectAllNestedEditableContent()||this._selectAllContent():r=this._handleArrowKeys(o),r&&(e.preventDefault(),t.stop())}_handleDelete(t){if(this.editor.isReadOnly)return;const e=this.editor.model.document.selection;if(!e.isCollapsed)return;const n=this._getObjectElementNextToSelection(t);return n?(this.editor.model.change(t=>{let i=e.anchor.parent;for(;i.isEmpty;){const e=i;i=e.parent,t.remove(e)}this._setSelectionOverElement(n)}),!0):void 0}_handleArrowKeys(t){const e=this.editor.model,n=e.schema,i=e.document.selection,o=i.getSelectedElement();if(o&&n.isObject(o)){const o=t?i.getLastPosition():i.getFirstPosition(),r=n.getNearestSelectionRange(o,t?"forward":"backward");return r&&e.change(t=>{t.setSelection(r)}),!0}if(!i.isCollapsed)return;const r=this._getObjectElementNextToSelection(t);return r&&n.isObject(r)?(this._setSelectionOverElement(r),!0):void 0}_handleEnterKey(t){const e=this.editor.model,n=e.document.selection.getSelectedElement();if(function(t,e){return t&&e.isObject(t)&&!e.isInline(t)}(n,e.schema))return e.change(i=>{let o=i.createPositionAt(n,t?"before":"after");const r=i.createElement("paragraph");if(e.schema.isBlock(n.parent)){const t=e.schema.findAllowedParent(o,r);o=i.split(o,t).position}i.insert(r,o),i.setSelection(r,"in")}),!0}_selectAllNestedEditableContent(){const t=this.editor.model,e=t.document.selection,n=t.schema.getLimitElement(e);return e.getFirstRange().root!=n&&(t.change(t=>{t.setSelection(t.createRangeIn(n))}),!0)}_selectAllContent(){const t=this.editor.model,e=this.editor.editing,n=e.view.document.selection.getSelectedElement();if(n&&au(n)){const i=e.mapper.toModelElement(n.parent);return t.change(t=>{t.setSelection(t.createRangeIn(i))}),!0}return!1}_setSelectionOverElement(t){this.editor.model.change(e=>{e.setSelection(e.createRangeOn(t))})}_getObjectElementNextToSelection(t){const e=this.editor.model,n=e.schema,i=e.document.selection,o=e.createSelection(i);e.modifySelection(o,{direction:t?"forward":"backward"});const r=t?o.focus.nodeBefore:o.focus.nodeAfter;return r&&n.isObject(r)?r:null}_clearPreviouslySelectedWidgets(t){for(const e of this._previouslySelected)t.removeClass(su,e);this._previouslySelected.clear()}}function Pf(t,e){return!!e&&Array.from(t.getAncestors()).includes(e)}class Sf extends Td{refresh(){const t=this.editor.model.document.selection.getSelectedElement();this.isEnabled=gu(t),gu(t)&&t.hasAttribute("alt")?this.value=t.getAttribute("alt"):this.value=!1}execute(t){const e=this.editor.model,n=e.document.selection.getSelectedElement();e.change(e=>{e.setAttribute("alt",t.newValue,n)})}}class Mf extends _d{static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new Sf(this.editor))}}n(50);class Ef extends Ll{constructor(t,e){super(t);const n=`ck-input-${Jn()}`,i=`ck-status-${Jn()}`;this.set("label"),this.set("value"),this.set("isReadOnly",!1),this.set("errorText",null),this.set("infoText",null),this.labelView=this._createLabelView(n),this.inputView=this._createInputView(e,n,i),this.statusView=this._createStatusView(i),this.bind("_statusText").to(this,"errorText",this,"infoText",(t,e)=>t||e);const o=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-input",o.if("isReadOnly","ck-disabled")]},children:[this.labelView,this.inputView,this.statusView]})}_createLabelView(t){const e=new Vl(this.locale);return e.for=t,e.bind("text").to(this,"label"),e}_createInputView(t,e,n){const i=new t(this.locale,n);return i.id=e,i.ariaDescribedById=n,i.bind("value").to(this),i.bind("isReadOnly").to(this),i.bind("hasError").to(this,"errorText",t=>!!t),i.on("input",()=>{this.errorText=null}),i}_createStatusView(t){const e=new Ll(this.locale),n=this.bindTemplate;return e.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-input__status",n.if("errorText","ck-labeled-input__status_error"),n.if("_statusText","ck-hidden",t=>!t)],id:t,role:n.if("errorText","alert")},children:[{text:n.to("_statusText")}]}),e}select(){this.inputView.select()}focus(){this.inputView.focus()}}n(52);class If extends Ll{constructor(t){super(t),this.set("value"),this.set("id"),this.set("placeholder"),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("ariaDescribedById");const e=this.bindTemplate;this.setTemplate({tag:"input",attributes:{type:"text",class:["ck","ck-input","ck-input-text",e.if("hasError","ck-error")],id:e.to("id"),placeholder:e.to("placeholder"),readonly:e.to("isReadOnly"),"aria-invalid":e.if("hasError",!0),"aria-describedby":e.to("ariaDescribedById")},on:{input:e.to("input")}})}render(){super.render();const t=t=>{this.element.value=t||0===t?t:""};t(this.value),this.on("change:value",(e,n,i)=>{t(i)})}select(){this.element.select()}focus(){this.element.focus()}}function Nf({view:t}){t.listenTo(t.element,"submit",(e,n)=>{n.preventDefault(),t.fire("submit")},{useCapture:!0})}var Of='',Rf='';n(54);class Df extends Ll{constructor(t){super(t);const e=this.locale.t;this.focusTracker=new al,this.keystrokes=new Zc,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(e("bf"),Of,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(e("bg"),Rf,"ck-button-cancel","cancel"),this._focusables=new pl,this._focusCycler=new Wl({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]})}render(){super.render(),this.keystrokes.listenTo(this.element),Nf({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)})}_createButton(t,e,n,i){const o=new id(this.locale);return o.set({label:t,icon:e,tooltip:!0}),o.extendTemplate({attributes:{class:n}}),i&&o.delegate("execute").to(this,i),o}_createLabeledInputView(){const t=this.locale.t,e=new Ef(this.locale,If);return e.label=t("cd"),e.inputView.placeholder=t("cd"),e}}n(56);const Lf=Ul("px"),jf=tr.document.body;class Vf extends Ll{constructor(t){super(t);const e=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("position","arrow_nw"),this.set("isVisible",!1),this.set("withArrow",!0),this.set("class"),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-panel",e.to("position",t=>`ck-balloon-panel_${t}`),e.if("isVisible","ck-balloon-panel_visible"),e.if("withArrow","ck-balloon-panel_with-arrow"),e.to("class")],style:{top:e.to("top",Lf),left:e.to("left",Lf)}},children:this.content})}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(t){this.show();const e=Vf.defaultPositions,n=Object.assign({},{element:this.element,positions:[e.southArrowNorth,e.southArrowNorthWest,e.southArrowNorthEast,e.northArrowSouth,e.northArrowSouthWest,e.northArrowSouthEast],limiter:jf,fitInViewport:!0},t),i=Vf._getOptimalPosition(n),o=parseInt(i.left),r=parseInt(i.top),s=i.name;Object.assign(this,{top:r,left:o,position:s})}pin(t){this.unpin(),this._pinWhenIsVisibleCallback=(()=>{this.isVisible?this._startPinning(t):this._stopPinning()}),this._startPinning(t),this.listenTo(this,"change:isVisible",this._pinWhenIsVisibleCallback)}unpin(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,"change:isVisible",this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}_startPinning(t){this.attachTo(t);const e=zf(t.target),n=t.limiter?zf(t.limiter):jf;this.listenTo(tr.document,"scroll",(i,o)=>{const r=o.target,s=e&&r.contains(e),a=n&&r.contains(n);!s&&!a&&e&&n||this.attachTo(t)},{useCapture:!0}),this.listenTo(tr.window,"resize",()=>{this.attachTo(t)})}_stopPinning(){this.stopListening(tr.document,"scroll"),this.stopListening(tr.window,"resize")}}function zf(t){return Wn(t)?t:_s(t)?t.commonAncestorContainer:"function"==typeof t?zf(t()):null}function Bf(t,e){return t.top-e.height-Vf.arrowVerticalOffset}function Ff(t){return t.bottom+Vf.arrowVerticalOffset}Vf.arrowHorizontalOffset=25,Vf.arrowVerticalOffset=10,Vf._getOptimalPosition=Jl,Vf.defaultPositions={northArrowSouth:(t,e)=>({top:Bf(t,e),left:t.left+t.width/2-e.width/2,name:"arrow_s"}),northArrowSouthEast:(t,e)=>({top:Bf(t,e),left:t.left+t.width/2-e.width+Vf.arrowHorizontalOffset,name:"arrow_se"}),northArrowSouthWest:(t,e)=>({top:Bf(t,e),left:t.left+t.width/2-Vf.arrowHorizontalOffset,name:"arrow_sw"}),northWestArrowSouth:(t,e)=>({top:Bf(t,e),left:t.left-e.width/2,name:"arrow_s"}),northWestArrowSouthWest:(t,e)=>({top:Bf(t,e),left:t.left-Vf.arrowHorizontalOffset,name:"arrow_sw"}),northWestArrowSouthEast:(t,e)=>({top:Bf(t,e),left:t.left-e.width+Vf.arrowHorizontalOffset,name:"arrow_se"}),northEastArrowSouth:(t,e)=>({top:Bf(t,e),left:t.right-e.width/2,name:"arrow_s"}),northEastArrowSouthEast:(t,e)=>({top:Bf(t,e),left:t.right-e.width+Vf.arrowHorizontalOffset,name:"arrow_se"}),northEastArrowSouthWest:(t,e)=>({top:Bf(t,e),left:t.right-Vf.arrowHorizontalOffset,name:"arrow_sw"}),southArrowNorth:(t,e)=>({top:Ff(t),left:t.left+t.width/2-e.width/2,name:"arrow_n"}),southArrowNorthEast:(t,e)=>({top:Ff(t),left:t.left+t.width/2-e.width+Vf.arrowHorizontalOffset,name:"arrow_ne"}),southArrowNorthWest:(t,e)=>({top:Ff(t),left:t.left+t.width/2-Vf.arrowHorizontalOffset,name:"arrow_nw"}),southWestArrowNorth:(t,e)=>({top:Ff(t),left:t.left-e.width/2,name:"arrow_n"}),southWestArrowNorthWest:(t,e)=>({top:Ff(t),left:t.left-Vf.arrowHorizontalOffset,name:"arrow_nw"}),southWestArrowNorthEast:(t,e)=>({top:Ff(t),left:t.left-e.width+Vf.arrowHorizontalOffset,name:"arrow_ne"}),southEastArrowNorth:(t,e)=>({top:Ff(t),left:t.right-e.width/2,name:"arrow_n"}),southEastArrowNorthEast:(t,e)=>({top:Ff(t),left:t.right-e.width+Vf.arrowHorizontalOffset,name:"arrow_ne"}),southEastArrowNorthWest:(t,e)=>({top:Ff(t),left:t.right-Vf.arrowHorizontalOffset,name:"arrow_nw"})};var Uf='\n',Hf='\n';n(58),n(60);const qf=Ul("px");class Wf extends _d{static get pluginName(){return"ContextualBalloon"}constructor(t){super(t),this.positionLimiter=(()=>{const t=this.editor.editing.view,e=t.document.selection.editableElement;return e?t.domConverter.mapViewToDom(e.root):null}),this.set("visibleView",null),this.view=new Vf(t.locale),t.ui.view.body.add(this.view),t.ui.focusTracker.add(this.view.element),this._viewToStack=new Map,this._idToStack=new Map,this.set("_numberOfStacks",0),this.set("_singleViewMode",!1),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}hasView(t){return Array.from(this._viewToStack.keys()).includes(t)}add(t){if(this.hasView(t.view))throw new Gn.b("contextualballoon-add-view-exist: Cannot add configuration of the same view twice.",[this,t]);const e=t.stackId||"main";if(!this._idToStack.has(e))return this._idToStack.set(e,new Map([[t.view,t]])),this._viewToStack.set(t.view,this._idToStack.get(e)),this._numberOfStacks=this._idToStack.size,void(this._visibleStack&&!t.singleViewMode||this.showStack(e));const n=this._idToStack.get(e);t.singleViewMode&&this.showStack(e),n.set(t.view,t),this._viewToStack.set(t.view,n),n===this._visibleStack&&this._showView(t)}remove(t){if(!this.hasView(t))throw new Gn.b("contextualballoon-remove-view-not-exist: Cannot remove the configuration of a non-existent view.",[this,t]);const e=this._viewToStack.get(t);this._singleViewMode&&this.visibleView===t&&(this._singleViewMode=!1),this.visibleView===t&&(1===e.size?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(e.values())[e.size-2])),1===e.size?(this._idToStack.delete(this._getStackId(e)),this._numberOfStacks=this._idToStack.size):e.delete(t),this._viewToStack.delete(t)}updatePosition(t){t&&(this._visibleStack.get(this.visibleView).position=t),this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition()}showStack(t){this.visibleStack=t;const e=this._idToStack.get(t);if(!e)throw new Gn.b("contextualballoon-showstack-stack-not-exist: Cannot show a stack that does not exist.",this);this._visibleStack!==e&&this._showView(Array.from(e.values()).pop())}get _visibleStack(){return this._viewToStack.get(this.visibleView)}_getStackId(t){return Array.from(this._idToStack.entries()).find(e=>e[1]===t)[0]}_showNextStack(){const t=Array.from(this._idToStack.values());let e=t.indexOf(this._visibleStack)+1;t[e]||(e=0),this.showStack(this._getStackId(t[e]))}_showPrevStack(){const t=Array.from(this._idToStack.values());let e=t.indexOf(this._visibleStack)-1;t[e]||(e=t.length-1),this.showStack(this._getStackId(t[e]))}_createRotatorView(){const t=new Yf(this.editor.locale),e=this.editor.locale.t;return this.view.content.add(t),t.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",(t,e)=>!e&&t>1),t.on("change:isNavigationVisible",()=>this.updatePosition(),{priority:"low"}),t.bind("counter").to(this,"visibleView",this,"_numberOfStacks",(t,n)=>{if(n<2)return"";const i=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return e("bl",[i,n])}),t.buttonNextView.on("execute",()=>{t.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showNextStack()}),t.buttonPrevView.on("execute",()=>{t.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showPrevStack()}),t}_createFakePanelsView(){const t=new $f(this.editor.locale,this.view);return t.bind("numberOfPanels").to(this,"_numberOfStacks",this,"_singleViewMode",(t,e)=>{return!e&&t>=2?Math.min(t-1,2):0}),t.listenTo(this.view,"change:top",()=>t.updatePosition()),t.listenTo(this.view,"change:left",()=>t.updatePosition()),this.editor.ui.view.body.add(t),t}_showView({view:t,balloonClassName:e="",withArrow:n=!0,singleViewMode:i=!1}){this.view.class=e,this.view.withArrow=n,this._rotatorView.showView(t),this.visibleView=t,this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition(),i&&(this._singleViewMode=!0)}_getBalloonPosition(){let t=Array.from(this._visibleStack.values()).pop().position;return t&&!t.limiter&&(t=Object.assign({},t,{limiter:this.positionLimiter})),t}}class Yf extends Ll{constructor(t){super(t);const e=t.t,n=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new al,this.buttonPrevView=this._createButtonView(e("bm"),Uf),this.buttonNextView=this._createButtonView(e("bn"),Hf),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-rotator"],"z-index":"-1"},children:[{tag:"div",attributes:{class:["ck-balloon-rotator__navigation",n.to("isNavigationVisible",t=>t?"":"ck-hidden")]},children:[this.buttonPrevView,{tag:"span",attributes:{class:["ck-balloon-rotator__counter"]},children:[{text:n.to("counter")}]},this.buttonNextView]},{tag:"div",attributes:{class:"ck-balloon-rotator__content"},children:this.content}]})}render(){super.render(),this.focusTracker.add(this.element)}showView(t){this.hideView(),this.content.add(t)}hideView(){this.content.clear()}_createButtonView(t,e){const n=new id(this.locale);return n.set({label:t,icon:e,tooltip:!0}),n}}class $f extends Ll{constructor(t,e){super(t);const n=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("height",0),this.set("width",0),this.set("numberOfPanels",0),this.content=this.createCollection(),this._balloonPanelView=e,this.setTemplate({tag:"div",attributes:{class:["ck-fake-panel",n.to("numberOfPanels",t=>t?"":"ck-hidden")],style:{top:n.to("top",qf),left:n.to("left",qf),width:n.to("width",qf),height:n.to("height",qf)}},children:this.content}),this.on("change:numberOfPanels",(t,e,n,i)=>{n>i?this._addPanels(n-i):this._removePanels(i-n),this.updatePosition()})}_addPanels(t){for(;t--;){const t=new Ll;t.setTemplate({tag:"div"}),this.content.add(t),this.registerChild(t)}}_removePanels(t){for(;t--;){const t=this.content.last;this.content.remove(t),this.deregisterChild(t),t.destroy()}}updatePosition(){if(this.numberOfPanels){const{top:t,left:e}=this._balloonPanelView,{width:n,height:i}=new xs(this._balloonPanelView.element);Object.assign(this,{top:t,left:e,width:n,height:i})}}}var Gf='';function Qf(t){const e=t.editing.view,n=Vf.defaultPositions;return{target:e.domConverter.viewToDom(e.document.selection.getSelectedElement()),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast]}}class Kf extends _d{static get requires(){return[Wf]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,e=t.t;t.ui.componentFactory.add("imageTextAlternative",n=>{const i=t.commands.get("imageTextAlternative"),o=new id(n);return o.set({label:e("bv"),icon:Gf,tooltip:!0}),o.bind("isEnabled").to(i,"isEnabled"),this.listenTo(o,"execute",()=>this._showForm()),o})}_createForm(){const t=this.editor,e=t.editing.view.document;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new Df(t.locale),this._form.render(),this.listenTo(this._form,"submit",()=>{t.execute("imageTextAlternative",{newValue:this._form.labeledInput.inputView.element.value}),this._hideForm(!0)}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),this._form.keystrokes.set("Esc",(t,e)=>{this._hideForm(!0),e()}),this.listenTo(t.ui,"update",()=>{fu(e.selection)?this._isVisible&&function(t){const e=t.plugins.get("ContextualBalloon");if(fu(t.editing.view.document.selection)){const n=Qf(t);e.updatePosition(n)}}(t):this._hideForm(!0)}),dd({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const t=this.editor,e=t.commands.get("imageTextAlternative"),n=this._form.labeledInput;this._isInBalloon||this._balloon.add({view:this._form,position:Qf(t)}),n.value=n.inputView.element.value=e.value||"",this._form.labeledInput.select()}_hideForm(t){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),t&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class Jf extends _d{static get requires(){return[Mf,Kf]}static get pluginName(){return"ImageTextAlternative"}}n(62);class Zf extends _d{static get requires(){return[wu,Cf,Jf]}static get pluginName(){return"Image"}}class Xf extends Ll{constructor(t){super(t),this.buttonView=new id(t),this._fileInputView=new tg(t),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",()=>{this._fileInputView.open()})}focus(){this.buttonView.focus()}}class tg extends Ll{constructor(t){super(t),this.set("acceptedType"),this.set("allowMultipleFiles",!1);const e=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:e.to("acceptedType"),multiple:e.to("allowMultipleFiles")},on:{change:e.to(()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""})}})}open(){this.element.click()}}var eg='';function ng(t){const e=t.map(t=>t.replace("+","\\+"));return new RegExp(`^image\\/(${e.join("|")})$`)}function ig(t){return new Promise((e,n)=>{const i=t.getAttribute("src");fetch(i).then(t=>t.blob()).then(t=>{const o=function(t,e){return t.type?t.type:e.match(/data:(image\/\w+);base64/)?e.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}(t,i),r=function(t,e,n){try{return new File([t],e,{type:n})}catch(t){return null}}(t,`image.${o.replace("image/","")}`,o);r?e(r):n()}).catch(n)})}class og extends _d{init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("imageUpload",n=>{const i=new Xf(n),o=t.commands.get("imageUpload"),r=t.config.get("image.upload.types"),s=ng(r);return i.set({acceptedType:r.map(t=>`image/${t}`).join(","),allowMultipleFiles:!0}),i.buttonView.set({label:e("s"),icon:eg,tooltip:!0}),i.buttonView.bind("isEnabled").to(o),i.on("done",(e,n)=>{const i=Array.from(n).filter(t=>s.test(t.type));i.length&&t.execute("imageUpload",{file:i})}),i})}}var rg='';n(64),n(66),n(68);class sg extends _d{constructor(t){super(t),this.placeholder="data:image/svg+xml;utf8,"+encodeURIComponent(rg)}init(){this.editor.editing.downcastDispatcher.on("attribute:uploadStatus:image",(...t)=>this.uploadStatusChange(...t))}uploadStatusChange(t,e,n){const i=this.editor,o=e.item,r=o.getAttribute("uploadId");if(!n.consumable.consume(e.item,t.name))return;const s=i.plugins.get(kh),a=r?e.attributeNewValue:null,c=this.placeholder,l=i.editing.mapper.toViewElement(o),d=n.writer;if("reading"==a)return ag(l,d),void cg(c,l,d);if("uploading"==a){const t=s.loaders.get(r);return ag(l,d),void(t?(lg(l,d),function(t,e,n,i){const o=function(t){const e=t.createUIElement("div",{class:"ck-progress-bar"});return t.setCustomProperty("progressBar",!0,e),e}(e);e.insert(e.createPositionAt(t,"end"),o),n.on("change:uploadedPercent",(t,e,n)=>{i.change(t=>{t.setStyle("width",n+"%",o)})})}(l,d,t,i.editing.view),function(t,e,n){if(n.data){const i=t.getChild(0);e.setAttribute("src",n.data,i)}}(l,d,t)):cg(c,l,d))}"complete"==a&&s.loaders.get(r)&&!go.isEdge&&function(t,e,n){const i=e.createUIElement("div",{class:"ck-image-upload-complete-icon"});e.insert(e.createPositionAt(t,"end"),i),setTimeout(()=>{n.change(t=>t.remove(t.createRangeOn(i)))},3e3)}(l,d,i.editing.view),function(t,e){hg(t,e,"progressBar")}(l,d),lg(l,d),function(t,e){e.removeClass("ck-appear",t)}(l,d)}}function ag(t,e){t.hasClass("ck-appear")||e.addClass("ck-appear",t)}function cg(t,e,n){e.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",e);const i=e.getChild(0);i.getAttribute("src")!==t&&n.setAttribute("src",t,i),dg(e,"placeholder")||n.insert(n.createPositionAfter(i),function(t){const e=t.createUIElement("div",{class:"ck-upload-placeholder-loader"});return t.setCustomProperty("placeholder",!0,e),e}(n))}function lg(t,e){t.hasClass("ck-image-upload-placeholder")&&e.removeClass("ck-image-upload-placeholder",t),hg(t,e,"placeholder")}function dg(t,e){for(const n of t.getChildren())if(n.getCustomProperty(e))return n}function hg(t,e,n){const i=dg(t,n);i&&e.remove(e.createRangeOn(i))}class ug{createDocumentFragment(t){return new Ao(t)}createElement(t,e,n){return new ki(t,e,n)}createText(t){return new fi(t)}clone(t,e=!1){return t._clone(e)}appendChild(t,e){return e._appendChild(t)}insertChild(t,e,n){return n._insertChild(t,e)}removeChildren(t,e,n){return n._removeChildren(t,e)}remove(t){const e=t.parent;return e?this.removeChildren(e.getChildIndex(t),1,e):[]}replace(t,e){const n=t.parent;if(n){const i=n.getChildIndex(t);return this.removeChildren(i,1,n),this.insertChild(i,e,n),!0}return!1}unwrapElement(t){const e=t.parent;if(e){const n=e.getChildIndex(t);this.remove(t),this.insertChild(n,t.getChildren(),e)}}rename(t,e){const n=new ki(t,e.getAttributes(),e.getChildren());return this.replace(e,n)?n:null}setAttribute(t,e,n){n._setAttribute(t,e)}removeAttribute(t,e){e._removeAttribute(t)}addClass(t,e){e._addClass(t)}removeClass(t,e){e._removeClass(t)}setStyle(t,e,n){T(t)&&void 0===n&&(n=e),n._setStyle(t,e)}removeStyle(t,e){e._removeStyle(t)}setCustomProperty(t,e,n){n._setCustomProperty(t,e)}removeCustomProperty(t,e){return e._removeCustomProperty(t)}createPositionAt(t,e){return Zi._createAt(t,e)}createPositionAfter(t){return Zi._createAfter(t)}createPositionBefore(t){return Zi._createBefore(t)}createRange(t,e){return new Xi(t,e)}createRangeOn(t){return Xi._createOn(t)}createRangeIn(t){return Xi._createIn(t)}createSelection(t,e,n){return new no(t,e,n)}}class fg extends Td{refresh(){this.isEnabled=pu(this.editor.model)}execute(t){const e=this.editor,n=e.model,i=e.plugins.get(kh);n.change(e=>{const o=Array.isArray(t.file)?t.file:[t.file];for(const t of o)gg(e,n,i,t)})}}function gg(t,e,n,i){const o=n.createLoader(i);o&&mu(t,e,{uploadId:o.id})}class mg extends _d{static get requires(){return[kh,uf,Ad]}static get pluginName(){return"ImageUploadEditing"}constructor(t){super(t),t.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}})}init(){const t=this.editor,e=t.model.document,n=t.model.schema,i=t.conversion,o=t.plugins.get(kh),r=ng(t.config.get("image.upload.types"));n.extend("image",{allowAttributes:["uploadId","uploadStatus"]}),t.commands.add("imageUpload",new fg(t)),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(t.editing.view.document,"clipboardInput",(e,n)=>{if(function(t){return Array.from(t.types).includes("text/html")&&""!==t.getData("text/html")}(n.dataTransfer))return;const i=Array.from(n.dataTransfer.files).filter(t=>!!t&&r.test(t.type)),o=n.targetRanges.map(e=>t.editing.mapper.toModelRange(e));t.model.change(n=>{n.setSelection(o),i.length&&(e.stop(),t.model.enqueueChange("default",()=>{t.execute("imageUpload",{file:i})}))})}),this.listenTo(t.plugins.get(Ad),"inputTransformation",(e,n)=>{const i=Array.from(t.editing.view.createRangeIn(n.content)).filter(t=>(function(t){return!(!t.is("element","img")||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))})(t.item)&&!t.item.getAttribute("uploadProcessed")).map(t=>({promise:ig(t.item),imageElement:t.item}));if(!i.length)return;const r=new ug;for(const t of i){r.setAttribute("uploadProcessed",!0,t.imageElement);const e=o.createLoader(t.promise);e&&(r.setAttribute("src","",t.imageElement),r.setAttribute("uploadId",e.id,t.imageElement))}}),t.editing.view.document.on("dragover",(t,e)=>{e.preventDefault()}),e.on("change",()=>{const n=e.differ.getChanges({includeChangesInGraveyard:!0});for(const e of n)if("insert"==e.type&&"$text"!=e.name){const n=e.position.nodeAfter,i="$graveyard"==e.position.root.rootName;for(const e of pg(t,n)){const t=e.getAttribute("uploadId");if(!t)continue;const n=o.loaders.get(t);n&&(i?n.abort():"idle"==n.status&&this._readAndUpload(n,e))}}})}_readAndUpload(t,e){const n=this.editor,i=n.model,o=n.locale.t,r=n.plugins.get(kh),s=n.plugins.get(uf);return i.enqueueChange("transparent",t=>{t.setAttribute("uploadStatus","reading",e)}),t.read().then(()=>{const o=t.upload();if(go.isSafari){const t=n.editing.mapper.toViewElement(e).getChild(0);n.editing.view.once("render",()=>{if(!t.parent)return;const e=n.editing.view.domConverter.mapViewToDom(t.parent);if(!e)return;const i=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=i})}return i.enqueueChange("transparent",t=>{t.setAttribute("uploadStatus","uploading",e)}),o}).then(t=>{i.enqueueChange("transparent",n=>{n.setAttributes({uploadStatus:"complete",src:t.default},e),this._parseAndSetSrcsetAttributeOnImage(t,e,n)}),a()}).catch(n=>{if("error"!==t.status&&"aborted"!==t.status)throw n;"error"==t.status&&n&&s.showWarning(n,{title:o("aq"),namespace:"upload"}),a(),i.enqueueChange("transparent",t=>{t.remove(e)})});function a(){i.enqueueChange("transparent",t=>{t.removeAttribute("uploadId",e),t.removeAttribute("uploadStatus",e)}),r.destroyLoader(t)}}_parseAndSetSrcsetAttributeOnImage(t,e,n){let i=0;const o=Object.keys(t).filter(t=>{const e=parseInt(t,10);if(!isNaN(e))return i=Math.max(i,e),!0}).map(e=>`${t[e]} ${e}w`).join(", ");""!=o&&n.setAttribute("srcset",{data:o,width:i},e)}}function pg(t,e){return Array.from(t.model.createRangeOn(e)).filter(t=>t.item.is("image")).map(t=>t.item)}class bg extends _d{static get pluginName(){return"ImageUpload"}static get requires(){return[mg,og,sg]}}class wg extends Td{refresh(){const t=this.editor.model,e=Uh(t.document.selection.getSelectedBlocks());this.value=!!e&&e.is("paragraph"),this.isEnabled=!!e&&kg(e,t.schema)}execute(t={}){const e=this.editor.model,n=e.document;e.change(i=>{const o=(t.selection||n.selection).getSelectedBlocks();for(const t of o)!t.is("paragraph")&&kg(t,e.schema)&&i.rename(t,"paragraph")})}}function kg(t,e){return e.checkChild(t.parent,"paragraph")&&!e.isObject(t)}class _g extends _d{static get pluginName(){return"Paragraph"}init(){const t=this.editor,e=t.model,n=t.data;t.commands.add("paragraph",new wg(t)),e.schema.register("paragraph",{inheritAllFrom:"$block"}),t.conversion.elementToElement({model:"paragraph",view:"p"}),t.conversion.for("upcast").elementToElement({model:(t,e)=>_g.paragraphLikeElements.has(t.name)?t.isEmpty?null:e.createElement("paragraph"):null,converterPriority:"low"}),n.upcastDispatcher.on("element",(t,e,n)=>{n.consumable.test(e.viewItem,{name:e.viewItem.name})&&yg(e.viewItem,e.modelCursor,n.schema)&&Object.assign(e,vg(e.viewItem,e.modelCursor,n))},{priority:"low"}),n.upcastDispatcher.on("text",(t,e,n)=>{e.modelRange||yg(e.viewItem,e.modelCursor,n.schema)&&Object.assign(e,vg(e.viewItem,e.modelCursor,n))},{priority:"lowest"}),e.document.registerPostFixer(t=>this._autoparagraphEmptyRoots(t)),t.data.on("ready",()=>{e.enqueueChange("transparent",t=>this._autoparagraphEmptyRoots(t))},{priority:"lowest"})}_autoparagraphEmptyRoots(t){const e=this.editor.model;for(const n of e.document.getRootNames()){const i=e.document.getRoot(n);if(i.isEmpty&&"$graveyard"!=i.rootName&&e.schema.checkChild(i,"paragraph"))return t.insertElement("paragraph",i),!0}}}function vg(t,e,n){const i=n.writer.createElement("paragraph");return n.writer.insert(i,e),n.convertItem(t,n.writer.createPositionAt(i,0))}function yg(t,e,n){const i=n.createContext(e);return!!n.checkChild(i,"paragraph")&&!!n.checkChild(i.push("paragraph"),t)}_g.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td"]);class xg extends Td{constructor(t,e){super(t),this.modelElements=e}refresh(){const t=Uh(this.editor.model.document.selection.getSelectedBlocks());this.value=!!t&&this.modelElements.includes(t.name)&&t.name,this.isEnabled=!!t&&this.modelElements.some(e=>Ag(t,e,this.editor.model.schema))}execute(t){const e=this.editor.model,n=e.document,i=t.value;e.change(t=>{const o=Array.from(n.selection.getSelectedBlocks()).filter(t=>Ag(t,i,e.schema));for(const e of o)e.is(i)||t.rename(e,i)})}}function Ag(t,e,n){return n.checkChild(t.parent,e)&&!n.isObject(t)}const Tg="paragraph";class Cg extends _d{static get pluginName(){return"HeadingEditing"}constructor(t){super(t),t.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[_g]}init(){const t=this.editor,e=t.config.get("heading.options"),n=[];for(const i of e)i.model!==Tg&&(t.model.schema.register(i.model,{inheritAllFrom:"$block"}),t.conversion.elementToElement(i),n.push(i.model));this._addDefaultH1Conversion(t),t.commands.add("heading",new xg(t,n))}afterInit(){const t=this.editor,e=t.commands.get("enter"),n=t.config.get("heading.options");e&&this.listenTo(e,"afterExecute",(e,i)=>{const o=t.model.document.selection.getFirstPosition().parent;n.some(t=>o.is(t.model))&&!o.is(Tg)&&0===o.childCount&&i.writer.rename(o,Tg)})}_addDefaultH1Conversion(t){t.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:Zn.get("low")+1})}}class Pg{constructor(t,e){e&&Li(this,e),t&&this.set(t)}}ci(Pg,Fi);n(10);class Sg extends _d{init(){const t=this.editor,e=t.t,n=function(t){const e=t.t,n={Paragraph:e("bw"),"Heading 1":e("bx"),"Heading 2":e("by"),"Heading 3":e("bz"),"Heading 4":e("ca"),"Heading 5":e("cb"),"Heading 6":e("cc")};return t.config.get("heading.options").map(t=>{const e=n[t.title];return e&&e!=t.title&&(t.title=e),t})}(t),i=e("f"),o=e("g");t.ui.componentFactory.add("heading",e=>{const r={},s=new oo,a=t.commands.get("heading"),c=t.commands.get("paragraph"),l=[a];for(const t of n){const e={type:"button",model:new Pg({label:t.title,class:t.class,withText:!0})};"paragraph"===t.model?(e.model.bind("isOn").to(c,"value"),e.model.set("commandName","paragraph"),l.push(c)):(e.model.bind("isOn").to(a,"value",e=>e===t.model),e.model.set({commandName:"heading",commandValue:t.model})),s.add(e),r[t.model]=t.title}const d=hd(e);return ud(d,s),d.buttonView.set({isOn:!1,withText:!0,tooltip:o}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(l,"isEnabled",(...t)=>t.some(t=>t)),d.buttonView.bind("label").to(a,"value",c,"value",(t,e)=>{const n=t||e&&"paragraph";return r[n]?r[n]:i}),this.listenTo(d,"execute",e=>{t.execute(e.source.commandName,e.source.commandValue?{value:e.source.commandValue}:void 0),t.editing.view.focus()}),d})}}function Mg(t){for(const e of t.getChildren())if(e&&e.is("caption"))return e;return null}function Eg(t){const e=t.parent;return"figcaption"==t.name&&e&&"figure"==e.name&&e.hasClass("image")?{name:!0}:null}class Ig extends _d{static get pluginName(){return"ImageCaptionEditing"}init(){const t=this.editor,e=t.editing.view,n=t.model.schema,i=t.data,o=t.editing,r=t.t;n.register("caption",{allowIn:"image",allowContentOf:"$block",isLimit:!0}),t.model.document.registerPostFixer(t=>this._insertMissingModelCaptionElement(t)),t.conversion.for("upcast").elementToElement({view:Eg,model:"caption"});i.downcastDispatcher.on("insert:caption",Ng(t=>t.createContainerElement("figcaption"),!1));const s=function(t,e){return n=>{const i=n.createEditableElement("figcaption");return n.setCustomProperty("imageCaption",!0,i),dl({view:t,element:i,text:e}),du(i,n)}}(e,r("ar"));o.downcastDispatcher.on("insert:caption",Ng(s)),o.downcastDispatcher.on("insert",this._fixCaptionVisibility(t=>t.item),{priority:"high"}),o.downcastDispatcher.on("remove",this._fixCaptionVisibility(t=>t.position.parent),{priority:"high"}),e.document.registerPostFixer(t=>this._updateCaptionVisibility(t))}_updateCaptionVisibility(t){const e=this.editor.editing.mapper,n=this._lastSelectedCaption;let i;const o=this.editor.model.document.selection,r=o.getSelectedElement();if(r&&r.is("image")){const t=Mg(r);i=e.toViewElement(t)}const s=Og(o.getFirstPosition().parent);if(s&&(i=e.toViewElement(s)),i)return n?n===i?Dg(i,t):(Rg(n,t),this._lastSelectedCaption=i,Dg(i,t)):(this._lastSelectedCaption=i,Dg(i,t));if(n){const e=Rg(n,t);return this._lastSelectedCaption=null,e}return!1}_fixCaptionVisibility(t){return(e,n,i)=>{const o=Og(t(n)),r=this.editor.editing.mapper,s=i.writer;if(o){const t=r.toViewElement(o);t&&(o.childCount?s.removeClass("ck-hidden",t):s.addClass("ck-hidden",t))}}}_insertMissingModelCaptionElement(t){const e=this.editor.model,n=e.document.differ.getChanges(),i=[];for(const t of n)if("insert"==t.type&&"$text"!=t.name){const n=t.position.nodeAfter;if(n.is("image")&&!Mg(n)&&i.push(n),!n.is("image")&&n.childCount)for(const t of e.createRangeIn(n).getItems())t.is("image")&&!Mg(t)&&i.push(t)}for(const e of i)t.appendElement("caption",e);return!!i.length}}function Ng(t,e=!0){return(n,i,o)=>{const r=i.item;if((r.childCount||e)&&gu(r.parent)){if(!o.consumable.consume(i.item,"insert"))return;const e=o.mapper.toViewElement(i.range.start.parent),n=t(o.writer),s=o.writer;r.childCount||s.addClass("ck-hidden",n),function(t,e,n,i){const o=i.writer.createPositionAt(n,"end");i.writer.insert(o,t),i.mapper.bindElements(e,t)}(n,i.item,e,o)}}}function Og(t){const e=t.getAncestors({includeSelf:!0}).find(t=>"caption"==t.name);return e&&e.parent&&"image"==e.parent.name?e:null}function Rg(t,e){return!t.childCount&&!t.hasClass("ck-hidden")&&(e.addClass("ck-hidden",t),!0)}function Dg(t,e){return!!t.hasClass("ck-hidden")&&(e.removeClass("ck-hidden",t),!0)}n(71);class Lg extends Td{constructor(t,e){super(t),this.defaultStyle=!1,this.styles=e.reduce((t,e)=>(t[e.name]=e,e.isDefault&&(this.defaultStyle=e.name),t),{})}refresh(){const t=this.editor.model.document.selection.getSelectedElement();if(this.isEnabled=gu(t),t)if(t.hasAttribute("imageStyle")){const e=t.getAttribute("imageStyle");this.value=!!this.styles[e]&&e}else this.value=this.defaultStyle;else this.value=!1}execute(t){const e=t.value,n=this.editor.model,i=n.document.selection.getSelectedElement();n.change(t=>{this.styles[e].isDefault?t.removeAttribute("imageStyle",i):t.setAttribute("imageStyle",e,i)})}}function jg(t,e){for(const n of e)if(n.name===t)return n}var Vg='',zg='',Bg='',Fg='';const Ug={full:{name:"full",title:"Full size image",icon:Vg,isDefault:!0},side:{name:"side",title:"Side image",icon:Fg,className:"image-style-side"},alignLeft:{name:"alignLeft",title:"Left aligned image",icon:zg,className:"image-style-align-left"},alignCenter:{name:"alignCenter",title:"Centered image",icon:Bg,className:"image-style-align-center"},alignRight:{name:"alignRight",title:"Right aligned image",icon:Fg,className:"image-style-align-right"}},Hg={full:Vg,left:zg,right:Fg,center:Bg};function qg(t=[]){return t.map(Wg)}function Wg(t){if("string"==typeof t){const e=t;Ug[e]?t=Object.assign({},Ug[e]):(console.warn(Object(Gn.a)("image-style-not-found: There is no such image style of given name."),{name:e}),t={name:e})}else if(Ug[t.name]){const e=Ug[t.name],n=Object.assign({},t);for(const i in e)t.hasOwnProperty(i)||(n[i]=e[i]);t=n}return"string"==typeof t.icon&&Hg[t.icon]&&(t.icon=Hg[t.icon]),t}class Yg extends _d{static get pluginName(){return"ImageStyleEditing"}init(){const t=this.editor,e=t.model.schema,n=t.data,i=t.editing;t.config.define("image.styles",["full","side"]);const o=qg(t.config.get("image.styles"));e.extend("image",{allowAttributes:"imageStyle"});const r=function(t){return(e,n,i)=>{if(!i.consumable.consume(n.item,e.name))return;const o=jg(n.attributeNewValue,t),r=jg(n.attributeOldValue,t),s=i.mapper.toViewElement(n.item),a=i.writer;r&&a.removeClass(r.className,s),o&&a.addClass(o.className,s)}}(o);i.downcastDispatcher.on("attribute:imageStyle:image",r),n.downcastDispatcher.on("attribute:imageStyle:image",r),n.upcastDispatcher.on("element:figure",function(t){const e=t.filter(t=>!t.isDefault);return(t,n,i)=>{if(!n.modelRange)return;const o=n.viewItem,r=Uh(n.modelRange.getItems());if(i.schema.checkAttribute(r,"imageStyle"))for(const t of e)i.consumable.consume(o,{classes:t.className})&&i.writer.setAttribute("imageStyle",t.name,r)}}(o),{priority:"low"}),t.commands.add("imageStyle",new Lg(t,o))}}n(73);class $g extends _d{static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const t=this.editor.t;return{"Full size image":t("h"),"Side image":t("i"),"Left aligned image":t("j"),"Centered image":t("k"),"Right aligned image":t("l")}}init(){const t=function(t,e){for(const n of t)e[n.title]&&(n.title=e[n.title]);return t}(qg(this.editor.config.get("image.styles")),this.localizedDefaultStylesTitles);for(const e of t)this._createButton(e)}_createButton(t){const e=this.editor,n=`imageStyle:${t.name}`;e.ui.componentFactory.add(n,n=>{const i=e.commands.get("imageStyle"),o=new id(n);return o.set({label:t.title,icon:t.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(i,"isEnabled"),o.bind("isOn").to(i,"value",e=>e===t.name),this.listenTo(o,"execute",()=>e.execute("imageStyle",{value:t.name})),o})}}class Gg extends _d{static get requires(){return[Wf]}static get pluginName(){return"WidgetToolbarRepository"}init(){const t=this.editor;if(t.plugins.has("BalloonToolbar")){const e=t.plugins.get("BalloonToolbar");this.listenTo(e,"show",e=>{(function(t){const e=t.getSelectedElement();return!(!e||!au(e))})(t.editing.view.document.selection)&&e.stop()},{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.listenTo(t.ui,"update",()=>{this._updateToolbarsVisibility()}),this.listenTo(t.ui.focusTracker,"change:isFocused",()=>{this._updateToolbarsVisibility()},{priority:"low"})}destroy(){super.destroy();for(const t of this._toolbarDefinitions.values())t.view.destroy()}register(t,{ariaLabel:e,items:n,getRelatedElement:i,balloonClassName:o="ck-toolbar-container"}){const r=this.editor,s=r.t,a=new gd(r.locale);if(a.ariaLabel=e||s("ax"),this._toolbarDefinitions.has(t))throw new Gn.b("widget-toolbar-duplicated: Toolbar with the given id was already added.",this,{toolbarId:t});a.fillFromConfig(n,r.ui.componentFactory),this._toolbarDefinitions.set(t,{view:a,getRelatedElement:i,balloonClassName:o})}_updateToolbarsVisibility(){let t=0,e=null,n=null;for(const i of this._toolbarDefinitions.values()){const o=i.getRelatedElement(this.editor.editing.view.document.selection);if(this.editor.ui.focusTracker.isFocused)if(o){const r=o.getAncestors().length;r>t&&(t=r,e=o,n=i)}else this._isToolbarInBalloon(i)&&this._hideToolbar(i);else this._isToolbarVisible(i)&&this._hideToolbar(i)}n&&this._showToolbar(n,e)}_hideToolbar(t){this._balloon.remove(t.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(t,e){this._isToolbarVisible(t)?Qg(this.editor,e):this._isToolbarInBalloon(t)||(this._balloon.add({view:t.view,position:Kg(this.editor,e),balloonClassName:t.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",()=>{for(const t of this._toolbarDefinitions.values())if(this._isToolbarVisible(t)){const e=t.getRelatedElement(this.editor.editing.view.document.selection);Qg(this.editor,e)}}))}_isToolbarVisible(t){return this._balloon.visibleView===t.view}_isToolbarInBalloon(t){return this._balloon.hasView(t.view)}}function Qg(t,e){const n=t.plugins.get("ContextualBalloon"),i=Kg(t,e);n.updatePosition(i)}function Kg(t,e){const n=t.editing.view,i=Vf.defaultPositions;return{target:n.domConverter.mapViewToDom(e),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}class Jg extends Td{constructor(t){super(t),this._childCommands=[]}refresh(){}execute(...t){this._getFirstEnabledCommand().execute(t)}registerChildCommand(t){this._childCommands.push(t),t.on("change:isEnabled",()=>this._checkEnabled()),this._checkEnabled()}_checkEnabled(){this.isEnabled=!!this._getFirstEnabledCommand()}_getFirstEnabledCommand(){return this._childCommands.find(t=>t.isEnabled)}}class Zg extends _d{static get pluginName(){return"IndentEditing"}init(){const t=this.editor;t.commands.add("indent",new Jg(t)),t.commands.add("outdent",new Jg(t))}}var Xg='\n',tm='\n';class em extends _d{static get pluginName(){return"IndentUI"}init(){const t=this.editor,e=t.locale,n=t.t,i="ltr"==e.uiLanguageDirection?Xg:tm,o="ltr"==e.uiLanguageDirection?tm:Xg;this._defineButton("indent",n("q"),i),this._defineButton("outdent",n("r"),o)}_defineButton(t,e,n){const i=this.editor;i.ui.componentFactory.add(t,o=>{const r=i.commands.get(t),s=new id(o);return s.set({label:e,icon:n,tooltip:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(s,"execute",()=>i.execute(t)),s})}}class nm extends Xr{constructor(t){super(t),this.domEventType="click"}onDomEvent(t){this.fire(t.type,t)}}n(75);class im extends Ll{constructor(t,e=[]){super(t);const n=t.t;this.focusTracker=new al,this.keystrokes=new Zc,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("bf"),Of,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("bg"),Rf,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(e),this.children=this._createFormChildren(e),this._focusables=new pl,this._focusCycler=new Wl({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const i=["ck","ck-link-form"];e.length&&i.push("ck-link-form_layout-vertical"),this.setTemplate({tag:"form",attributes:{class:i,tabindex:"-1"},children:this.children})}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce((t,e)=>(t[e.name]=e.isOn,t),{})}render(){super.render(),Nf({view:this}),[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const t=this.locale.t,e=new Ef(this.locale,If);return e.label=t("bh"),e.inputView.placeholder="https://example.com",e}_createButton(t,e,n,i){const o=new id(this.locale);return o.set({label:t,icon:e,tooltip:!0}),o.extendTemplate({attributes:{class:n}}),i&&o.delegate("execute").to(this,i),o}_createManualDecoratorSwitches(t){const e=this.createCollection();for(const n of t){const t=new ld(this.locale);t.set({name:n.id,label:n.label,withText:!0}),t.bind("isOn").to(n,"value"),t.on("execute",()=>{n.set("value",!t.isOn)}),e.add(t)}return e}_createFormChildren(t){const e=this.createCollection();if(e.add(this.urlInputView),t.length){const t=new Ll;t.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map(t=>({tag:"li",children:[t],attributes:{class:["ck","ck-list__item"]}})),attributes:{class:["ck","ck-reset","ck-list"]}}),e.add(t)}return e.add(this.saveButtonView),e.add(this.cancelButtonView),e}}var om='',rm='';n(77);class sm extends Ll{constructor(t){super(t);const e=t.t;this.focusTracker=new al,this.keystrokes=new Zc,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(e("bb"),om,"unlink"),this.editButtonView=this._createButton(e("bc"),rm,"edit"),this.set("href"),this._focusables=new pl,this._focusCycler=new Wl({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render(),[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createButton(t,e,n){const i=new id(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.delegate("execute").to(this,n),i}_createPreviewButton(){const t=new id(this.locale),e=this.bindTemplate,n=this.t;return t.set({withText:!0,tooltip:n("bd")}),t.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:e.to("href",t=>t&&Ju(t)),target:"_blank"}}),t.bind("label").to(this,"href",t=>t||n("be")),t.bind("isEnabled").to(this,"href",t=>!!t),t.template.tag="a",t.template.eventListeners={},t}}var am='';const cm="Ctrl+K";class lm extends _d{static get requires(){return[Wf]}static get pluginName(){return"LinkUI"}init(){const t=this.editor;t.editing.view.addObserver(nm),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=t.plugins.get(Wf),this._createToolbarLinkButton(),this._enableUserBalloonInteractions()}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const t=this.editor,e=new sm(t.locale),n=t.commands.get("link"),i=t.commands.get("unlink");return e.bind("href").to(n,"value"),e.editButtonView.bind("isEnabled").to(n),e.unlinkButtonView.bind("isEnabled").to(i),this.listenTo(e,"edit",()=>{this._addFormView()}),this.listenTo(e,"unlink",()=>{t.execute("unlink"),this._hideUI()}),e.keystrokes.set("Esc",(t,e)=>{this._hideUI(),e()}),e.keystrokes.set(cm,(t,e)=>{this._addFormView(),e()}),e}_createFormView(){const t=this.editor,e=t.commands.get("link"),n=new im(t.locale,e.manualDecorators);return n.urlInputView.bind("value").to(e,"value"),n.urlInputView.bind("isReadOnly").to(e,"isEnabled",t=>!t),n.saveButtonView.bind("isEnabled").to(e),this.listenTo(n,"submit",()=>{t.execute("link",n.urlInputView.inputView.element.value,n.getDecoratorSwitchesState()),this._closeFormView()}),this.listenTo(n,"cancel",()=>{this._closeFormView()}),n.keystrokes.set("Esc",(t,e)=>{this._closeFormView(),e()}),n}_createToolbarLinkButton(){const t=this.editor,e=t.commands.get("link"),n=t.t;t.keystrokes.set(cm,(t,n)=>{n(),e.isEnabled&&this._showUI(!0)}),t.ui.componentFactory.add("link",t=>{const i=new id(t);return i.isEnabled=!0,i.label=n("as"),i.icon=am,i.keystroke=cm,i.tooltip=!0,i.isToggleable=!0,i.bind("isEnabled").to(e,"isEnabled"),i.bind("isOn").to(e,"value",t=>!!t),this.listenTo(i,"execute",()=>this._showUI(!0)),i})}_enableUserBalloonInteractions(){const t=this.editor.editing.view.document;this.listenTo(t,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),this.editor.keystrokes.set("Tab",(t,e)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),e())},{priority:"high"}),this.editor.keystrokes.set("Esc",(t,e)=>{this._isUIVisible&&(this._hideUI(),e())}),dd({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const t=this.editor.commands.get("link");this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.select(),this.formView.urlInputView.inputView.element.value=t.value||""}_closeFormView(){const t=this.editor.commands.get("link");t.restoreManualDecoratorStates(),void 0!==t.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus())}_showUI(t=!1){this.editor.commands.get("link").isEnabled&&(this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),t&&this._balloon.showStack("main")):(this._addActionsView(),t&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI())}_hideUI(){if(!this._isUIInPanel)return;const t=this.editor;this.stopListening(t.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),t.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView)}_startUpdatingUI(){const t=this.editor,e=t.editing.view.document;let n=this._getSelectedLinkElement(),i=r();const o=()=>{const t=this._getSelectedLinkElement(),e=r();n&&!t||!n&&e!==i?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),n=t,i=e};function r(){return e.selection.focus.getAncestors().reverse().find(t=>t.is("element"))}this.listenTo(t.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const t=this.editor.editing.view,e=t.document,n=this._getSelectedLinkElement();return{target:n?t.domConverter.mapViewToDom(n):t.domConverter.viewRangeToDom(e.selection.getFirstRange())}}_getSelectedLinkElement(){const t=this.editor.editing.view,e=t.document.selection;if(e.isCollapsed)return dm(e.getFirstPosition());{const n=e.getFirstRange().getTrimmed(),i=dm(n.start),o=dm(n.end);return i&&i==o&&t.createRangeIn(i).getTrimmed().isEqual(n)?i:null}}}function dm(t){return t.getAncestors().find(t=>(function(t){return t.is("attributeElement")&&!!t.getCustomProperty("link")})(t))}class hm extends Td{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document,n=Array.from(e.selection.getSelectedBlocks()).filter(e=>fm(e,t.schema)),i=!0===this.value;t.change(t=>{if(i){let e=n[n.length-1].nextSibling,i=Number.POSITIVE_INFINITY,o=[];for(;e&&"listItem"==e.name&&0!==e.getAttribute("listIndent");){const t=e.getAttribute("listIndent");t=n;)r>o.getAttribute("listIndent")&&(r=o.getAttribute("listIndent")),o.getAttribute("listIndent")==r&&t[e?"unshift":"push"](o),o=o[e?"previousSibling":"nextSibling"]}}function fm(t,e){return e.checkChild(t.parent,"listItem")&&!e.isObject(t)}class gm extends Td{constructor(t,e){super(t),this._indentBy="forward"==e?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document;let n=Array.from(e.selection.getSelectedBlocks());t.change(t=>{const e=n[n.length-1];let i=e.nextSibling;for(;i&&"listItem"==i.name&&i.getAttribute("listIndent")>e.getAttribute("listIndent");)n.push(i),i=i.nextSibling;this._indentBy<0&&(n=n.reverse());for(const e of n){const n=e.getAttribute("listIndent")+this._indentBy;n<0?t.rename(e,"paragraph"):t.setAttribute("listIndent",n,e)}})}_checkEnabled(){const t=Uh(this.editor.model.document.selection.getSelectedBlocks());if(!t||!t.is("listItem"))return!1;if(this._indentBy>0){const e=t.getAttribute("listIndent"),n=t.getAttribute("listType");let i=t.previousSibling;for(;i&&i.is("listItem")&&i.getAttribute("listIndent")>=e;){if(i.getAttribute("listIndent")==e)return i.getAttribute("listType")==n;i=i.previousSibling}return!1}return!0}}function mm(t,e){const n=e.mapper,i=e.writer,o="numbered"==t.getAttribute("listType")?"ol":"ul",r=function(t){const e=t.createContainerElement("li");return e.getFillerOffset=vm,e}(i),s=i.createContainerElement(o,null);return i.insert(i.createPositionAt(s,0),r),n.bindElements(t,r),r}function pm(t,e,n,i){const o=e.parent,r=n.mapper,s=n.writer;let a=r.toViewPosition(i.createPositionBefore(t));const c=km(t.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:t.getAttribute("listIndent")}),l=t.previousSibling;if(c&&c.getAttribute("listIndent")==t.getAttribute("listIndent")){const t=r.toViewElement(c);a=s.breakContainer(s.createPositionAfter(t))}else a=l&&"listItem"==l.name?r.toViewPosition(i.createPositionAt(l,"end")):r.toViewPosition(i.createPositionBefore(t));if(a=wm(a),s.insert(a,o),l&&"listItem"==l.name){const t=r.toViewElement(l),n=s.createRange(s.createPositionAt(t,0),a).getWalker({ignoreElementEnd:!0});for(const t of n)if(t.item.is("li")){const i=s.breakContainer(s.createPositionBefore(t.item)),o=t.item.parent,r=s.createPositionAt(e,"end");bm(s,r.nodeBefore,r.nodeAfter),s.move(s.createRangeOn(o),r),n.position=i}}else{const n=o.nextSibling;if(n&&(n.is("ul")||n.is("ol"))){let i=null;for(const e of n.getChildren()){const n=r.toModelElement(e);if(!(n&&n.getAttribute("listIndent")>t.getAttribute("listIndent")))break;i=e}i&&(s.breakContainer(s.createPositionAfter(i)),s.move(s.createRangeOn(i.parent),s.createPositionAt(e,"end")))}}bm(s,o,o.nextSibling),bm(s,o.previousSibling,o)}function bm(t,e,n){return!e||!n||"ul"!=e.name&&"ol"!=e.name?null:e.name!=n.name||e.getAttribute("class")!==n.getAttribute("class")?null:t.mergeContainers(t.createPositionAfter(e))}function wm(t){return t.getLastMatchingPosition(t=>t.item.is("uiElement"))}function km(t,e){const n=!!e.sameIndent,i=!!e.smallerIndent,o=e.listIndent;let r=t;for(;r&&"listItem"==r.name;){const t=r.getAttribute("listIndent");if(n&&o==t||i&&o>t)return r;r=r.previousSibling}return null}function _m(t,e,n,i){t.ui.componentFactory.add(e,o=>{const r=t.commands.get(e),s=new id(o);return s.set({label:n,icon:i,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.on("execute",()=>t.execute(e)),s})}function vm(){const t=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||t?0:xi.call(this)}function ym(t){return(e,n,i)=>{const o=i.consumable;if(!o.test(n.item,"insert")||!o.test(n.item,"attribute:listType")||!o.test(n.item,"attribute:listIndent"))return;o.consume(n.item,"insert"),o.consume(n.item,"attribute:listType"),o.consume(n.item,"attribute:listIndent");const r=n.item;pm(r,mm(r,i),i,t)}}function xm(t,e,n){if(!n.consumable.consume(e.item,"attribute:listType"))return;const i=n.mapper.toViewElement(e.item),o=n.writer;o.breakContainer(o.createPositionBefore(i)),o.breakContainer(o.createPositionAfter(i));const r=i.parent,s="numbered"==e.attributeNewValue?"ol":"ul";o.rename(s,r)}function Am(t,e,n){const i=n.mapper.toViewElement(e.item).parent,o=n.writer;bm(o,i,i.nextSibling),bm(o,i.previousSibling,i);for(const t of e.item.getChildren())n.consumable.consume(t,"insert")}function Tm(t,e,n){if("listItem"!=e.item.name){let t=n.mapper.toViewPosition(e.range.start);const i=n.writer,o=[];for(;("ul"==t.parent.name||"ol"==t.parent.name)&&"li"==(t=i.breakContainer(t)).parent.name;){const e=t,n=i.createPositionAt(t.parent,"end");if(!e.isEqual(n)){const t=i.remove(i.createRange(e,n));o.push(t)}t=i.createPositionAfter(t.parent)}if(o.length>0){for(let e=0;e0){const e=bm(i,n,n.nextSibling);e&&e.parent==n&&t.offset--}}bm(i,t.nodeBefore,t.nodeAfter)}}}function Cm(t,e,n){const i=n.mapper.toViewPosition(e.position),o=i.nodeBefore,r=i.nodeAfter;bm(n.writer,o,r)}function Pm(t,e,n){if(n.consumable.consume(e.viewItem,{name:!0})){const t=n.writer,i=t.createElement("listItem"),o=function(t){let e=0,n=t.parent;for(;n;){if(n.is("li"))e++;else{const t=n.previousSibling;t&&t.is("li")&&e++}n=n.parent}return e}(e.viewItem);t.setAttribute("listIndent",o,i);const r=e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted";t.setAttribute("listType",r,i);const s=n.splitToAllowedParent(i,e.modelCursor);if(!s)return;t.insert(i,s.position);const a=function(t,e,n){const{writer:i,schema:o}=n;let r=i.createPositionAfter(t);for(const s of e)if("ul"==s.name||"ol"==s.name)r=n.convertItem(s,r).modelCursor;else{const e=n.convertItem(s,i.createPositionAt(t,"end")),a=e.modelRange.start.nodeAfter,c=a&&a.is("element")&&!o.checkChild(t,a.name);c&&(t=e.modelCursor.parent.is("listItem")?e.modelCursor.parent:Nm(e.modelCursor),r=i.createPositionAfter(t))}return r}(i,e.viewItem.getChildren(),n);e.modelRange=t.createRange(e.modelCursor,a),s.cursorParent?e.modelCursor=t.createPositionAt(s.cursorParent,0):e.modelCursor=e.modelRange.end}}function Sm(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){const t=Array.from(e.viewItem.getChildren());for(const e of t){!(e.is("li")||Rm(e))&&e._remove()}}}function Mm(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){if(0===e.viewItem.childCount)return;const t=[...e.viewItem.getChildren()];let n=!1,i=!0;for(const e of t)n&&!Rm(e)&&e._remove(),e.is("text")?(i&&(e._data=e.data.replace(/^\s+/,"")),e.nextSibling&&!Rm(e.nextSibling)||(e._data=e.data.replace(/\s+$/,""))):Rm(e)&&(n=!0),i=!1}}function Em(t){return(e,n)=>{if(n.isPhantom)return;const i=n.modelPosition.nodeBefore;if(i&&i.is("listItem")){const e=n.mapper.toViewElement(i),o=e.getAncestors().find(Rm),r=t.createPositionAt(e,0).getWalker();for(const t of r){if("elementStart"==t.type&&t.item.is("li")){n.viewPosition=t.previousPosition;break}if("elementEnd"==t.type&&t.item==o){n.viewPosition=t.nextPosition;break}}}}}function Im(t,[e,n]){let i,o=e.is("documentFragment")?e.getChild(0):e;if(i=n?this.createSelection(n):this.document.selection,o&&o.is("listItem")){const t=i.getFirstPosition();let e=null;if(t.parent.is("listItem")?e=t.parent:t.nodeBefore&&t.nodeBefore.is("listItem")&&(e=t.nodeBefore),e){const t=e.getAttribute("listIndent");if(t>0)for(;o&&o.is("listItem");)o._setAttribute("listIndent",o.getAttribute("listIndent")+t),o=o.nextSibling}}}function Nm(t){const e=new Hs({startPosition:t});let n;do{n=e.next()}while(!n.value.item.is("listItem"));return n.value.item}function Om(t,e,n,i,o,r){const s=km(e.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:t,foo:"b"}),a=o.mapper,c=o.writer,l=s?s.getAttribute("listIndent"):null;let d;if(s)if(l==t){const t=a.toViewElement(s).parent;d=c.createPositionAfter(t)}else{const t=r.createPositionAt(s,"end");d=a.toViewPosition(t)}else d=n;d=wm(d);for(const t of[...i.getChildren()])Rm(t)&&(d=c.move(c.createRangeOn(t),d).end,bm(c,t,t.nextSibling),bm(c,t.previousSibling,t))}function Rm(t){return t.is("ol")||t.is("ul")}class Dm extends _d{static get pluginName(){return"ListEditing"}static get requires(){return[_g]}init(){const t=this.editor;t.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const e=t.data,n=t.editing;t.model.document.registerPostFixer(e=>(function(t,e){const n=t.document.differ.getChanges(),i=new Map;let o=!1;for(const i of n)if("insert"==i.type&&"listItem"==i.name)r(i.position);else if("insert"==i.type&&"listItem"!=i.name){if("$text"!=i.name){const n=i.position.nodeAfter;n.hasAttribute("listIndent")&&(e.removeAttribute("listIndent",n),o=!0),n.hasAttribute("listType")&&(e.removeAttribute("listType",n),o=!0);for(const e of Array.from(t.createRangeIn(n)).filter(t=>t.item.is("listItem")))r(e.previousPosition)}r(i.position.getShiftedBy(i.length))}else"remove"==i.type&&"listItem"==i.name?r(i.position):"attribute"==i.type&&"listIndent"==i.attributeKey?r(i.range.start):"attribute"==i.type&&"listType"==i.attributeKey&&r(i.range.start);for(const t of i.values())s(t),a(t);return o;function r(t){const e=t.nodeBefore;if(e&&e.is("listItem")){let n=e;if(i.has(n))return;for(;n.previousSibling&&n.previousSibling.is("listItem");)if(n=n.previousSibling,i.has(n))return;i.set(t.nodeBefore,n)}else{const e=t.nodeAfter;e&&e.is("listItem")&&i.set(e,e)}}function s(t){let n=0,i=null;for(;t&&t.is("listItem");){const r=t.getAttribute("listIndent");if(r>n){let s;null===i?(i=r-n,s=n):(i>r&&(i=r),s=r-i),e.setAttribute("listIndent",s,t),o=!0}else i=null,n=t.getAttribute("listIndent")+1;t=t.nextSibling}}function a(t){let n=[],i=null;for(;t&&t.is("listItem");){const r=t.getAttribute("listIndent");if(i&&i.getAttribute("listIndent")>r&&(n=n.slice(0,r+1)),0!=r)if(n[r]){const i=n[r];t.getAttribute("listType")!=i&&(e.setAttribute("listType",i,t),o=!0)}else n[r]=t.getAttribute("listType");i=t,t=t.nextSibling}}})(t.model,e)),n.mapper.registerViewToModelLength("li",Lm),e.mapper.registerViewToModelLength("li",Lm),n.mapper.on("modelToViewPosition",Em(n.view)),n.mapper.on("viewToModelPosition",function(t){return(e,n)=>{const i=n.viewPosition,o=i.parent,r=n.mapper;if("ul"==o.name||"ol"==o.name){if(i.isAtEnd){const e=r.toModelElement(i.nodeBefore),o=r.getModelLength(i.nodeBefore);n.modelPosition=t.createPositionBefore(e).getShiftedBy(o)}else{const e=r.toModelElement(i.nodeAfter);n.modelPosition=t.createPositionBefore(e)}e.stop()}else if("li"==o.name&&i.nodeBefore&&("ul"==i.nodeBefore.name||"ol"==i.nodeBefore.name)){const s=r.toModelElement(o);let a=1,c=i.nodeBefore;for(;c&&Rm(c);)a+=r.getModelLength(c),c=c.previousSibling;n.modelPosition=t.createPositionBefore(s).getShiftedBy(a),e.stop()}}}(t.model)),e.mapper.on("modelToViewPosition",Em(n.view)),n.downcastDispatcher.on("insert",Tm,{priority:"high"}),n.downcastDispatcher.on("insert:listItem",ym(t.model)),e.downcastDispatcher.on("insert",Tm,{priority:"high"}),e.downcastDispatcher.on("insert:listItem",ym(t.model)),n.downcastDispatcher.on("attribute:listType:listItem",xm,{priority:"high"}),n.downcastDispatcher.on("attribute:listType:listItem",Am,{priority:"low"}),n.downcastDispatcher.on("attribute:listIndent:listItem",function(t){return(e,n,i)=>{if(!i.consumable.consume(n.item,"attribute:listIndent"))return;const o=i.mapper.toViewElement(n.item),r=i.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,c=r.createRangeOn(s);r.remove(c),a&&a.nextSibling&&bm(r,a,a.nextSibling),Om(n.attributeOldValue+1,n.range.start,c.start,o,i,t),pm(n.item,o,i,t);for(const t of n.item.getChildren())i.consumable.consume(t,"insert")}}(t.model)),n.downcastDispatcher.on("remove:listItem",function(t){return(e,n,i)=>{const o=i.mapper.toViewPosition(n.position).getLastMatchingPosition(t=>!t.item.is("li")).nodeAfter,r=i.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,c=r.createRangeOn(s),l=r.remove(c);a&&a.nextSibling&&bm(r,a,a.nextSibling),Om(i.mapper.toModelElement(o).getAttribute("listIndent")+1,n.position,c.start,o,i,t);for(const t of r.createRangeIn(l).getItems())i.mapper.unbindViewElement(t);e.stop()}}(t.model)),n.downcastDispatcher.on("remove",Cm,{priority:"low"}),e.upcastDispatcher.on("element:ul",Sm,{priority:"high"}),e.upcastDispatcher.on("element:ol",Sm,{priority:"high"}),e.upcastDispatcher.on("element:li",Mm,{priority:"high"}),e.upcastDispatcher.on("element:li",Pm),t.model.on("insertContent",Im,{priority:"high"}),t.commands.add("numberedList",new hm(t,"numbered")),t.commands.add("bulletedList",new hm(t,"bulleted")),t.commands.add("indentList",new gm(t,"forward")),t.commands.add("outdentList",new gm(t,"backward"));const i=n.view.document;this.listenTo(i,"enter",(t,e)=>{const n=this.editor.model.document,i=n.selection.getLastPosition().parent;n.selection.isCollapsed&&"listItem"==i.name&&i.isEmpty&&(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),this.listenTo(i,"delete",(t,e)=>{if("backward"!==e.direction)return;const n=this.editor.model.document.selection;if(!n.isCollapsed)return;const i=n.getFirstPosition();if(!i.isAtStart)return;const o=i.parent;"listItem"===o.name&&(o.previousSibling&&"listItem"===o.previousSibling.name||(this.editor.execute("outdentList"),e.preventDefault(),t.stop()))},{priority:"high"});const o=t=>(e,n)=>{this.editor.commands.get(t).isEnabled&&(this.editor.execute(t),n())};t.keystrokes.set("Tab",o("indentList")),t.keystrokes.set("Shift+Tab",o("outdentList"))}afterInit(){const t=this.editor.commands,e=t.get("indent"),n=t.get("outdent");e&&e.registerChildCommand(t.get("indentList")),n&&n.registerChildCommand(t.get("outdentList"))}}function Lm(t){let e=1;for(const n of t.getChildren())if("ul"==n.name||"ol"==n.name)for(const t of n.getChildren())e+=Lm(t);return e}var jm='',Vm='';class zm extends _d{init(){const t=this.editor.t;_m(this.editor,"numberedList",t("o"),jm),_m(this.editor,"bulletedList",t("p"),Vm)}}function Bm(t,e){return t=>{t.on("attribute:url:media",n)};function n(n,i,o){if(!o.consumable.consume(i.item,n.name))return;const r=i.attributeNewValue,s=o.writer,a=o.mapper.toViewElement(i.item);s.remove(s.createRangeIn(a));const c=t.getMediaViewElement(s,r,e);s.insert(s.createPositionAt(a,0),c)}}function Fm(t,e,n,i){const o=t.createContainerElement("figure",{class:"media"});return o.getFillerOffset=qm,t.insert(t.createPositionAt(o,0),e.getMediaViewElement(t,n,i)),o}function Um(t){const e=t.getSelectedElement();return e&&e.is("media")?e:null}function Hm(t,e,n){t.change(i=>{const o=i.createElement("media",{url:e});t.insertContent(o,n),i.setSelection(o,"on")})}function qm(){return null}class Wm extends Td{refresh(){const t=this.editor.model,e=t.document.selection,n=t.schema,i=e.getFirstPosition(),o=Um(e);let r=i.parent;r!=r.root&&(r=r.parent),this.value=o?o.getAttribute("url"):null,this.isEnabled=n.checkChild(r,"media")}execute(t){const e=this.editor.model,n=e.document.selection,i=Um(n);if(i)e.change(e=>{e.setAttribute("url",t,i)});else{const i=hu(n,e);Hm(e,t,i)}}}var Ym='';const $m="0 0 64 42";class Gm{constructor(t,e){const n=e.providers,i=e.extraProviders||[],o=new Set(e.removeProviders),r=n.concat(i).filter(t=>{const e=t.name;return e?!o.has(e):(console.warn(Object(Gn.a)("media-embed-no-provider-name: The configured media provider has no name and cannot be used."),{provider:t}),!1)});this.locale=t,this.providerDefinitions=r}hasMedia(t){return!!this._getMedia(t)}getMediaViewElement(t,e,n){return this._getMedia(e).getViewElement(t,n)}_getMedia(t){if(!t)return new Qm(this.locale);t=t.trim();for(const e of this.providerDefinitions){const n=e.html;let i=e.url;Array.isArray(i)||(i=[i]);for(const e of i){const i=this._getUrlMatches(t,e);if(i)return new Qm(this.locale,t,i,n)}}return null}_getUrlMatches(t,e){let n=t.match(e);if(n)return n;let i=t.replace(/^https?:\/\//,"");return(n=i.match(e))?n:(n=(i=i.replace(/^www\./,"")).match(e))||null}}class Qm{constructor(t,e,n,i){this.url=this._getValidUrl(e),this._t=t.t,this._match=n,this._previewRenderer=i}getViewElement(t,e){const n={};if(e.renderForEditingView||e.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(n["data-oembed-url"]=this.url),e.renderForEditingView&&(n.class="ck-media__wrapper");const i=this._getPreviewHtml(e);return t.createUIElement("div",n,function(t){const e=this.toDomElement(t);return e.innerHTML=i,e})}return this.url&&(n.url=this.url),t.createEmptyElement("oembed",n)}_getPreviewHtml(t){return this._previewRenderer?this._previewRenderer(this._match):this.url&&t.renderForEditingView?this._getPlaceholderHtml():""}_getPlaceholderHtml(){const t=new nd,e=new ed;return t.text=this._t("Open media in new tab"),e.content=Ym,e.viewBox=$m,new wl({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[e]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]},t]}]}).render().outerHTML}_getValidUrl(t){return t?t.match(/^https?/)?t:"https://"+t:null}}n(79);class Km extends _d{static get pluginName(){return"MediaEmbedEditing"}constructor(t){super(t),t.config.define("mediaEmbed",{providers:[{name:"dailymotion",url:/^dailymotion\.com\/video\/(\w+)/,html:t=>{return'
'+`
'}},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:t=>{return'
'+`
'}},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)/,/^youtube\.com\/embed\/([\w-]+)/,/^youtu\.be\/([\w-]+)/],html:t=>{return'
'+`
'}},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:t=>{return'
'+`
'}},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:/^google\.com\/maps/},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new Gm(t.locale,t.config.get("mediaEmbed"))}init(){const t=this.editor,e=t.model.schema,n=t.t,i=t.conversion,o=t.config.get("mediaEmbed.previewsInData"),r=this.registry;t.commands.add("mediaEmbed",new Wm(t)),e.register("media",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["url"]}),i.for("dataDowncast").elementToElement({model:"media",view:(t,e)=>{const n=t.getAttribute("url");return Fm(e,r,n,{renderMediaPreview:n&&o})}}),i.for("dataDowncast").add(Bm(r,{renderMediaPreview:o})),i.for("editingDowncast").elementToElement({model:"media",view:(t,e)=>{const i=t.getAttribute("url");return function(t,e,n){return e.setCustomProperty("media",!0,t),cu(t,e,{label:n})}(Fm(e,r,i,{renderForEditingView:!0}),e,n("ap"))}}),i.for("editingDowncast").add(Bm(r,{renderForEditingView:!0})),i.for("upcast").elementToElement({view:{name:"oembed",attributes:{url:!0}},model:(t,e)=>{const n=t.getAttribute("url");if(r.hasMedia(n))return e.createElement("media",{url:n})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(t,e)=>{const n=t.getAttribute("data-oembed-url");if(r.hasMedia(n))return e.createElement("media",{url:n})}})}}const Jm=/^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w.-]+)+[\w\-._~:/?#[\]@!$&'()*+,;=]+$/;class Zm extends _d{static get requires(){return[Ad,ph]}static get pluginName(){return"AutoMediaEmbed"}constructor(t){super(t),this._timeoutId=null,this._positionToInsert=null}init(){const t=this.editor,e=t.model.document;this.listenTo(t.plugins.get(Ad),"inputTransformation",()=>{const t=e.selection.getFirstRange(),n=Lc.fromPosition(t.start);n.stickiness="toPrevious";const i=Lc.fromPosition(t.end);i.stickiness="toNext",e.once("change:data",()=>{this._embedMediaBetweenPositions(n,i),n.detach(),i.detach()},{priority:"high"})}),t.commands.get("undo").on("execute",()=>{this._timeoutId&&(tr.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedMediaBetweenPositions(t,e){const n=this.editor,i=n.plugins.get(Km).registry,o=new oa(t,e),r=o.getWalker({ignoreElementEnd:!0});let s="";for(const t of r)t.item.is("textProxy")&&(s+=t.item.data);if(!(s=s.trim()).match(Jm))return;if(!i.hasMedia(s))return;n.commands.get("mediaEmbed").isEnabled&&(this._positionToInsert=Lc.fromPosition(t),this._timeoutId=tr.window.setTimeout(()=>{n.model.change(t=>{let e;this._timeoutId=null,t.remove(o),"$graveyard"!==this._positionToInsert.root.rootName&&(e=this._positionToInsert),Hm(n.model,s,e),this._positionToInsert.detach(),this._positionToInsert=null})},100))}}n(81);class Xm extends Ll{constructor(t,e){super(e);const n=e.t;this.focusTracker=new al,this.keystrokes=new Zc,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("bf"),Of,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("bg"),Rf,"ck-button-cancel","cancel"),this._focusables=new pl,this._focusCycler=new Wl({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._validators=t,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form"],tabindex:"-1"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]})}render(){super.render(),Nf({view:this}),[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)}),this.keystrokes.listenTo(this.element);const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(this.urlInputView.element,"selectstart",(t,e)=>{e.stopPropagation()},{priority:"high"})}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.inputView.element.value.trim()}set url(t){this.urlInputView.inputView.element.value=t.trim()}isValid(){this.resetFormStatus();for(const t of this._validators){const e=t(this);if(e)return this.urlInputView.errorText=e,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const t=this.locale.t,e=new Ef(this.locale,If),n=e.inputView;return this._urlInputViewInfoDefault=t("br"),this._urlInputViewInfoTip=t("bs"),e.label=t("bt"),e.infoText=this._urlInputViewInfoDefault,n.placeholder="https://example.com",n.on("input",()=>{e.infoText=n.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault}),e}_createButton(t,e,n,i){const o=new id(this.locale);return o.set({label:t,icon:e,tooltip:!0}),o.extendTemplate({attributes:{class:n}}),i&&o.delegate("execute").to(this,i),o}}var tp='';class ep extends _d{static get requires(){return[Km]}static get pluginName(){return"MediaEmbedUI"}init(){const t=this.editor,e=t.commands.get("mediaEmbed"),n=t.plugins.get(Km).registry;this.form=new Xm(function(t,e){return[e=>{if(!e.url.length)return t("an")},n=>{if(!e.hasMedia(n.url))return t("ao")}]}(t.t,n),t.locale),t.ui.componentFactory.add("mediaEmbed",n=>{const i=hd(n);return this._setUpDropdown(i,this.form,e,t),this._setUpForm(this.form,i,e),i})}_setUpDropdown(t,e,n){const i=this.editor,o=i.t,r=t.buttonView;function s(){i.editing.view.focus(),t.isOpen=!1}t.bind("isEnabled").to(n),t.panelView.children.add(e),r.set({label:o("am"),icon:tp,tooltip:!0}),r.on("open",()=>{e.url=n.value||"",e.urlInputView.select(),e.focus()},{priority:"low"}),t.on("submit",()=>{e.isValid()&&(i.execute("mediaEmbed",e.url),s())}),t.on("change:isOpen",()=>e.resetFormStatus()),t.on("cancel",()=>s())}_setUpForm(t,e,n){t.delegate("submit","cancel").to(e),t.urlInputView.bind("value").to(n,"value"),t.urlInputView.bind("isReadOnly").to(n,"isEnabled",t=>!t),t.saveButtonView.bind("isEnabled").to(n)}}n(83);function np(t,e){if(!t.childCount)return;const n=new ug,i=function(t,e){const n=e.createRangeIn(t),i=new bi({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),o=[];for(const t of n)if("elementStart"===t.type&&i.match(t.item)){const e=ip(t.item);o.push({element:t.item,id:e.id,order:e.order,indent:e.indent})}return o}(t,n);if(!i.length)return;let o=null;i.forEach((t,r)=>{if(!o||function(t,e){if(t.id!==e.id)return!0;const n=e.element.previousSibling;if(!n)return!0;return!function(t){return t.is("ol")||t.is("ul")}(n)}(i[r-1],t)){const i=function(t,e){const n=/mso-level-number-format:([^;]*);/gi,i=new RegExp(`@list l${t.id}:level${t.indent}\\s*({[^}]*)`,"gi").exec(e);let o="decimal";if(i&&i[1]){const t=n.exec(i[1]);t&&t[1]&&(o=t[1].trim())}return{type:"bullet"!==o&&"image"!==o?"ol":"ul",style:o}}(t,e);o=function(t,e,n){const i=new ki(t.type),o=e.parent.getChildIndex(e);return n.insertChild(o,i,e.parent),i}(i,t.element,n)}const s=function(t,e){return function(t,e){const n=new bi({name:"span",styles:{"mso-list":"Ignore"}}),i=e.createRangeIn(t);for(const t of i)"elementStart"===t.type&&n.match(t.item)&&e.remove(t.item)}(t,e),e.rename("li",t)}(t.element,n);n.appendChild(s,o)})}function ip(t){const e={},n=t.getStyle("mso-list");return n&&(e.id=parseInt(n.match(/(^|\s+)l(\d+)/i)[2]),e.order=parseInt(n.match(/\s*lfo(\d+)/i)[1]),e.indent=parseInt(n.match(/\s*level(\d+)/i)[1])),e}const op=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class rp{isActive(t){return op.test(t)}execute(t){const e=new ug;!function(t,e){for(const n of t.getChildren())if(n.is("b")&&"normal"===n.getStyle("font-weight")){const i=t.getChildIndex(n);e.remove(n),e.insertChild(i,n.getChildren(),t)}}(t.content,e),function(t,e){for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("li")){const n=t.getChild(0);n.is("p")&&e.unwrapElement(n)}}}(t.content,e)}}function sp(t){return t.replace(/(\s+)<\/span>/g,(t,e)=>1===e.length?" ":Array(e.length+1).join("  ").substr(0,e.length))}function ap(t){const e=new DOMParser,n=function(t){return sp(sp(t)).replace(/([\s]*?)[\r\n]+(\s*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>(\s*[\r\n]\s*)<")}(function(t){const e=t.match(/<\/body>(.*?)(<\/html>|$)/);e&&e[1]&&(t=t.slice(0,e.index)+t.slice(e.index).replace(e[1],""));return t}(t=t.replace(/b(5@k$?R3 z%76W@f8%$*zvtoo$lcw4bW_|iM zbxQ5$4+-q05prkMLrAD*wtYhc#GK~cs29N82-;DQc|Q{-f}%8py;g$sM%x@z0`5ji zp|kw}qJoK15z;UsG0~O{_l_N!EBn@n!EYvWhbFByhCCwT)CSw`oZkvB=M4#oAs$Fs z`w$W{LLkM&aXxT39>8HQJEa!3ZD+ZxtlQE(5E^buh>;i~t#&_Q7&FtDF)O&$j;n4> zB9DPPIpHcaced+7-8aT@BnIuQ$8U~ikPg#RQc@JQviA?CASiCqi#7o(bT?HY_Lhhk zR5w(ODE$V;oIr!ybRYoD5cM1Mzcm8DtUKu;1m-C*j{`XiDL63-Wv}3hG`fp#6-1Gg zsIA}%c?v{va&XW-@zm%vY1r+6jX5JxSwo|!l2ay)!ZST%lW*CLFJE8y z{NF~6L~O>r_4Mj=0j#ajvNjX({W&$CyvJx!!Qw3Cd9}z9GLRV!|4O{ z`<^tou5avRq1MXz{Kl6rpLzQF#MAQ&zkYt=AOHBozy9qXeEGUkt8;zZNkNHGF$=hX zSt6!>13NoQsRRrSipFjpO;hH>HxJz1&5Xl9$|GihkQ~B_L_uOtNgNM}G$f)1LL3qL zK~F7FYDLq~S*Q0Kv^4`2LQFI>M1^sl@X%YAN{0cvQWf+9RG4S!@k@p|&`1tUVj~@aL_eZ|{_B-zGM`G-#B?Kj= zKx|zJL{VJ9y%3^MYXk4-(#+5Zr@NU_Hk!2?2Uo=D$rSC=lDUEC4MX(?_1iCZAVgw@ zwpUu~SR-jdMd|&fCr~d>=TNq-bw$7{5AZ&ZZTj6esh{HT8OYJe3hx<&*g<;%D zxtlF1DzD-gI}Z;7#K?JD*xSnX{02D7(gk6RkZ%P*MsEF_H3! z%7E3xJROK3&?Gaa%;nm6DUFl@=dBUXfxRq*0CUb9rcBI2%y2wq?(QZ|$IR(&;&hxD z=YiwlNKBcSGt+$P@yKyRwI2XCC}m~Y&Nswy;rZp6fBf(d{{F)ceEE9j)2C-1e|hBd zdo+ri1h@N30O_2Msl9e;J64eChi{YxqrClaGF@xh2?FNcJa=C1n zL1>B=C&q*-x1mljSKKNwDM2D;Mm6JjcO(rU?8M8qksRd4+uS?TTXrEvAqFR8#ROsq zM2T2+RD^Np@~YZOYlR%8X969xbpRhlNm*$P#wk&2!@PG#H=`O9x0}(?J4dAAYP>vG z%D#3cV_>a+kfZ^nXNbeijBBcRj-6SnqYe~j8b%P<%F5xeQw>@%g20dxLyDLeTqD=z z%#T0*1LMr;G@xpTD@H+rF&z_eP~s4Id0qMG*Yk~M3Rb+wnP}apQK)`1BO8RMtjmIX z#}{IaB+@5b>qUIuE8+u!vX;V-4OPcm#Z?hCL^g(T0_n!Ywrsff8)&!ECy=JByYXCW z$2pp@7C6iY=6NKi$eczJ10n&5N4DjPU%gKm220#IzjZ7i+Re&o9++ljo+5`aFb{!u z?|M-_97f)Mc<6Xz>JhtfI+F6pG@qE}BZfgUwsPSwfB7r_^XnHbmot}T;mhZ*eERv3 zpMLtn4?ln5hfmKue!X(NI&asFx*3O?ahfGCjtA!HfuJ+34#+*7Tq>h>B9JrN@V#Z$E zKl!QC8?ZMcYNsDo8#(qwftk<*mi3Js#%^wDWXc(6#FWU{sC#2uR$8cp+r;QNyA?`v z2%SAsz$=JLm-{jTy(oP7TKM_L|IWYu-#_rX??3SU?>_L?zkI`=|MGi=DYL9Qwe+7E zLqLIX%uG2DV>d)&3=G4_FihlW1ifdkjnBV+;qmiVYHb9%p^g5Q7w@=Ct$%J%S}Wi; zwL>@4Vi4@sT+O6&WSk*S+}$as(}Cl0?q+zSH%0n6>;tqSuA~%E7uIb9Qdj)~8Un|| z%sgg}^VH*rqQnrX%?O&%TfREP4B~)xRg(ua1Y&Cp(@blXJPcjot%WqqXcUmdURL%} zu-b?c;Fbb$>y1Uc8+}8H+~1#whEQr}xlWIr1Q9|5Ertd|3n+n{0wzwrbuV|vWT&>B zs*Z&&Pn3vAm($)VYu(w+2`SRNl5z*^we}nK7A5a2sTP_j!Jw^$b+42LPM{VDt_(S0 zR@nEIkP@{)b0-f83EeQO#rhO47c_vlk%zT|d^2)z=5ZjRR13r*@_9S+<@t$!|M4dd zC*d?F=6S{tL=*FP;24ZNj-==$h4W=a)oE64Y!mi#5fUh#>Be|Z?JBKwyhiw18S98_uiSS({A}xaRYjmvDC)86odv+NMT@k zydv5da%2dJsF5-K#)BiMFpe`rKCtcG4etvEGix!P-!6>9#F#URkYnI@+!?Yn9|MQu zFN{;-beOn%IB|b>;@$gq4D+GqF>~k>kitB5-0|++POF7~`Qy&zKfiK$d*kKpt+VE@ zFTA{*`SRt3zyJ6v&rb{c4%c-f4ii-}rH!nwjhq7GG_r1n)D;QcHIE@ucgJW98Qdy* zi)me#y|Y>uh>k?qw}R?Gvs(d)(s|*sBhsUB&(?Hm`A#(>=M2H1 zHr$M|Rf>1y)>G3#4AHcGzws(FwtE3x1XQ*_aDFVum8`#^QXW3$nkEZ?gc@(zdLdFaL3^= z^3Aso{NZ;W`0(MLJmzjp#oY7Ws%VM~znT3CpMQN~yKW#x8V7;~O0mx2-EoP85c=7Y zUOZJmr6-^CHl1!uC1gcZdg^ED7)C^hsiT!zD>-%L4p7_80KUDpnbB_MU`H06>rc5e zeY1`=G(^-5x4k!R5!_)bJ7qV7OiY0gI!Oo#M3v+5o}A~7Gi&QgDUV#QSC+LQ7W%+e zD=|i@8EKG*ap_&UuLzaCJtsn2RxD+Rjw_Vb9dD$EzW1QG zIqS9(VqXO5$qS=O2i~o%B<*=bP@)EwT4~;IRx_ia1d-b`+`zS)U}Q_65= zo(DdBxFc$0xoluvV!5}z5aPY_+AZEgaGG>ZEkS8sa0ij@(gq2L*^Q+u&5YVMS~HSH z2;E3(btk7tj*)fUXr)oghS3crtChXA+m>O)tO0!kOjT)KDYhf64{=xD`weBUsK7km z9P8M#rzuX1VZ`uM?U@f#M8@} zr}KqFSl1nEl^A<*H8V;zw%?K?F0AW@Lq|Cwa6Ydz zYpm-^GsjK1zAd!1F^q|KAMZ#BLUhKVaetTby5T6zDtnTfyzcj4(1s*o7)QD-VSW41 zl@JE}<#uK{b$cHJ4qk;6Rk?)`z^efz-M)0w~i^*c`YGcn#& zaqC4cjhUDeZg83=^dr2TuWV)OCN>TCLJU3Qz1MDNis~)%9Z(Y*wTB6UkdhKo=k_`0 zzG*18{C_K8weK9Xf_uU|Qg`c-R}XzJLV8W>=c22UAth{c;;ndxsDvT*odr7MPpKR0 z>sJ2BghdqygwQkMAwuaw$^cYWR&gPC( zgKI$n4L9eo>?p>yHM;MXZV1Ai?`O-X%$7xdpE<8-wKmE z)mra((s{5|!{x@WYR4hhR-ro8a^HfJOw!1;Re}!W>A<=NmUE?*hDt-Z@ZqD8qjFt0 zltxMkqepjgvi_dLQE6=3hSS68do4Fps25{?Yk19RwO?QjiDEqjzit)0F{MlnUE(g+ zim0)y8*Q%;dr-5Q-4S|$ z2Ik|yH1)-y9F=+MX@mRuz}?}9neqGYK5+f(8`pK`y6l|auDrcn*|)}W-B_2#`F!R1 z`H6<%^!q?fZmYO~m~$U4QexlBEoW>fV0$B&kYhpuol`b$8*@$$eR+e{FcJ1`V;B>) zHP*J%inA^oiW4+24FlVdn$1+GqhAD*3nnV9@Vto_Pwda4g>JS=gjTHKVR;!gtk5CRVfd#Hx!9&J8 zab8xwyj=PBAHVWn`FFnk_&2`${>XRVz2ln?51j7rIGhgTA)!IgD5Q{hcYnvj{fXn@ zz;$`!x-9@qQ$k#C(YSh(?SeID8U_Sm-&gj%;3~wVH|*dc|`e2|-=an|i6lE(vbYk!GL)K{~h> z$77cRId>C90Fyv$zoO&f7?lvA?!ANm>5t!IZoDoFlDlAO+eR=WCShxp^{McBwqDpg zB4SkE{^_bFrLVxYzNONeL0=_Rbz;0R7f*QeoAhf0AcfRTvm7xh#k6NkYXyOv1DgAD zAKV&VD*Ils4T>4aNC*L=}*B-LJUDsv}_1{=Q2pH$bfu$D_dWD+Q^4Uxz&j3|B4 zA?L*DFmRZszCwSCNXhM45+MyNJ4iEL-<13)3^}427^j7Cilk8qp)ih#X^6xuJUq-i z+)a!_Bu`UU4N=HxAjZJyF!FFb&}!$|eE|es&R0Hveq^tO%eruWd1JX0_S!ezmi7A2 zh~zjXsPz`n3bfj8hfT3s*~IbMMSV~~tl;ce>#|np=b&1_cRGI9Dna07E$n+w%ADr8 z^Zb2BZp#yz9MKBesAWT}Z*B<@HSkfnTq;o&RcAettAxXx@vr4KG4B(BRWUO+UpMl&GmOJOHw-5-W=@nUt(j|xy8^bu?d>23>&(CL`pU=|jlZyuom*~`$k7F%;timb73;TbN~ z-75|6j{p%j^C(J7K|H9NLJ+*~rwDbcV&-0pNvp<~vb%O#pb}`cProSziJ_|sTm+{t zDFwmW#{KE&*ZVs;zr6M{J48`!SaY|vN-f2wX+S0QxlGk#52JTeqj*ECzxHq8?HnWb z?*`J)r_+@C>K|*DRCyklhkW#lh&CnVtN7jAkvMs#4Ui%kUZ$=jt!BJ6) z*zH*qg4=DwN_t02ft%yf<6)|uU#kdX$~TimnTCMoOz}RoZySWr9ql|Thtt5eTzPwK zoSz%T^j7?Pysk9w+1a+UHf1;j?mqkpAC6RyupiDX?r6YGFu< z)y7&|H`Sy+13^TkZV^(yxcO6QV%fY2FB$ z`YQV^*0?NPW;;e+gk=xRO9oe_aUcd|91p0Dq~U<8gTby!5@pYQ-FsOV+LzW>=WS;g zGV?qUqcF|SOjBeWoa3>(>BAv%Ivq%<8)m=dQiq%vr$mTJ=Huk=-W_l;mSy4j>sLO1 ze&YH0%5vFIspPEWAmXBwU3|YH`(>q7r4;dXU&v#Wkb-+Fxb?J;Tfw}MhTHJqh%Spu z48)MRURSQ?g&Z@gLDuW$BFgKy-PUyxaix~#tzBe1M9+g_Y6K0EV)9a}Yt0+%2z{?ya#Fw6l@ueo7ZDXI#$JmTZv>5! zLw2P~+sze~pm+*VIwx&t?9aC_+YyN_L`l=gFh#E+%G-7Kr>}3s7$l^g;4m`hx3xbQ z2fsZqsr7VIt*EMqb{^ax2xQU`%O-dqnoy^<=59?cmn%R2^2l;262eH`cP_67KEAu- za0sl|Mf&=*xSL7{JvO*(8(#a9EabMDt*QhG(gmXuQugR!K3+kVaxmpp6`(M4-nk zZckHlD&o=$q$&@01MeRqX%Y_iiH8p}U%$TcZ~ywpy7a`ws+CWlzj8Qa!Vrl=BBX{y zCEd1XWDr7fV&CG-6In(*V_Ep0dxgN^L7K zsH;|jL~&c#x79CiUx`B&4Urmxw-_lk5N{LoR;%Q3a1g1cyuH5qI1QptfVBUgsW9uT4J0oO2Dy5>;duL_&}tNPy7jpWTlF8X!o4Y*MVME>ShOuDh*WC#+V6)w-8q)#0tJ!8!@vvRZd_wH>7EdyEZY zusHAPcJOkx>FW9ES}w2m^>~~GGHKour-}Vtsuvgca<_-O{Y0sboJFqg?lD$y-ip%L zY?V@kqV9!i=V~p2lv-*M5#5W-v)bpVqTnm(#262;;HsJeC9;j;0T97O*c%;cxw!wbH zAl_I6$P}69OlN~w>qv1COhUwAgV!9AQz=jf=wA` z>SKhp=E7`^EYY&xS45=dENbhrRZ7m}vQ)|_wuWk~2h&N)rLw^7)m~1Y4Ry1ADkV$Z zZqMY^%WvxChYL!D-S(7XXW6YbeEr>D@b1Ug96$UZXWJELCmzg9=PT!@s~SR;DQ2j- zPE#Tq!{9}d6(CEk1s6OU?+_=HlJSE`A1pOSdM{F|qZX@>6AYzfhTh59HegJ}y8uv+ zJFlnf;W=Gky}zsP=nB-c!wE7dv4QJT{P#8`Z{#+P1l&UkSQevq7mIVD7j z?9+mCR(u!mRtRAsmIddKA$06^11BdN3H^xg0?s@7Unu4ZF~&CT z$%GiA&Y)D8MnlRO*LfWfDvkb^aJFEHbXBmaFfR$`jV!Tk>rG&PyknXthF-nH)<%MN z?DtC}-et%dv$aKtwI~llMCAu`Y3H454~N>MI?s|cwd$P8kwrXKAb4S{l`4sD705*x z=R_?TW1ND*Byzf2bAIaR!i?BT#*%AhN$MVPHsHN}ha7_OUUyKX;C$DXbw(%2qzlDb zH8E?fzP>m|Lf=zS#HRO_3{ahJibNM*>8OM`a@8PMsl0vrp4G7C>+il)&{$Dj*jv|V zd-BN0u*NpWiMpOpkxD0GZ*iSES#VaP?n$M;Qp#f_TvM8g39a_eCWs{_=6TUIz6gB? zic_u7jf)=ERS2P115`;kv4W{edrdV#m8$$w1^A>Wq{Yf~tW;U*VLi%tj2sUO^IWSb zg))v}O@}x~x}GT}5;_HGRFS&c_F}DYJkD4Yrzavc^AH$GVgOUYS%;CL#(AWs_JpKa zii83hNpIIhkw(L+R>QJbusFeZzTsilau4#X2v z6{*69ckkGozL2wLueiUvlIQ1^FTeT=`O}}?^V91Obh{JD=m+%t)wlfBZ~m5lx_!&` zWJ~BYOrsAb5wVuFPVurVmK3whS(t8@=CiB}9Sp&ejYgllu4@FYLe=RQ?+l1xS)xpH zA|}Y`9wFm2vMVVj?hlE%=+inIORkkv3KJ1m6HbKeEV(3QSgZmukA$MhBN`5Ij?L3u zVp~G>ILQPNbzO9h7!Av!s6#hpd|xrSVg$PJ^6XTSamdI)y z5J|)am)f3e8P;oRHFWlb|NNi-7ry!C74tN4eRIQy&sV&Ecgu$lcO32u^8`rGJZpk% z69Pse-gVTv=z_V?{l=v*=aI0sm`=zMyfav5Iov4{v-ei{-rlrD^^7%@!||Y@iwuWp zLL|`zM~RgfX&zpc37xTRa#b{`LAf2ZR!YrS8!*$qwIDY$$BEy)Lgsr(P$9lqUs`wUAh@31fxOd1baZt3e0> z+j&gYh_yAAT=npEPM5EiiZ~%g4Mcgb={AQZSW}wYchpd`en&M4*QjWnBQ0tfwN`X@ zQk9WRE)D7xu_jPcCPxio#2DF}2D%nra@A10S0qGCh=H6kHAQkRq!?MI5oaC!&^OnY zP-qEEr}V}OjccOe5!2vPF7!B4Pza@1YE2jeQbkHC%vrA&S2qhW@9|wFbVaVO0{6#} z>+6UqPNWDaL6!(PQAJ%1^H^Bs8ETQc>jR;)D$G9swJW0YTGi`AY2k^ITAE5I#)uJJ z&{WC#;>D0Cj#$@$ACwod zEaY0r)1KFV`d9q0p&xc!TwZf_{*14_`;H&qeB$L-Kj-9h$81Sx0+ag0wkYmOBge))} zDod!uqoMD?dj&<6YM7!lUw9#>qNew(vF)0ZCL2qk7e}lp|HD|uI3h`ZB;Kgy%>|El zp5CiZRZJxWo!WCzko`1eE-nrnkA)B{DUBFOTwkjNsiNSad7d#IjL(#+%dgY3HNkbv z`y*d}{gl7`&9C{zFMmnFu*8wOyBltA?zz0Y;^N|h51+2Myq@@YvFF`~J1%bS8A4FE zOBmYH3B)8~zUJHS&iLQ|kH6;j_KG(@y~p(fsZ_2nP(SfuW;|BvG13Qx@*A1SNlA(^ zWe($nwMGXSQ4(NHI$e5eu_%mQjA`*-{ZTJjZ<=u#G1epEnP=V4fLcFOQMZlQ4#eWT zWzI7>qdsD5uz0AB&<9>T*|FUOf^!<5E>UTC%S0uxvIg&bbBSb%(fvaut3@>zsss&H zh{^>uE9gh8F66DTT13!nehK& zcSabT!6F2&1UL~T3C{COjER_wz7DD6v_R9hbIwGQGzjB#(F>8|{m4AcM4Koz6MDs` zrX}f3!4-^@R=8lAo5MfaPeX88u0hL4Q}wBua)BgzQUP~|iNhH6Ov?%Rw@i|#41l)E zQP7%hw2d`Lf=a?rsiq(zOov5Tr&c%lMFksOV>V7sZdU*+(zchP7WZ1nwKj zZ(b_Kl@=z@$f386BBg;xiaIT-9`HFv9G1@Mp*YV4i;zWAfq6NC?GaWu*Q@obWbQuw z!29)ce(_g-!%`>awD9WNU-02_&zm3Lv+BPmW;mLKv(r;nzy3A%A1d?V9Tzt@9F9Ut z2BZ+G&^b@3`VRWu;DTp~up~=PhGmZWnp5TeZfeUT&$uW|$+@bs%u+clnTl05bJQp)Ly1WWbf7tiOLj$7g zM8Cv@SdRpYceEcqG)jBsY9uG{@Q5R(b))X!;=jK%n)LI#*iDD~VZ>VLW_m-#UjxtAB3SJBzL+1iE ztPpd~`N=ElSA}`ra~Ss=kN4c%-tpL8Eo6bEc1+WmfV*8%J!(3)^t(5!5gDkOQ*7c6lv+vLQN_=ijj6( zR?4I9M|or?TW49O39=}^r0PT47_|rHlA2#x4?LXm9~Asv5iFh8)Zoy2PB$I*$B2^! ztezXxqK>DOsaap!d>F|Tx?w=PGzrf)-@e}XD7tg9&ao_t9ks!*#7X1d6n$v4<{L3W ztyx`4Mgua|YKX|C3^^$pvP!e2LaV9CWF62jwJpxj$|PwuHd003WCUgK=v9D{Nj2%A zYAvPc|5KlEqVSQnWK$i;lG?{mP%shgKvl|~#xk84Wj(miDq(b!$pgvFS}c~tqVzKq zGB4;4UEcux;aLo}Xi88kY>d9n7^yuN+aXav0>1ZLy?e`(=U?#Zo3Gg)4s6fQ_|;#1 z&+q^7cbq>t=h=%V9QT);Y-XH=EsE$vJ(JXh+R}4=u!zmX97)yS zZLh~z^O0KTsKs#@BlpJxVzdP%c-U<^HoGk$ba-zlDH7)yoTB^)Rmeen4`h!p(iu)EYwH4LU^|Pakxm3L$6` zwB4vuip8YxWR3G!1RHXUI^|Q_?5wkjw zj4^6KRK0+~>BQ`PV7(rA@#>t@d1g9BViZz^xEvJVBkqx@$f(0?YH z0y9lV)|6f))!d>N&@9!Eb8|1~0a_Y7!E6Ok7-AVRDGSf9niH!9(A*uA9ZG5EMgVgC)Tu1 zt55v!&;Kud=vY5F=Xf}BwtK?MFTdpdhtE8F@eCnwb#bJ7xngtnicgo(7DR#cHrb>gIGh?IWUDK z9$WYYBKq))Qz6ck*t**uZbT&(PIeo8I_In!pQ&`gGmbOIVs$Tg7{uvNnk)<~-{eFZNQ4kA_Z5~y-<@D1$4ew5LZb!@#>l?^$~!B^91L#tIrzZoOKW2Jr?2gWUC@u z)oXUm^$|_^P*Egeu{jfrr=*dRiZ*PRs&FT#(QKDnfXnElS!$v*Czmmr43tKX6EbPe z>f&+I++IznsCtWkkRS>==rx9?cHyCLr(xaE4ayo8shn&AxreJX5{v=UQN=awJ7TSW z3~AMzSc1ouLdr>R7Q=w|ia5@Rqt-@fUwrwBi_fpQ zzRo;(vSoex1y5dmO`IdACxP`KlzD=pHYM*o7ngg+u{JP2gkTtRDTDA!}?HmrsnXQ$6w z9Z+JPNAB*fxVpV2EiBQ%;^v;)t3Chz!v*(uGhT$D5BfP+LyQxJ=3`9- z>-BdMmqa#^&M4$OS4dQ*MJuh8@$89NA8aKiB_g);pSPalF%qoMg#cNYQlSg(aUkjX zjzI!lFs%B(5Ip^=(ej;tW*`moig z6@wDhD769Nb;E9(L?A|^x>`r0Jc`-?)uzEvN`s~7Vfyf)7rll(c$TfQ-*U^8TdUj$ zL|Xb-Be1C!)a<2CD|wibO=3xR^lS*eSDvjHpvUCG$9KQO1jpAu{}rnhton{8&(3-G z;WNA4IWciz}|E@k*b#(JX3b`^W3$^bgr0T3=4^M)^A{uA)dp)aR~Prpb0YJE z<8k8qZ%=sh?vmGUuekm^QLNgZDm}ha!2B>&QaU1%8N34`eP?iDG$FSnO0oE^qdeSh z+wap_r@y~eAZo;d0dE{R7Gj)`V2Lq!}#h9MwMPY-1HPy|5*@+bRD*NTQjRp+s#nD5Y007dxw70e@Q(wYEb6TW{Jo@CCUomL;WSWq4#5jjDg&1$C3by6Ln?Dh{6z{7<#a}$(tFM2-xWDJ--M_1D=Nr@5b!>-$uU?%gWF}?eWGG47gXgT^616eS zm|AdEs7ur)|k_V+a!g>EMH<8)vglj0qXYqlC`TAS+dtJT127@#Vq&^eW$ ztT9j${*nHdwe`D3L>wz06bD(VPAH9TmuYSXYYBcuT2wXxp+uo(t@#oo%(aph)wGv6 zKVI`h)V?KR$O+~tgPDl6Ai=ZDQEPlsMrvWz2ZW4uRk!$7ud^XI%F-Uj?Q7IqPv|_Z z7w!&w<|#47NQ$=kWCP>kd~w1151)AR?h~KhUhwJt6&E)% z_s6P~LZ{0%>jW!FzX!4qf_k>4cgkfj7Uu%w z_qFI-WNK#UI!?A7FP@)LjYZSq77BSSvx5k z99~=5ZL`85{6KYToS9{bOv?Nlw0_tdSxg_ZU4}HV%ES% zDooSV&Ny`~<*Ze7C8f5rP}#*f*Y-4`1+9iQDT>vtVEe-#4pXCg0~i&4HQCnMXdcP} zrAZWRqnm4OH9~*Zh~+`@Q0=4DmVj$lA3cDxYDo`Z4?!oM2j_)rKnG(mR=tL{0Yv2q+`a-9N}b7MYT6UifEzTrY^uTd74uRkapc3> z*X(wu^s5*2E64ehGd_O2X^ZM4RETo=6wP2-KkOJTcol?ef z(hYd9hAFic;z#+Q*IO@@7#Eh5=z}&uFDVhH<{z)RxXB4fLKlX1-D_WV(Q;fV+In81 z#&L~UhQ22Z9qVo2?8OeZ4!nJTN4Z*H%+!1!vw%&Eam3Nz-Fk};T3hz>pGC%L&)w}c zcemGEUtaR|?R$Rs={7{A!rvsLdDB;>BWcHqdoliwP^= zCQHUzL)Z1nJQwgzZ$&vj?243Lw!}y&M!mi@lhTZJf)Ph*jnU3o-Pz>Sm@fK|u8k9| z+HU3c=8jLFJ~8bVq0)>BbHBzMFyu!DvGn6?ue?lTvMR!i~%rZy3bj@`GVlVcRe{z$S5)SUU^#WRNO zio=|U5!Nedl}VKnEjj5_d3U>4kpFV0Qyqb{bR3SBzF*xs+HGuPK6<38cN!w08TXg285+c|0$oP(MYG3hcaOJXSt&Ib*jv_Z++K&@J% z*7u5RJv-YfQ=tmuln@g*&XckwykHFk=jfax7j0Z8sxNrFy2pFZX0v9Rq6SuauR98( zoS4SQR7S~h#u$$=Np)Ju$lO92&NSOwBBrESgytM^*0m+u+}g$qpD!-?(;q)@bun@A z@diWSn{Qw6#mfy#o|)sq-TpwLXUUQK>jU*_&y%N5`TAtV>GLyU%#7ng%DN!zZHEgQ zCASTLZ-c{HIF3hh)}m!+tWNzDMJ-eR0AjK^iNdW4Hn zte>=&=!Zj%s#LKDf|@7-@;_?C+Q!twfNW|7w9tu>cjjE=HGnGf8 zSgo~je$|_o+a5Ky*4AL0{`VyktfsWE^-*q6vpD3UlQ@mNszE+oBIZ;{>7k@SmykMD znC1j=NSR3UEj|dVRnIa_EXONKT47A!^P7L88#rn!jhDOJ1)vdO-oWeyxF!4 z>bs6r4>u!DH@sP+w#Iw<&{0xUXGwbx6r-3a>434GQY`ZlC5d>%ei5z?}- zOrtJJmx@Dh){=~&I`uY_GGm$$qa-pXx>W0}GEbJg5OW4mPH#y?xAD$uxdBS)uMcIj z0-4ctFzD|ANTy>Pk-b$zxfMRt2H76>)kn>ckK7K*nUO7>T%8}6WW&6`kbiDOiN^*qsG0B zuv+&GY_AS8?-l-EVk8w<#Rjd<&Boi#tWqkes*bH)c}k%(POW;*8)3@o?K8$UdEnuH zQW{|&ifJb6qFjNJ^}uw_AQr8&7f~~IRVJO02ggpEOe@qjbrqV7A?mRd9;|iJ_@gu} zTjdH7#n{!N_LkiItyoIFjcM?*hKxAZ4LMLn@Abd&bShC0TyJ1V^=w&FPBgrEvLSk6ZP`$#U^|&&hW? zzWDNM#@j32kGJ4G&Lo~b-9k3Zr5X3Dq81}ymP(PzyeI=U$BZ#qBf?AO_K*;F#P$wr zS{-^3ZO@g8OTyt0@uG`4txK;YFLa^V1G8gU3L$ieRF$y)N^1r)#{iEE5cCAx@FBWU2_qab%hn_366GxQyBoQd)CF5w@E%ydRYj{n_yT z-6hYSE^LO%>6v4<>*)v2db8r}$q8p?8`j$mo$u(witT1iMJK7B|7_y+?w*^Qdp>^p zz{k(meEN99zrX&(o40q|-DPSWINmLoEUb51UEIlnMIXLalD0G#Js6$WnjzdfSnK4gWa_%C0m8T8~RSubjy;^f0gw5R5K|V`fd$1wSa)56xD-$=k?lK7slgE9~{mV zrU^*1;xE@Ql?b&E^N8ym2&7mD)?#aE&A3+U<*mmSXSe2o2g=+c3?|&kZm{X7_1Z)7at1(f`wEJu^n7fj9R|1fWZ^5W<+}We#3gT<8bU4 zr_3rCx_6qM8#<2(!fNe#{(Ru{bYQ*edGch(`O|GnA8uH68&*%(ym&Mp&-5WGr`)>xdioSp4hZ#ueO z>&pt7kjzCZ&6Fn|H4TUU-Hbp^3FizaCmZ^qW141d0V=fia~MZ0DK%ET@DDfGCCv&~ zuet;doohu6`f%le$CArq6EwvzP7^j3s?|f>8qbp_Cs=3L-yZ4vBi45WSJ`wu&TKf` z-?6_r^3U)8z`NJ)c(U8F>U)0i{kH_a=E?IrPS4MH^5ltzR-8&&A`qOG-j-o1ZdKP*T5@f_F|K*$r)1t$IarhQp+`J7a_;7xhH9wgil7 zg$@fMI;a=@AsstEU&ANc9tRO9~TFTUiPZ(lGSMm~SO!kAM& zeB85HdrqEx$?3}ruHOF}wT|TCF;sfz*$yjq>j6U|r=w042(iLAFS^8#gcXPBJU@K6 z<~UZyIAf)f+7DpK$|APLA+<7kp>wufAN8RIktrT$-(I|*5#z$O2a))F_F{KmWzp+X1q7#xTpu-8Vpgdxl$P8g7sR1M9wU6Ld--w+;Kc!5p2(u z_4Hj&-}MZu9^YkM3YEz2O`z)xo3-W1SDNTN>hSEU^i^o4qIM5 zf61@D|0Tz9;`V;e)zuA`7gv1z@R2ufKJxDU74P2PaCaAR!E>_RaMo=wt(s{V26m@s z^y`jPg*Yl@PO70FR;s-hjrYpK5?(|v^3%d@Gqm88!t9SrBqsF^JLBkj{p{yu#@N1L zH1$l04d&y#W1Nn-tmj5bsaa_Cp)BUXa;e{;S~AvX%-I^p^RQ)ECXAVJE@BLf<1H(v zx7zJiSZ@aA*&|r)_X{_-iMOAA%kTd1mM>qN@!ik9;(z}2FZtr@=L{Py6`fw0|X zsaE$MDNm$0qh-?V^$FA#GU~dHahz16HBcIZ-8sj0W7v<7@`5y8h%usUikxecRi!QE zT5njAe{rMVe|HN+P`SR-*eDm{{{Of=J13&%n zBf)>muo?O8n+?yt{24#|^qRl_hrgqj$Y3fbtH8--VBHyAlGUcC8;dwcUb0@xJ8hr1 zxtq18YnoVX9iewfs*FkRGg1njZx6&;85d=y*7^|Z9EdSB_lh93Mao6fOEE6YDQfT} zdzPe&)G_LUG021!%bYY+uuR$$XPq#`x&65dDb=<(n$$JoodyW%qA+_@0>L(bP1Plu z7=;)aYZw=W+Q&shB&OY_g4IP*F+wbJTksma=34E9^RCAl!!k_>7VkZkNe8c*FNtcz3JI(I?hhlJbAifcd{n*mi6|8 z)q2DF{G8`co{_#)n%MDp^7`-TYR_D zzeii(gy41CA4Pc>Iblj^zIV@(wMEBhj~Gi#FbT%#&}D5qPTKXHX0y}Zr*eTc&{gPr zZ4z4MS<7{8z*c#bC?Pe_jz^58Uv&y{m-0A8mr{w-!aUD>y1c=;6)8?k^{6>v(SQ;y zd}1)nxo~%w_;7j0Z~yR))!+S=pa1;7^Pm3u=X~|;OSUI#g7@_OiVy-W2&?U&QrM#U zxsnp?pA(W~{r*V{v}hceoC@(cw~1L(j7~H)X^g=kttp~GITYNkV|FSJ_BE$guxfGQ z@ttjDkX2hOtRaL2=eEkacfb6hG{*Awv&@tcm*vn{zMmT9K%R(P?vE?}Hzo))BLR^H=Hs|T_gz)7W$ z5lTXnT1A5dTC|u6)-r^FAxDMKl!2169;#7cM;9NDq?G8o0p~2ICmVXv&Nbf!C|YA< zyilbO1uTx^air^7O}(r1#c&uGrsGV``kKfEZw>3AXUU0}GO23S`m)UQz2Hot%1m&R z4k@C(?36TWEUhQ5Hdm1LBR0@@&`?6Hm6R*K>sYd)PPOzPQ?uHvQqp2lvKG&lny_Ar zR*U-kkgPuKR4TD7#G08(#bk@j4%vHF>kZ@anh-kr&a))Lymagj3nf)n!$9zcp|_lF zJ2qQGH&~uNKjr-SQ=Xiiae8`6SPcxJ=VX1ti)YVSmLvP|o{PV^;?u`V-oE|F`*)XI zUfof}({%$`)IqT7*2EYYn`J8(g@=`Fl!}N)jHlLxQWo9Y7{?qFOGbx$q~n z87o+)`f1bDb&`G5Ze44(HPi%d2q2j_kIFnKxtXoi>sX8Ct(|B*Q+2hf6sOklrqgF` zqy2-;tUeN)5bfaeQdzGC)@#Sf))QJ=Y|M!%L(GP&s{_aT1y>DSaGam7fx@y>QWh?6 z4vbU62gfi3`X0hiiE(C$2ALYY%&HB}Gy+wv4>ATogi;7yWeAZfGvk~|W<}TaoSvQF zT+i+0Jt=Jw*K_mXg5Unr@A&?&h0`Zb`PEV++C#~I#Pwh7+LQ&7^|FzFm(9AFwbyz zyyu&*&v^OuDb@?u*Z1u25@bi$tuW5htp=$*~%Q%gg#u%t& z(#i7Xo-rkEFGq+5ZWcS*Ex??CF$SKieV{HqwZFa3O;C2rsRk?jjq?4 zsX1!LS}By#P|J#W5|*iJY=@p0Tacv;%+tiDkC7M`RwuWdoL{opbi8Xp%uG`x=bmCJ(_yB}hAe>) zHstD9iuPCzUBH=<&8ElN%Ce+Z4Win9$X+a0buVZUGae0fJq3IXZ|3%B>$GT#NI;T6SyI;*6((r&aOmT`%s zl5s9Dj*-t7H|&oi24Ote(074VXGyW(FfD*lHGq*DsY2ZiZBDGZcrl{&A>tf1icX$c zPj71tk{?ibRyh=+zU6|3Idl=z49N8%_|X6$rO6yd8ra8xt(=_nyn1oMW@A|OhHeN{ zClnm}L*(ZCNSrezMqWJM@%-6IgTWYXZYSQpzh*ycR(ErvLyT07*naRG2CkU2HZ(3ndX}6{I>8e(t)4;tDP$%-S+Z zy0 za-`^Os_89#=V+U@Itq1`9ZRnML0tw~D=d4>Ur#}!U6qVQ-|EXQgh6)IVY1y15Zr3|u6escb4O$ zBUa00HBAdKYyEh;8`*3&Y_=1(mv>B~Bc%n|EXg>;LpKQX?g~>pM@LJ@GbwrsLcdsQ zd(K)KZ)sbHl!4ouHP63z$rK{Scy_xHZ<~6u+@EX%2FLAgWHXHnL&tL2(Riy(!`jr{ zZnr#mctq0(cXyW@EFA}j18ud!NC*sltE11PBLn5BX!Y3Ix_GQ2QjtiOEr`c8EpL2f z#lf*-GhQLrGgFv3I9#$GH72=S_JkPqI~p=2rTS;}jMI(~B3ZNu6;i^tEg?jF+i>ia zI2q#1v*#~q8-=AgeK1x`CY2XVeO?xw=_)u#btT@Z=Pu^VwB0F{s6dWYha_1EnwZ*_ zkt(({$|8*ra~*Gp)opCeUPH4N#i}MR!on7+52MI%?T6dIlQKViwDn?X8 z=0e|P8WY$B#YCF2qb(5^x8&&%?#>F z#mDr+M=Y0?*Pa~kuYULUID7t*fBe7xmgAF7uXIzspTma`$vHF4L9e|e#@ekHgfu3m zowEGy?l$*V>&6z=w-c{k-BL{E`O`bjFLyY}lr+<|g%A_jLeqMkpUa3dqML88){b$W zu-4Z0l|JC|6llH2G)}F&&Lge9jOTerl*D%0F^@B?44Q5BEp4j~w~#X-7L3(oi*K!h zWkS-WBZBxwk&{+c=}9c}obF3TDF?dVD#GznU-~-jPQ*yvXT;iax8%yJm0Y*?rIt<% zwVE66X?EH@0K`B$zb$$#&XJrd?A#b-aHH1i924!}Y1>Xs%r2|>8PR`F#RNz$IGc3z zAleX>Y>-kh1jXn{(g>x*I-0A5w4x)NF|Dz=A;!XXyrXYghNh==J#9Czn}TYN(8AC2 zFSd9SIXH40KI&PmI=a>~3@wXg%i-}6ZQIcIElu0d_L?9lCx^`Q%sh^)AMUuip1Heq zgxJz9mwf$O@ABZ`0iS>NF+ct3j|eg0M5V%%LRTfb(^l=`-7qkZBd^Xc`0UvktAi!| zU^u(H;`(BwYdRzsHg~sb4j%@tw_E0vYi-_C9IIt${XG!q@YxNErD5n{nhY_`Y&Sb7 zg<+u*;*cgn9d#AJ=8Sl!1Vu8PcQoFEv6cNY^XTybufN_ibcP%a{m|f>LNP)22$eYJ ztRU85OrW5*v{JzM2CE5doNutBDw`T->a9R%y(3tdLt>hCsbGh7?Ch9E= zvS56Nu?>_?xu%jC*P~L|(C#?(dK-#H@PArMBg$qXso1K$tV1eR0M4^@iOzv)M(a08VsE zZq0_2Gq&|CR|8Gsa8ekCUgL=seJWYCF*fT21xeM!$bD!xd1AC1R|jGhZG~LKxL6C(7^80*=*|Wy-kv&rd1p&$S5FHyVwa17e~^(n4a68*-Xh z$19v4$i>k11O1|>F)h96=-P(OtH9Z9!Z&N26`U=smJKH-D^{zPgM&dI(1$A)tAV~E zB8Oo?+w`oKhTYb&n+zw99`mi=_&ROpXdAl`jW<8-Dm>1!Tu@N14{p9N_(m%gGuvZ7i7|eegNX7XI+}zrokv z`v!Nr9WT#bGM>M{v|a}Xxv*S$HS5Mm(;D(kVvd#Hn)j7U9VcmKQ@ifg8>TseGsI|U zn*}8WcDrqT0c*m=?1Xu@rD;4(;~96ejugD7@r^Df8o{)_g8dz>Q`&s7PHo(!5W-f4 zsMZih1-w}F6e?2a`-)_2eN85S6;DXYEa|&eMU5F+D;knV7llpNavme|b_N9N^!M6! z4Zc@-q=;2TPZ79 zFNc=J(9qRfE_f{xg;_sO^?S7M+UJ}#VIf-m4lxpI(q5r4_p9y-pUGI)-UHvQwF)Vuz9oc-gH^|i=NsAv4i@?{ULFh_ z9xqv}dJYbH7K;Vm_lWIjnx3xhIXdXEt_D&CtZNY4)C#>}x7{($H&|<{Rk={onh+z- zI2valZE3rKw#nRWZ<(WKnrBpDsy8pZr5H!X(Adm7Zy)l`yN@W6d3BMwx!LjZRL#%Zkl5FufhQzXW~qHFZzpH!4lf#|y2tGBa9Pmbt&qx}NY5R)!W zZ8qdQL7vHN2VIM^XbUimq^wnRDZ&(j@|<0ZkeS8}Z9Cv>OJjwQGjpEx-<;6mob&oH z&igFGmw3{eJTOpdmN-Y+)^gm#pa1E1_*Z}ME>E97Drz+?HD&R%b{nx+0r!&x@L)#ebGUGP1`m) z@OR4SEj1fG-L1L3y~L4engdEycVC{McvXs1Upo2{QYW7)j>acehnga|+eF>allYTA z?0M&%EyLk0zd5vAT?>EpH?MHMr&|onVav36j%|);{gSH}S9}zH!f$;0J3M;rE#?&Y zryqYp-&%hAci-om-}pLrfA**R&0qgDVwdF zhwFWf8>&u5U%-iJ9LX_ZD(oqhK;L zV+%s2ZyKD*4838|!D^+XI;C&v=`H7?&9TbdmZFrreZw@C$dnSk>*`o3<3xy4xc8%3 zt9u&b%DsI;e=nKVX)7|3nR8?&5+!3Bn9Iaw%1B=0cQ-iOVCq%;a5%tNVZ0t$3@sM8 zxD-~)z|hVtRwKjGvsyI_i;jL+()TNdMWAgK#GLV+$9FBCKYhwH>Bzu09y0jet8g?1 zD9WNpDKk$qrsyGPyWU}3VT^^_UBuw3)kSYqDG70!G2T)r^w#nId++k?@4klE%;jaz z(=V>MzPRAi&o6oP>H=rAs_#v#$~8kMMbjC^U~NN;6*zB&B)R6+9XScUQNYv5>56V> zY93$PtdKM>Z4J}7Bd18pvwja~h%q7&T&1rm|5#Oa-cnUjK~bVnrKf6>i<-J|jt~NF z&o97RkD^OrD=KBaJoF=H{N@L?|%1fzW2x9;QepC#-lHe`0d|%i@*DaOU>}+ zOk4B;n54#{j3FB|I|>B!fm|xA)9@t$&R3Onu667POk-dg15y&#mup(z&~-i58B)$P zZLgZ_yu&R#FjKOF;t6xY`nvJ9g~kihc1N6hHk*;{xTaZXKRlI;trhNE7aGqtQYCOnQYm8zl&nmFRBgZ8dB=9URco+y zc-Lrk(^;C{F)SOp&XFr#(>D#)LmCs?ZP1YX9xm@PZIekQ>P*-6WGRp{&Qx7N<(%lt zyAl<%)}q5$zu?9&#mI8i;RjD<0+)$##@W7J_~QNNt=&@vYq=)?wrRMV1C4d` zZBrYzhFuhHCJoBI5l7`Igo4n8V{OpFKTiDv8a!CZ!#5p6EO{ z4_O>G6-m=v6#8Cpb>W_kaJLQBV^F3E{pjy&60Riw5f= zY4*G{0cSKvK8+L6SaK>PTa?mh4QWn_f^8knI&#R&XnZu)G#B1tY>?i&a&XWie*g0` zY{wwZHB4bHA!f{=&%-b$tSul(<}{Wt1)Mm1)E9h8A}Qr!QUGftX9|*-=Z&(qtS#0G zbBdG@DFsPEaHWEKk+A-SBVh5qKmdB?j>;^$(X1%%N`esw9Wi|d% zxX)YbHonH1LLo*&DUOt8o}CB&+dt}f|D7cv?zDk3CSJbSL4q>g5#$zQJKFY;94F#* zj>rSL#Su5>YeN2zcfa*@9z1@7925We&mUokeB)d1@cX~>+f3U#{`PYqKJ_qQbbHHIVI+VIAcmeU6ZB)zUHK+j3Of0gkn6n#!^Hz z_xjS^$%DtMvRG&nZQ3Sw>q#|Fn+?}@L9F+s^$nfBqVErA{F1{Ja&;M4&l4}NFUrw_ zjyK;tkiK&mnaVs(BKsGQp|Tl+j?ZkOU%B$=jfWDaK$sJUtFFBH#){9LU-Ho}zYvOW z)GvzhM*6;^APjw1j34Cb(_0RXuNW4FSLZi8eSXDeqb%XZTaa9`fo!rAwF(tuEG1hc z7Dzf#`2Ud?LxBbVyD zv%0eo%cAXB^c{`U7)A-O=oh^6_M5!^MA+QuN4=CM2vK(Scy)fqt4sZ$l#**Jrk5@Lsu+T zjFIA<$5GjFC~`}Q?Gch^ZExxg-gqm;kAy!(3<3^BhTY7D_H6jTkE>Pf>z33_4no z)6#@?Zz8%?Z10e*iZ)R?9?_|BPn6ky&HEpxvyxY)p3ry4S?D-ec_=n_29dnr| zY$c~mV;e1Z8D!6z5rO051G?ox4i87JFK&oooPZaRp>O#1x8CCQ*AHoj1tLb~aVBDLO)n{_x~ywDtXRSv>DpEq6(%bo zu-)g^typpRs4x0bGBM0j(2hWgijXL!unR%Ix7O0OJvVm&m!nDsvq_bFw#Qj&P)IOf zJuffscy)fqYqzHy+>RV=X8h3d@ZkdGVwRFqB!pMEb{5+oV_QdwGxK;})P2=6-vyq2@Ue6` z@#NtXI+OY7&wg1J3oGw^?GgX}-~9;(eJ+3Z|9qcmlf)WR^f{BXSH5COc7(H#7vG6y($RVc+M{-E^c4aI4gZS(00Ap)?=*(=$FI5qVsrfX&WoJ zOp!zu;pS$;I0bP|l|ie+j>E%+_$E=Lhy@5)Z~2mo5hE#QskUC3b`dmnBKI|Aqn=|# zO*dsuVx7k{hLW;mqrwCyNY^&_&LB?zzKmGObqU(|M&+NPbi+8$B6WjaRbFDPM)N3{ zQbdecMFtooi3(~Z2fX-Nd##R1HSB)L8BapCj#!tT7*CFoSWV--SR@;A%xt$i93sks zMnr_$c_vPlX`1NV0YfWVMMmfrmhBi=Pm$?j%{UfvQU@dXf_7MNa{7pcS#WS%ST3?6 zSiMHjN-2!H5iuF(9F5m(ZPR&) zu0^xfS^C!T_FE75>Q`RpM93$Its<>HGV{stPGmaC*SjLc;wpvQkFDJR^2}S^mF(RcXfnp4Ed3m;$&z@hG zH@`CTV3TCr&1KnpSquYTdFv5B{NYX6O%ZP$f{~O$DWam#RFX)J#pEImLl#p)E>dH4 zh5Lemeozr5{oBSDBZZSAFTeBKU*VhIeT!@&-~YQG^TQ9GlP6PbLA=%F)HD|w?@DJ4 zeQ$8K(05My&hYrb0oG*#p}e@-%8x&KiFYkAWGtmPTSPs0S@u?HBWQr!76~zz7$WnO zEl6XEz#t^wSN$dYa_q#IT(w$y7Z{xMs%|)3$iOBE%?n>(BA+F@1jw zyE}gVFF(Y5`&+#J`fIE=R{rUSKcRIK@4owhZ+`QA`RHdq8omHld89d)YuSdl4>@O2!n6b-pgwHR^=u z;-zugCiSk+T1z%X7dW;cQ4J1_QwB?_59d;%{(MZXY!pi=8C!9c+l97^h{%SzU}jt+Jb8S`YH3JmM@mi?|GAJ$!lHB4 zoaXAt6jGJrrj%GMmyjKs^|~&G4XfpngVl=HUVBVViE*B}UGKQLS#y1}Ww!}jUEOka zeZ}X`p7ZpJS3LdVnzXgJ1jEwNE*h8%&NcPrr8D?qJ(z+-Wnz2RVi1^HmJWUj_c&`~~=Ut6ZCOYpbaLds+TNP)jF|*#{ zttaL|$GCGO27{|j3qnxWSBimhOoT4<7aJ)R=&;I0l zT;CM=i@*2<-Ej-qAXstrBwz`8{;(P(iE|Pi?G-Fm#F(nzM!V!lWkp2!+E-rZzxwyT z$G3m;319izYfNe6{OX*){imN2QYRrqVhSopEtzTdvK2?To$tx~k`qgRP0op6vlJs5 zMUh;y)grM7wyK*-*37DHwCo``(wrm*9bSCz4;BoI!p-e1r%zT~t%aZcJVFDp7;s>6 zrr1zVhC7&B<{S|_Af_eH7o-BVJ)-xX4}bO(C>!2=_g$7v;e#K4LYa45oZm8yfo^Dt zyQnAPnlDBSbJ0n}rRE$upAsO~p52zrh6xF<)YMd`-b(U4n3y2|A zc#O5mn$_!ktYatD=x9DRkSiNI?q{;L)EV|nNrGfUGxIY@2UnJUfnUTC~wjx#aMI2r|mi(?McuZ_4soUQDW>E2*+U%!?wXZrh7+Ma-D zDjGoJeagc%M$sx_^vZ3FdgGKxsP$pzyuL83Ff^97F?ee!39hbmA^PBSK}ry_X9@vV zG|HJ`T@020$#8qSa(H{qnboxsyfh8FhwCix6>_W*Vmk1thv4(Ib8>a!Sm$g zO^%LExVYNzvkyLIeTSwJ(6>rPPgS)HO_n-aHgZpHt3GQTE~Uz-ATv&ZHy)ny)z_c! z#^Z+^9~^6PVbS7UVJd0^pwuPYexqfIE-kX^>}_M2iAbvivk(*Woa%?WlB4Q1oU9~% zM6|xz)s#YVT-?n3)?4uP_Xnok%)BeKP0P!dg}?aA!f>cdz>@cc@{Fs%e)0^d0%Ys~ zCBtU@l$;W6^B8LkKmW;(S+s`7Pabf20srwo{tfG!bMDrGwy}EBvt@tP)rVcJa8td0 z_d(iRg|NC&&tCulAOJ~3K~%K>vcINbZ9NiZeJK6f&d-XuS5~R&y^1_3iU8b4AoG22 zOw%wmsZi=N)Z{8gtgMHaRHt65xYQY|@2FJB)xsjCsSA!e-cq3+aVqSxcKxj?W`M%o z-I}MLYR$D9I(EBRXRKM2Nzj6HhW@Z8j5F(y@uePzOSzW{C>^fKE^`KBwLGFVQdKOW z%gvMvQ%w3Woc867`eiertz zEfl6vU&J}9Y1oOwT2I^5D|n2wPVg3bZ|R4Y91|%t7!ig>Fy1joi`>nXdMI`6E5vBn zjw7#L-Ee)oB^6EDG~SWg!aR@M++1>a)U#UlwLlf`ZSKaaExtsxWO(1I0AV*1hp3T9 zaikh4MGT+*>YVjD5@yYkcdg~{XyCOs9eQ?Z!M-OPb z4zYzPOtju(UBk4Ss%RsSQ^7eUTb5F2I%RxA!Bi89Sf?eUn6(sSEOXFwmcD>HDO0!f z;wta4g*3&G@b*r-qL{TI8Fo`W?bNzuPI_{5PBk;31g7l{kq%QV z^Z1gh>mAG0DIzUD`2W7oSKob`Fi(8?^mB5UXiUpo^u*_!yI*?7G~udcAjfq7`!~*f zX>BR#KD!-bu0Fw11%qYChTgYVE)^l*!lJx&OtYAr>tj+4|BpY8O+kiOINBoniY* zw9dSgtgp||h$#*sG0u0qcyY$n(fXiCg;y_L;0?qyl5?ocXH(mc=Kj>Dxm+D%fG|g`O3FZTsw0b9EYJ~C zsgyn4z?M>H!1ZmvPu_^BFV&oDdO|;JrDoRip8i&Ui&{|8n@FxFL>0&_W1Nrb3D zW9JPqg^Fku4ECNATZ%@z)GA}aXewwOy#cp+}*`$UL7#to)u0>T(ihzbDGe0{_i zl)F(1hYQ2$!vn6bXI^}Xf2aPw%A|nx@AT zbvH`mD&Q*Mo1TM}Lh(;eR*c&X+jUPjbd1wXF*6^3`UQvm37u(ZoN#?N6Fxno9Xu%| z#&P7c&+h0uN7ornk9$r}SDZXJ(Q*tKV+*!1c;^_}o}QBuaDx6CY%L%=&N zy2Y#`sEDC;4c0rbhSv4CdMIkVW}l@b8mGk=SN8t6+5$?cR3Rz%?Ii7a2X}Cj9;T~@*;KCgU%{*Da`jA;|ho`dh#&_ZLo<^ zC`_$`n+mk{4jQY!uB6EMW#Zrcp5v{z4BOp|SkKYXz|Vg<^TEgaQ9!M;Ruf80TC252 z^9>6ADOd_61&XPS!{V5B=j5;<+rT{EGR<48czsBwM9GO1GynRV-(hhy@Gn395x@H6 zS7dB`fn==tvPh$mX}O<)Dr2Hxb8S8r?xnD%@^(voQ|if{IzyNGu=;WWA{9{2{T#H8 zJF2mu6kR^)phiLVsU#h96n)_p(NTs}S6bOKTa9YDFuvB96Hzk7q^hpbTby=5^xv9N zA!s|KM*D!q;JSu1Pt0pwnvg~9)kYa8lB?#c7(FNy9Rak~Vtt{+z`^Q(M^6rz!WH8* zVT@+zrA8sYWE?_Fk$Dc>-bN-@Srl<%=yVYrOCnG8@IGi8NM? z>M>D-4xe5XTTWXeB^?235vFF4p(lC{v^@B8%<4mD2hAkIY*PLBk$}D6EO|EyaZU7hx^|Z##0z zbO%RFQ)U&lCYSU80=wU%>3$Ex* zX-+8CTN{av#4gbqSXVae^@;UBh}(pPP=kB6H5zwl?WXT~Oyz zBcAH}6Gvqt=;$aWeJB`F`^gj%DJ9~j;H zJRig5)f#6Dsbns$?)c*Q8Jpc)zYi8?yh3}L%)xAwK;QK&mK{T{+?u1K1FW@-W8(4S$K0+r z+}_=Bdvn9J1X9R&uT165I1y*v(Uc?@8iw9zvoX|y+gu29R!^eIc(2RVF^t3j#x;ac z$T{GQ#aLhCkwO$*5KrTXOIeX_xnz88+?8Ca{iCS*=bmp|*iIWR);FAA-f?w(Nc#$I zw&$GPz2HYb`-tPi1?QW-XGBQFO2(4vLc-J=+C;PIzS`EdX2v`H%oxd(%B;`@l`igb$~Y;6 zd7=@o2NAK5)v>5A18wH%t*;(NYKh0yo7}zym~&xHQ7>H5Fek0^I#V$73{q%ZM*-$} zB4ucNr&f!sv;3}YD~Yc#h0KdrcigQf)|(Btn=RuwD~|*rhZ)lvn#M2;(0cVC?m}S~ zXRLFYqqX{yC`nn+*4CTY^-P!@mX_PwOAeOLSS}ZY6u7;;qcE`EY}rmb9>0FXa%i#Q znC74<8{5{-gMLSD?#@{CORm$*X47Z^DNcyfs&(5mY!a<G@ zzH+je&o5uG{Iq8~-_d`V*vz*)y?DlY9$Bppxm(;4ZnUacYU2(q1L>@>Xw9~+xD*;E zbs4lThG-Iw+q)|Y3e&i_y5+-qU^Wm=ozxV(iK54jlF8tqr9cTt+5bOc^B^O=T zp(PeER_CfElG6;t`l8dAm>LQ8;+9-bT$YTs=?;$`rmT9S@h?ha;Yyt(U*g9l&W6$`v_QlI%c%;TuLSfMRyvj zBbZo{wh-%xK)Kset>gN`EC%LjB5ZWyFMEcztq*UrZ<^|Vs70TGN>q~sP97hyI$ZJT zXV+}Evo5act-u;l%xe9$r3wus6{4wbMWBSB^FZez8&cGl4OT~HA=lZrWJuMzo{|D#VG=0+Xan}+pz&E@5U%`Nlpj>T%A z?K^Ubtk*ZZI&WBS)?8d|XoptajYSt{Q`Q?>-+3D6>(9+rwbjIw=6i?_sSvVdH&2Kt zQ@e@U9gs^nSPghzI5}FVdy(nt2IQ;U(76a?=KL#wx~P-Yg3p4NNX#!vYQH}IzR_)Er$o-b1g8Uhb9KmOzsKKLjzPb1MJhLz>* zuN`r8Y?-zrn~iQ-)2yP)k_%zqQp&omrhEwr+QU>*ib(O4Y+3dTHtP+=Xf5{T*(D!+ z@{Ce!ov)Q@sV!ttR9;DY1YxdAtE^jkkuOg`=)Wsh#NYn^Yz3RNjY3bR-OSDHOcA~Q zeD>MI`PIbnQOkNG{O#Xg^7)I*!$%DvfuLy)XI+i+No^hSpS*M=Q8T+=R+&qMoQr-c zb$%OX$PEu(e~ZQPlx@gZcgU-k&-kDJ!~enm@ZbLzyz~D1{LvpqZf`dH>cdayy;s(7 zturTeYmw?rB&7W!O&~=|QLUD;C3Lf^FT)y*Gy5#$UO=FK24gfaL8&;@6fvdVeD?7< zbVe?97F#MQO&50>W3>A?qU2h-aQdRm8E0xUE*7jUb^N7-x-e(= z5pHMF3`TU3>P&qB71TRcV{NthbWc<(MHTh^(9yOHDeDa^*WYK#<~|Knis-yls{hVu zhJ7q5gN0lZC_281)okpXC5DMP2Bc=0Q~fM9#?iQX0E!yT?D}Tk=F^x}&bUrrPLl7p z)TB8wZUZT6vO^5SIAcXkB=bCJB(jdI_N-=8V}&Pce zmEU1 z7#ynu&+*X`<6yDqiE|>16U(8eX&vvp{fIZ-c*uIY=IOI{`S7C`{QRTmeDUm(+jZv7 zd7O2$T}#&qzHeD9I$Cc@2w}3EUEC4pnPIum=WR-y94=U`mQ}vt3v=8v4)hdZUG<+; zC!LUM7FSP>bJ{T%TfyXlw-#d@)7{9!qmFmqJYZb!xV%gna=zyiEB7|$d_Vg$Vsu%N zsZ5JRkpMO*han|Op18Tb;NxF@%CA1Vyx(FQySIew6-oMoDOpb?_h0;6D$UH@+e>nt zuZisc?0R)IC9`PYutmZ2A=5T+yAi(s{Vm5Q8~*&iew%SNeE9K(qXSEr^+UK%37ER@ zG{&kY&glcHSRK^cEcjyTwFYveE~UQAN(%*R8pK*Qn;VuVuW_(EA(cCP|A4Er=lq|4 z`S<)=^F7{u`#t{4KM(w`jC}g>8NIW_FzZ9DCcM3^Ae!2gDzUo%OsY`y{R8UPel~S% zoa-FknEjWwT7K(7PiMSUKD!@p865|BYcv-4|1CurF*FkPI7WH;lFfOQIyoEl8p`Rb@?C zmD8E`u!fj?@x|I%1c@Y2m6`jTvsT16yzldtia29bV_qES^C(5rbhR$G%5N(((4sFk zi6pV4S{H3|QOV2+Gg4%J(ppXX=qIc%p`xZFb!4jx)FOS<@Kp--Q2)Fb6>9(Shc8(k zEa-PbNqx~cs#F-=dy|Jjg0i5~fQe!NGE=$W_UO8mE_-H3nOuNL5p_8x1+P*vis6 zxVgDzvB(6!#hA?9dg7B$FL-^kMXV-lSWvuf3dF2q7?U#D$KuV6B~`;A#u2A-nMxu` z0P!V+A(L{2$>Rsdyz}@0-+2FBe)(4}dH&)xuP<)7dcEP*%QeHK(Qs$yM|537E|S!$g6($1 zm<5$x5kjDHiNn<~%~D;ZuIhw5+Ty~>1z)EUn_M>EAqQ=9%dE9*cC_N4m?(_r?s{Ug z67D}-@%YgZ+wGNBbCubr8Wbp-Qu2+}maRZ)j8!+5E}%RY6dH`QZ;f;Q7m2 z4!Z?Kn5-FUIcnSFlR}`&;gF?hoD28Ym@>S7f;^dh|2vSD# zxq#TARF{^RBR6-ikQYnddUwIWVaL!Xuj@8+6%q6Y6NDK8L&N!}%ADF5(H%o9Dw}dh>#jri=!2IE51)z@5VhEv+1OKzLQ(=v zO{uC=VKT=E&O(m5pmR=5I57o=Y0~O+mJXK4GfK*blqIDP1BhX{tT;Jek)rTf8o9pM z5vGb549>u6)sn<=cQ@h=JC06{=?*(=Blt9t;)FF3^2F6e#ivg%$kCL!tiID(GNuw1 z=LgstZZCJN@9tP%?=&33TvJtAxlTTi(Pg3L&Sjd$&^8SswJM=fCbTslel+m%_2;aX zIzPX-T=VMH4cQq|nDDuby9!w^qFm}2BU6cFOC;hnkW!*{9bwY+7{&2MoJ}Mlmv9v+x4?uSwk+$K)3ZaGw&9?w z`1(6<@%H00`oXi^jl6z!$MYB0+}-W4Ig--E6!h7*u2%G>Ii+qNQ%j<<&S-z5SKd zi=lRUInBu*T~`+=RwzajLr&#+638ZEmS7hZaTk$0Lq&t&_6*>dVj%;n(TJk^b|QOY z3-ZPklmdjH&y~qK5^$vmF;@0=bCpj@kxrI&K`d4r2Azp!Q|2Qj+c0I#jgwrwkYbcE zl8b)XXyw;bj;1jzI?H0^K;Yu_9bweafWzY@ho^^(A#i)U!`YguhJ)iy|F^7ZTg##| z933?{Yx(G-=h_8VqUr99rD+Yhjx5evnv+(U-?xK)e_X9v^W;^PV}+_|m3J|Etb?Ni zHH5g?GoXw#eDdsuk?ZRd?a0-nzlJac0 zDpS>(7if(Z85${NAsMQw!Bxeg>=KDk`~?|Tsl7cDiy<{LjUy=qChzefVXP$@M?a_p zZo3Oyyjt_=r(bY!dCjmJ@RLeD7hT86@i7nYo%8tNId46>&*}M!<*LTj86QUi!ZzK&3&@3!Xqg{*r#(Vc9PLn3XdewZ*lA{@+Ig9$sCZtrCn&@GSh0+46L?h5O z4d-X4RE=db_6(Ei9aET@$@=(8Vb#t{M6FE95)Yl_4I%O4k1qI!4_`3&Ok3A#uu8KP z%V@%H)LEL+lky(RX^qaiN&6yBP2>S%{GMUw&Tx35!5woX&GZ*S_vJ*|w&}&Cw3Z{0x^tC(GQA><^ z8ERKLcLJ(Fa;7H6Og{{a!h-9+2fjKjp$^_>RT=15gJDr?ATBc&z#!Bs-tIZUO4hNiCe635o+@9A1cRSAo>Vs+SHT&AiN1>1EERpY1|L)}%> zjiYYW5!g0{WhXQhY9}{V=k{e0-qtmh6Cx8*3E2c931jtn(`=Wr2oznQ#vD3|rLzD4 zAOJ~3K~#x378Os%RXY9(KGW|aS2qI}7dtL5Hr!kfJb!+{#pRmydPnr77_BM}50{*s z9rED*JszH)a&&yi+37i5cgSWt(j8U&#&^EK&wTR{#s(Hu#j2^XUwi9R>RN}%+g(6# z<%P>-)|%#Y>^B?(^ww9wdU-i>-kU38%q$iyCub|_8gAEHqE~v8LR@saZbWY~iz(xT zIf_a44{}1oE0^CB%iq-UQ zQ>@EU7GipUt6V3|^ZGJspis-Q%(PwA%Iv@AqL3V8G*EQ5GsmR(O(z!TH0^f^fiYx^ zb!8V(n5zbIYmm+=Z+pxTXLU;~1w`C0>gGAAZdHpl5Dgk-E=G(kR(Z|9n^A8m#{D>E z7KN*1_)TRkC2q;;Nu=&UQ)p~4y-6`Cb%Q=1Z*+l1v?z+9EPyklY*^ootnUVV(96ol zgr5SgF<|x3-mX>2)Ndy?>z>=24dbrI*hst7%jEOt*N_cO?PwZDW=?u4>-@+FNq({vke2Y<8pU`iYnXQX}hi;`OUuo_~JJs~5N2T(7yfyrJI> zGHiRvNejnCyOfjTBhJt6aej7B?w_9UPk!ZF@_WDgTk`YY_&O#{+}_?uWgYg>*`XMd zbul8gghS49mwC9)z6H})(C*ti2 zoF7Nte`kR;6@UGMkw5qsr~Lf4R($?^;OWyXkKbAGgCFnspZ>R77E4o<9h%iOZ+NXK z3K29Q)LBDHUgw-e#IFIB+KqUx7Tm6@S*-Md&NzBry}CwX;QYMh(c>em&1`r5{M}VUOc^63z&I(2npq3$ zX1J-=&;aN_7r*6#o0qXUl~!Bkq!!hcX?JDWn~Fl*U)EY_>aX+nzH*xPhMAQoQY3Yz z@KRJ&ki`(ZTI*9;3W|Yf60`=>)Q}8$C~TBj^E?+6!v5K{MrYNMidm<02>Q=$NmG%M zJfkwRBvHo)Wr3*T1e0LuM)B_v%?TZGyf zF;*DHk;w-U3?XF68SybwwN~!mKccdRm(MTp!N{%;+*}Xrb|ZJUcVbMUZ5=Tid3||H z3L@R2k*0BCY)O)o%oG#-=-FLQgsno_bIf8y;rW%TNLeJ2CB;be2_F@05EG)tBV-7Z zL_uQIoJt?O#0<7}q?9D8<5!HW@MRfnjZ^Sl)(g!RrB#esdoa}yY8;xiq?lz4Np$dJ z#5oaTMU=r71rsF3s8d8^#Tlc5E(qO8?xMNg1mgamg}nx&p&_7`fe+PEW_C2tP^KD>DmRyM=N>n zy(fJ2-LJ7|8o9lDEiW%$;>3!r>PkqNrt7HNnn=Qj630`jCE2rvb=Pf8wQo1)Bw~u8 zBSbwuj96lbbe-k&YypzEz3#P5j3wElZ1EE^XSVM(zh+iCn2eZ+bxEPs))t3SAQSfO zbeJu*gN*p1&G-Jl3qJldu{@|W1hsS5c7y~Q-{_~O|OT~ihLStiRIRWqw+3`EKt*N}7G|6nvtq@0dw;nkN<1dE7dgOduA zMV!_4F~(Rp29!#Cw&sbBatmi6XWgnBYs6Zo6USKeaJ9kJPEv+(7$wFmw#-X%`P@nw z2gZa=Ngth33;B4yodBw=({E}~VS{)ysrwkbXaU57>$aOnAzB>0g< z<7BA^tMo%4C6N@75Q4-I7)CGKZIGM0fz5i5FlCyyQ4E1k5~C0kl0uf<+Kca#NXXe_ z5mT1GwH|1ar7T@jmiY&2a+Jyml@$rmlSHBGDP)OJ-9#Cr_g=;+;v*6x_>d%tk)+ZG z2oaNzT*yx`iG-jQOHr+*!ZtbO$bBtb&IwF7LRy>Dg^Y#&KX6d!}(>H;(MaiR~~HP?>7wx0{j8^~CzNXS*30 z`iP$ll4|@IFh=MOYSz13K79HicQ+eMPS}IhLPF5lT-DZ8l?v^{6tr?EOTDUW!e_Yk z834=nuv z77-&M#bUJLSj7n1Yl-tXMU87{xtmo`$Y!3oB87W6^TQINQVvYpD#g zz!vPO78|NUnF*-6Kyy`bsrguVE~ZE+BRLDhrswoz!O`J@&1T^CcGU4!;W+O`&-K-s z&E1F}HTfil$mAn_0zX7TgwbcsOq?>=Cow7F3~%5zMwC{DcF`6Mkq{J&pGk~9s;tas z!W2|G7!$+f+4K{`l-O)~d`wKilcTWR_VmL*)<|u}F|!*J{SfdzsbxN9ypJW(d{jB8 zWPHk4>u4%dy5#}@`;yDj>M9kBx=npd7-zM($ZBSaWEC7(xLx-=|NM$qukPr#nQ8Q; z04d?USrsVO2A;fq%)>{Aw2gMlQ-Hghp4~2RcRjM*OzgISu}@rG-|+m^7d-v=BR>E9 z6|HTkoxz^nJ64c=$RZi38%wunMD!q*$|6l|HUFz|Xh*8U+9Kr=5hF%QQ&|3gj#+Yy zLW-;wwLExmBuyi-8+J1KATj96r&%IdyG^C)my$#OTrRIj21DvO~-g zVv>~9f0c7CZ-Nv_nUR#U7Vz`BM?-iOStD7TWNZxbwRezr-a3-!pAYhDziRpV*E&A@ zV9Vhl`B#7KRBqOhKl|QJvNz&%aUdxtQ7Nv)R+ShMWm?sZcoUUq&wX)s}(vQ6)vc#0|V-RDJx^750iuX{thSx8z zq^T;EIJLEG)_2^kcRc&-rR>&g$z;hn%07fve~>cIG3O;6IgvBeOsf6O!s@W$==6YTnCSNm1wGiZ z6(|M=Db&K^`jlL7n_5_yHzT&P1ev+aasD-1* zCJ%BUa^*L(anXO0n8$j>m{h7qvg)Z#(LHCAu!U+Ts5(fD;C;jwoqee&RHi2uiEyxN zI67QljN!%WE1i)RiD*heM=lBc=oP!_(ZekylF!sObN_5fMP_rgC8vZfTyAGg(QIov zi*~1TUM71N<#wFtr@(GIGHi9>xZ4g4Q)0dGY?u&@eH^!{?wEetdJyNoafzl&Uo_n87HSJ+J&QA)JO%x7`VCK z^6JG6>zl|lTCOg4eE7i^JpJGqMnw700`Baz#Y(Nxu$*vpmSmx>os2_`O#v}UWt$#` zDKUkTh7pqNc7wLO;uyyuGs8laJ(f)$OdF7d;kzT(*@cgnuicU)tA z$dZ#_O{2>>_3Dc*{pOcXM559_bJopw*bCyyN~wTm=4H)18>V1lbf#QB=a*Cg!3(EH zj;0Q*jv`-uyC$c|^^ND7KU>Rk>A1bieDD#x{jk9p$F^6l?cVfI6a@O26{m+dW((l_ z68Wi^!AnfNN_w5*OLOGn#xo3ev{l2e{=!%I*{`oyF1Pq3^iLzZow|-BdxrG|kZBfY znB35B@4#>PhwuL#k`j-;@_@^6=&T$wUw0F9Wk&2?EW9 zq(+7qqq46H#%QFY}?PBh9ukQgqCX9K+ z>J~gCCGeBqKx&L=fZ#yptrcwL*n0TO?|)7lBftDhPk8X)fM_7Q z%nyG2iZF(KkqV6cNMN>#|=F6zQqKYW3K*@LAYu;yi z?96J>E~{+i%YnStB$M$u?g94d`ed*E*+*cxHjq;r)wOFHgbRKSu7fso#S9pak#8FTsXRg;qY)lw`efVlEsper)?}v<#a}t z1)EjmZ>^(~o!THWUBk*WcpuI`F^z(Mz6v z4z3nr5Eh-KYn>)}ngR!ks@c_!-Z+Qqn~ zSk>EVD6VQ`gP$~2x{RZBPH&4*yTVm9m(SNccznt`@7?FYqlO=U^chY%>ZaDJyug9f zT%uqgMUp1M7}%~So;|{&ug`4~Rp8{L9Zl0XoP$MYc<|te)v5*pt5w6pheuRSPaG$X z2lvl7ST_21r%2!Tynb=T)%C!3I}x+6JUrxZwdC})|8yLrdahh;VRTYp- zCT556+AgR;As{A@jVKB+Pee0nZj;!3URl*>sG&6mNue;19a$Wcha`r!Y9M*8uhjy& zTC_a6ml+Rhybny1!BrJuoLIFBzV`kJiv!0P6YF(D-|G+8`$EmKhUKCLleq01T9n)4z zs=CG$IhQUX^ujXa0{u@KUof}JU#gVj-ZALPp_KOt90`Zdw(yW=M#mh}q#ob0( zyad{|#fq{O5VwcghZIRztSiO_7ig+T+v+sjTU_ynMm${ob$f&wuBac;}rb{Of=H z$GGZP=kPJ?zs^7`%Wi|ka&hhX__NPgEGiC~wv4DW?XYr=sw}*+WP;I(HYXt&tIC^L z;-zN!X4YpRl>^dZk&?<2qr%u{>7j;OOxSFQmEqOpmWSu3JiLF%&9J5NhEzs2b!}L* zEipvB@GBsA0;)W+Vo6@zZ>Dy*$};(YB+-#doYZ1e_8ZbRgU^|EqF-Q%@ z*0`*YYfZTbI9qdaWJuX796VZGdLVSQuv#q`r-6R(7^!F)t=!tiLP%usG}dr%e5fIW zcdx-!C2B|tqO;Uv<>8qZH?#4;6p~wAIkscq>>eDg49CZrd-rRGVc_Os;OD-5#F$1t z`gE=BxV214k&eTV5#u>HY*=*`M`9d>ag2m$N(8)egjJWSaql_G9!z6QfxsJsR02-f z9XVxEG^Au$E*AXs(+&Ub-~BypUGetgd;IdZH~8^0wmZk&#xr=2_W>Ee)hnD;2vnAe z;clz&p)RpFIKrn(@)$|c0AX(vPi1+RNJOvVda;VfOsN<^pvcfhq}Z}8hX=as^b@$sfy{16NVqq$ zJ+!NrXtH8xo)XK7nU+g1oQ(=;)qh~!LX-JV;$=VHgm5C>&xBxR|aVnp(3D101MC@FnV zXxo~$t}vz)S25w^L~RVFatzxMBQ)gqDZRJY9p0f@^##I$V@Jw-{vf4uUG2m>YR52sCt|r>L zqz)HjY6=C!UFi!^m=dm1o`70ng~nQP@=Cuq6;>ROSofKJ6xMwrX3?mbDv^Vsb_U54 zm1G*5c)VlWfM640dK1^a$771%MLoSTJEUSN{bOdD63d05agnnVI9NJ9`E;ai z;QXv&yNP`8@phktkdwiX>6)6HGTZII>G6U^r?EGY!d-~-BvJ!QZKvj%aZGG?i8!gm zXtrSPKijAefVRbk(FYC|H6ML)%TIptDXW#^`%S8m#@PJ=u1E*> zEM`;20Yz7@PP3#znBgWTsJ0|k&!oIOvslW4GM9y&=nQFZ-A^f%sy@G|j+2g_ z#F{TTOXfc}?d{MaYCqSGC{oqXE-NY#OoG~V3{zmtkq3{CxOcX~-?*K_4|DPum4+Ogt}?SDd3#o zQKf~6S_nDH`{9IcRkK{Pi8}YQf@QL9-dz-0qOv5=rcQuLuV3@xf!sjMi#U zY!Q7&$w(@kb3JuvOeW^Sjjr|Qad*8|{zlSaXo`s(ChE2#U>N(E{s>j$$T1V6Mm#E##B5o%j@;<>vZ*T$502CfQp4(CNuJ1lB;w2QpL81 z8mU1i7N@4Vs?9#vj-oU%)~XVrKvRs>OK2W3DM3!T-D2k0tz3}ZnrY{f6dSr;y6u7G z@X*l}Dd3`A;GAW7e8A(!#~dEjEbE48`v|cUw(|Vs_h^Ugi)pB=JVRkW=kiEwqZW49YPJ2~XR{WC7FUi0xsA7d-W$;m07 zeRj>?yuQIzwWevOSoqY6OR$B?m_%4D7r>4%1!Z>FIg?O9WIhT57VOTU90rdvuBm%FL0H79L|}@Dp8afSNJD zb_m?uj)a1ajcLtt*%f14Am_joplR0lAY9*WxV!5MaLQ8|SRFVPtq}c&%{o&z3&d2U z1TjQL8E`|iQ~^@3q-^QOOmL16K+rN>HI9m`BW5bsXcBGAxT-^PB>I3cb&1u{h#wqG zc_LQ#d?Qi*RMYG=?CV7y@L=dhMxeXuFoWnlO@ic>jR2G`jE@qK0LbsF-ZoA1pbCV%fFjFv|Or`O62<-1c`}L$|Oh z$WIB3Q$b-?3EZs0FoZY3rXo1&in<}OvHaw#^)@4ob$kVYOUvxN6z;=iL4LThwhu z%8vi%Pk+E)eD4F=t|CWIEb>iLxT)d{$!I`r*VQ-&yX~;IuBW6cb}JQ<41*4PJ>maVIrGKXWeBEFGepk5reI2 zh+svPHHwF5*!G@2Ox(ZU(f6KbUwqDLxgdB?vK5mL_>fumueHk?Bd&6YEoncJSuHzO z%bL21G!u^nC#r1lPnF@$JK^iAgghe4F*`(WJ?{$e`!h~R%e4@dX zut=zDr;hNDu(rWfdZ?Qe$WAxqG0!wJ#Upy3sOp-WGlNf5wgPLY8-vS=?zEyC_Hs&) zv(Qy_3H4K@L~R9EC90-l^p=xYv+Y}MHak)h#(tvj1Jf>P7FiN?TBU^KK<6?cCVu$C ziRz$XN}fOYe*?esJHn5CI`HRzb)#8#l_luAiBE|fH2=&MHp4I`l6Z_w+&^u2aNcsT z(4>vsdgAJCa=VS(-3h}k68wO%6~-EzQy`QdMnxdn8tTY6ZnYXT#U3h}Q-|m>WG@vo zb27%sU&I#rA~DIya0=8uSuNbp6a zQ6xr3u4d6#9;}XdaN2OUo4CB0`1si!S63shJZH)!i6wQsq`#O{9HT0YB$b@Mk`P|< zvUOQjf<~3Nr`57p9knFlo2V%%v&pQ^EiekGDbV{gqiCgM6N=7}U4}YCL&Vxd*H{*f zrFEIgD$63LNL3lywjy0;LVytFBpX4D9z01G_A6YgHM@JpoyIu=9wK=NF zs3?wN7OpSvxOcwbpZ(T1c=hUv4?ld3wKdy*TT~^HW??a+*8AF7>I$r@xw{GUW5&9; z50}VgjNz=+PR9?BBTc2oq-l%{HnV6ue)$*Q=Rf(UzsSYwSM*uvZ77jpiWBycNuXkoZ% z<`?D?^OVB=@0$-xiu_P<1(v>tgVxcs$4CnJ5xRCkds1=l^pK;26+eCYin}|nhM1CU zJyQVH7W}6AGFHbArc|?1)EuE?1m>gwB@$nXcgp*PP;sa-^L=uLR=;K7r72}W?#(;BW&Kl=rm`K8F+BiZ= zhMP^#Pd|RaTaONT`qLMj-9P5x+o$}(&whj7{O(uylRtgN>flVHnnEU9!>}9p`d9Ds zYyZ*DflSmgk-bN(P@9?xN0p1}B}YubVj5GC(YPnG*K#L9(tusbWu#RIkhM`y!|m0Y z#eeM%`pf2>Jj|DPo-JVN=SOZ0I-BKEc^kmLa7A^8sfBD~6_S zidHoegT_2rYcyWo3&u5I8=@bJtIyIpM{A+3Cd5Qi95GoKhfKc<483QVCbqkQVF-+& zVjMl6Tn&8i3J5~iRs7la2R38o_{dQk*~_x#7gkZAmN5oGj3qiq7{|nAn7G>p;utW- zX@*y-H2p#H{^gYXCd$a7ZtvNYAqsd? zWH3osRSm~oOOA<~^{(JjO$m_A${rRULd0g(1zUyDXeDbzBcrljbG1!!ej@q&EXqOG~IoH&L%6!&y=xDN}63~TthOENaB;% z7xJU0hxzn$Ay0quDYx5;e0z5(Z$EjMkI!F7@;*E35a);~OP@A;>)Y@0pMK|COn%Kj z{KF6PXU|^9z4Mbi4T-z!LE5g)%Vo#$$pJR^(%YEpTEtZ*Z`T{SzTED)HG;)CqkV!g zV1iVYrEc5YZ$`#G%5K+lesaXw*?AsbU5oeXtE{Y*9Bl@NvlRmJ=T*75AS z&*hK*&;O3YgA=SPUIB#GPD})Ly_Z17>@qo#qt|_`E)*2E7jnv0Z0S~vLWd;kcx32_ z(a`V(d3vAC^(8kqSNN2~bqjv-(`PL1o#o`5bO$veNfw=>5=&=0QVNo>OxdvB_FP}| zl6)=>VWGYra|lUtHZ)Boi-QJt)Kw*6z!48xFbY>riM?1GY+<-+RWWNWa|}rKB_0KQ zf{+a%Di$)QMDo5=LaJC$nOvgp2OX9VfoX~bhz(PWOhI+2KI-4=rirG45WQ+-$A}SV zni`VDN=3iRL@%UN7oU8kZ64a{Cs}AkQ)jG=tPX`328MBrdVFi5R0L}YId7Jh|#Dl3QJ5vD%VcRWqWK4uA~$fPP$}lPB~+0 zs9JTT4TFbhuu`*JR2-~YTw~ab6W4bm{V=lbCvtX#5P5xj#bVJg`N-as98}+JY$k-D z9{uDHDqLe(*iOdXl&2wTE}i58K$?+~vd9;T~PrsTWVLy zH0B&)!o|d*YecMP9AlO!>hw#BnXxiM?&sBdQcJ2e+}`#w_-%gp)`1+JxA|}X@pE3i zKIGzIFApCc;ar_h&lZx6!B3gpcFg@S>FO;jpCXxg?vgS|#KiI)GUQaEt_8B_${%BG zjyV?`)*ND5G;t+hB<6iuh=@@XSj@9D+s-H^65x#F%@9~ElH5BL76*uT!t?*IrQdqm zu3-#WQnJJ;%IRs%!GUEA1LG7WCLtswt2hf&P;)sUx}eNiT$C~H5I6CYrysLgx%~X< z3-RenxgK!1D3 z$?;0M&T)FO;_$%HHdzi1DqJh_?D-WReE3CiWtQ+^Ma&d5ZV4T=B6V#ULSno1tPT^4 zlZ70Gfy>ux$XSB2O+|7fr-pYN!Q8N1%=X~w!U*eTF zUST_3P^LiJ!L%Rw`Hy}sQ?%q*C>|Q`$ssb&QRmJLjN5_T)vo@z9?6OtH6T)pO~!jf zJnq2*ft)*HOzMZTbuL#y^V1xelcFwl$q^}%2r-i) z`oA@^7iyic6o@%72VLaNAu&vaVK)+EBF0Egk&rE7EY5o_&Mzs(Glf{^Oxl(xMn4AU z{Y0E6ytO!QM8p>(4IxG`)|5iTw3dbM#I|#>?TT&@S+0`A5KAtBDa_)=xy&IEQpBYq zA*2#xRJe$!Kq{3)DN#fqrCdtgs9UjOa0MxnlwP9+gj&H>zDF$9TCv8GQ^i|*TbfoV zk|cywnXZ|p$px2XiZfUHJ=1=!ncd26lw691?LM;IrRx&F0UB0v6hxP+)@YhoDAIQe zau$|tVIGT+e91XWm?!o5i9wt%kcpv4LAUl2>xSH^P%)(>Q%>xLiQRsWD;_INb?HS) zLL>>Tb)|HAgN>zVSmoVUDscZrDb@Utk>3n3pUrlJq98fO!0oC-s8Cg&tsY4}Jn2eLLP zC(($lNXc@|*`{cITB$7ua-l(r@-&Tc6cM>D7m1GOoU?Lqu5DXyVZ9hIzTx;Na(-#0 za~`cW7<}Wo8Uwo!$dZ_+nS(&ER1_>^akUAkkNhCs%^V#sn8uFt7gzGvKY5=xMV?)~ z;H_6T{KH@WBCp=P#pTN@hHb)&vOes3&4<5u#KQ+qx%N-+#axZ~lyv+xK|o)z|sm-~DYKKYhWU{M(Ot>-8gy zDL7MTy+caCJ0TpBK5Ua1K6uXA*_Pk<&2O^Z&iv7zyu%bNZKJo$ z#;dN%W}~U0Ff)b;_xr#9Jw%c$`iA9VS)4d9GY-6r=GEFn%JTvSAd7j1Ds-dZfMT_z!bhxO))B~aHx(uJ9mMb{m z5v@|dq+a-?fKB3@#W!AZiA-Z4heT%$eQR;v5XkI?foaV8dU0R{WEAyS^N{&qYSs_B zLe^1SvDMOHCC;;cpGwBsz^WJN*Go)1aDqL#2%#9ZQ;<0oc4J_gU>IVxVd#y;RD9@^ zEl_G(fgs1&lPUmt}e>M}F7p%_CL27dQY| zA^ThN-5hKZhhL|+0#gq2@!B-3r4gyrI%7a#|`@_@bJM4?%Z8)`^G6BUOgq$WubV_%ZtJffA}u1+`q-W`?vTf|LL#s z@q<6)Km6o5tFB`V9wWkbyT@Fq_;a3dAd2b9MMYhw(kKdcP|AP;B>+LV{OW*z`-}&};xVqZ%^Pm1t ztg2r14ff#3|7!g}&T8}X>%tM{a9za9~{)RROoimg&5%WabK`}EaX!6C9 z`S7F1G|g>p-#B8o9r)GzY^{nr2Xlm%&v%dtt3`)7^*n!m z#guBEJvwq}kPiO#$Di`XYd_$|ttDUh>g#;%t8epbzxq}F;@|y@dv}hwbIWO}rzzx7 zbK-*rx?s!$6*eKDNjiC8iR|`S;Cp}hea5SEe(~W)w0*~$Z#`xz zdp>>o5$9)D93ORB3^&`ch3-ONYT>zTBfmj2#~CN5H-#i+SLX(##w)n z*C4itr9EDe#4=zJ-xIUW%I1AQwuKM^jxCMTltYdQXFb*$tjR1E4u@U~oHcZU?dQVE&>%Ss$0K$;5M%R*-gUF%pa zJ&Tp#duV#gqVXIpJ9aB=Oy;EaUt@%>@lYJYkh$1Rv|Wefh*uXqO%oXgPtMx#qZCdy z3;NdM91LS76stCJiM5PVh$&!2F_=I5`2${kmFkhXO|;!(m3Lw#;nN-sSF0WcH)^@d#;3Sq@?Pz?IjD-L z7+n@S0cR@aQ5999)($Q%cU)dv(l$cLQ#GAfVm55Y%(E9SIX&sPb#uex=Ub+EBqfJ5 zmXIue_u~)v%9rl(<*(f1wYw+Wy0zgyJbKA`?aA3;Da107gTA+N4%&A$hJ;XT)Qa}C z{)CE`&H5mcQroF|lbaJl;Uob5Qf3jEa%e#YJV8?XZ} z&d;&NDKDmEj*eD@FxCEnzPCjhMXpLDmxDcCM?Jc%cGox7Zeh56+Ou{&!&M}WOa9d# z{1t!p?|#ZB51s&ld#@Z}Tq0Q^FIt>y=oSlp`s0VRzGZh6*(@6V{JS6FyusMMqTY39 zlXJphX&R%q)}oLlH-)KEj0~56`}BHcJFsvErR#^8EQ!WjQk-ZSOItIreb<2)n!W)OSu7fa$Y#A@**BCtvt0Hp z`j$oC(sn(@Dm1!jd#v;L#^ape8bvR9t3pm|4aR#Gji>Wc4b1-fO?i+$3MxnyP=0C9 zHEhUANp@{CK)1hUKKKE;Z85wNOw`_$gmQ z*L5jmnC3(XnosOp6-8Q@XFY*SRM<+ST+1+v(X4Mte{UWws=tzocr5vID|hDa$yl>y zV6CYO$}A)??B>A55b>9mwzqVhaI{&W;|0y2woZ|j&gn=d6k)YAY>s+-+mgc!S^v(f z{ut{#yJ2EKj2I`hog?Rt#j4?AyC-MIG-dLbXpAS!%Kk`2I9_^w`2BbJ(idLmt+#HI z^T@56clhn!`gL~OE&t>H{Qt08FLlRZg!79TYYfh1eB(JeUQonve!eAPD5;Kl%Aq`6 z8+(Tl6N;!5SIy2<5{lL2kD?Y29BWNA99ms+9nCJ+a3X7z^WeP0wvhA8I2EQj zPEKwUgCXoAA3rMm#b5rMpS|}!m&2CJ%RO(r{ur!{W;*9J7aHaY>uBf~9^ZQ!XX!f2V$ssI>TK(phPLf=QQ3Lg*5I7B zWSYj~oY!lUI2z{_C)x;&@mM2t0@5qVO-!!2Q4j_~+VbM!jCt7e=)naqz16&R-Oygs z+xVPQP*SS4KA|h0PkA9fMYM<6@A2o(XJw2UQ>;QjX=a_i=b*KVw61n%BE;+Mbm1zvv}UOX0MZ5xOYw);%mT81gGTw9LTJtbw# zR^yDt)!c9;so85jMZSg}m69-MRln3lX_QFJ30teoqPv6Z6QIUgv!X{U9>7?GlS11# z`rczpVYtl9bHkDbV`jpXU|pd@&am*7d7g=(HV5lT{@^0ax!ShPp_EfgB}Q?J0Ebq-SOgS=ICUlwfY>1 zXroq$U=6ltF-*yI=HLy*qzc{F9ywV=IT2Z<1KtQZCPZ3_cv69Pe*6Ky^;=)zpZ@ND zL5MSd@CSd&zxmU5I61xr;&^d6@aKQ=3!YtVxpmU;jjtYay!PxH9V?A{;ryat+Jm&= za~_7Rx5StWVlB>Ti}9OZe~qKH5lW_rMT}D*M}?%Tlo5O>gcL|65mVF!o-?Y{7Q+~{Drt=l=D)>}+# zi7}8wYqWFG>)C$Fb_Eh4z$MDNolYyGSesYaKZ$ZcsA_!Z;OnL*il^@n*-uTkf8$SuQ);-m=~- zakWY3T~*Deg7qyaCL)QNucMTt3t%ZMeZ$%rvPmo(D80pGkCC3`N}zZQ4nk(TyW;2X zzE8+E8TLC&Tln8N9KzhHNy|kPExZfz8p1&2mK!mJs$7iOS6|UJcQr zw*(ERc^ysETZJ(~(-@lGFiwSdRmU7gnHC2-339MfXMI@Ln~!%6=k$c^^=wYx>xgce z^uxn@DnmsS4d4uBw}zweW1}s78TFDHW0tvOTo(B1UwNRDvGxVoF5L_?_SWNBn31$+z*1;r`td z77O@;KYWK9C-=w^CIY87dIUIsInp-`eQ&U036miNSoMX*8umGnMI)DF4GA>PG1mz1 z90RR4eB}#w`O>SWJb5wk;U~|qzN23)c=X~4w{PB{YYK0^dBn}*UQ0yQ@_c*6`FzFk z-4*TYC-`D?&YudOe0IUR@4vuFOU{KD1#26eX&{%%AJ_MqNXFfLb;CH$q^z??wG=Cl zKod*4FuE86DO@N8|Nr-&J3y=A#3r%m9gT1Br4VgUR)8_Y62Sn|KrFv{tQb;M(vvZs z);JZ?m&BCDI^z{`nswf2J6)ips1iX8Q4#~QQYMUQeNt8!Q4!cz+Lmh^L(E*9&v@5r zbM9hhnnqnbIZK!WeJeEHA=#2*)WQmdX5s6yDdC-P)VH(?uVo37XuPmk3eC#$==l|M z&`&xwQR`2sb54sj)jkn(y2dG5V{3Lh=yJj8o6EIA2!UaoNuk;hM6Mf&2ROFLI!7;Z zu!!igRS^t_>bbVQO4UB)tX+7KTu)4L?P3!I=Ulx?9qcRS+PH11>YgkNW9H+}F7eGC zV++TpOE$+n>!oM4Xb2V>XSMxTBFkn`xzh$`^#oT$5ryem1fWq#ilQ19b?Ix3!Iln- zW5195?GHcX$3KCWyO+E;-?Q*1yn1uMW|b6-HLu>cp5CvxxVj?Dk*4ifZ7fqxj5Bn` zD3o6PNHt1lt2qN*ngLzsdHuB$)<>RC9-gru=gLOrx`}wmGFw}&Z#&jjgSXMsltXKf z*sd+MmEqyudZW%Q!XKq-dvi;<_#9%5XB z_rCu7q$hnoAIW*KJbgZ}S?{>_>M5_>S#f^xj5*i6Otd(oLpx7{Gkx{_sbWi~IXcob z2S9W&*W;f9J~WjY8ASg%)}KowMsGZ|)?HF0)xXo}=7?o`#A37HAAYC9c!%)~|LXUD zz_LHWd(SXtyvaO%8fe?Vty53aG#D2Y+~YOXh3NaLX$)abgaP_ZuM7AwaCE%p+2eDb z9549l+pltb>bTflF;AA*cZ85|ZOhTdb9~&fIay$&5KCf~mfhJE>-CbO&cPHQI()w* zB0PM2&VEpSLf1M(JlkEy`%KeV5{YR_bc+`E&97|KiW5;YCH1bgO^-hT-L5XfUghnQXkqKFxP*#tXbGV z+w}CEAxSkxy>G!`cf@oMJTS-`lNVVWormaPSuC?>FvL9ZmyD3z=z z``{qiEOm+Is;^CIi6*JjPiw`d;JwqO#+b2zJu%T~wWoRLgR%hG1PkN&$G2_M1xDDGWfORwrhxM?%y3!AtoEgVaNoL}aL{$gr z+|XONcl(&v?jO_kmS<<@G|mu`R2N*TFQldktO(ZY_fr=`N{Tbi=F`v)>MQl|JWo)CrK7=YNL>-3LJ4Ikl z5#M;8oDFPlWR8!Q+_-VYix-iS>k_hZ?1Wgy9+}hA1*=WN!w1iqC;d9AGC?1(SzC|A zqLJ15^jyA z@_+qfPP!X-ag-96$XxC-H%}eLx6E-*j=B){9@a-z*~dn3&f|??b+o*eX!QMt4?cL# zzxm@IvD+uU_02Ev?SJqk<}vX6VrB>vkDpv|`{Xu@R&GIK zwL=j@Vc9m^y}9D%$qAT@FSiWaJvWb!aIfD!*1YYUm{*p@ z*ST=;U{-|S*zKu-gw>Kb{homm}kDB$mh+Jz>n8U+h%uX|ypGv*<|`<)4-^>7q>v0l|sA7GxGc zQUSocqB21v8A*mIRJ39#6r1XGDPpqIXv(aomab`a3!W$1Wm|KL z>b{!iL`p)eezoYzpUUz-|~Bpa$T zPOgRBy2Hb)zbi!7Ex+qR@!7^dMG7?iN&VwmSl>lH>5rV&TM`%XC( z5p3h?qAKB>W792($w8X&R#OmJG9FmWnQ2r8iuWGV2gY%tn8eY#Vc9I9f^uT&6&hr0 zH6`m6)>(~0-Mq16wQLD_=6K!kh5N^xZxiFBWd`dk)1+gA#@h-DQg~LWb`&`P)I~)K z#cFHIdsCrTMn4Q=WS$~vj&yCyX0;&H+fk{4PcgnKiw@4h@;Me(EC=^_E{D>3xgH-L zQ22@+HSA~0ljmD*-Cl9~))C|OjNPQt(3~y4v9z59iIkk^nug<}C20;kezMhBcL5_t zM2mpex}#zsSI%=u8EcJLOtI7%J<0&l8={qYOl8rY@GpPw|0c{c|Mh?MTYU3ZzRL3C zm|yzlwoyYgX8q3#X49mJ?oXhIwJ`w>qX1a zs^$1(h4Y4f(F(3BPo6xNzka^w<-h(>xjY;A)n9p&JGVD-<3>x2Qog(YDVSUrwg%@^ z)Y>{>(JmOrMC>h{Z&`Mo#5@;g2Dy2(DBt+XYuvuImaZvu%f1Zbn~1UEx~7cVL5x_O z@wnYZ#2U{$MH;8qGr`b^qj4>^X}Pm;{PNe|zmEMFwG46 z8H2JFQh|Ba#Y$0LJO)Qjb3N6G0!?ZdKYMM388K>PsCI{827eGT<_VLWp3)PPtk<2$ zL@~L}#)KTToRMqIIF-62t4XPYQig+9EtSth`!xcn4^M{`QFBVvEVZq#b*zpu#Wx<7 zHdP{TZKZbU+)b`O5TMvY^Qg804QgD_Ff3V&ww)@kH`hp>tC{Xf^QlP_ePHK94j27B z$kfxJXtT)Z0`p?pvE5CyO~=tyVzcS+-f`#l2Imtg7p9yDb7C4ZbBstX?8n52p7I)N znNvV=)OouP7^?{mS98|JIbuy9D?!Fe?YlLKX;)`-fIKUCdi z8bXnzF+gh-oYgNpMpVRm<7C6pDswLu_G7?$)kcvE))``qidf891B^ygKuTfVbx2NX zWx>!iJdr97e${(p(cQ=IC6=IBB^!ML6NM` z@WXVV82tzRNz6q(r`D3Qln^t|pKn<%Ew@jPBu|w0KYS|1sBJ~06r-OOlp<^|cBIs? z=sHf1a(VIMN(xd+hE$T2YLnI+jHWF0AfO>dD&)TyBUUUz(jpXwTr8=G9Ift^|LyHT(DeuZX7q7mv@eN zf|3gT(u)|6h{Iv%tYOg#NuoHLXnl+Cmh#=d_yrf|JHGWxZ}7(JH@SOjDPMi-2KyoC zT)u5d)-VhMP2*Yip8d;_l5?rq7h1m%YX-dQrEgj`%O(9Hb8@s2=Nr%wmUwIN&T(vdjbjlnuypcygOhI1-M z_L^}}s4~Pt%z=~wr37N$^Vw&HRX=jP5*|O>6N@_4Vkme~YNNQ7edUq#^ZgX%ZTW->EsGo z0@jQ=$D4FCqKa}|0O_ZwMxk>3Pndf(DEPGL+*mw!1|S*4V^w6h=z zxI8Ftazv~(#WtQEu{DV0J} zIJz|zG+&CCNm8-s|ItejLWgIFgy=Q2zK=^XaEy=)eSH(q&*d#|oAUdmi8 z*<+X`#9XE^GtEXq$ixs!N|ABg6Q?MHuA+;xMpDkC7>P+3_H!}TOGv4d*dWeJnCD`} z;@Uy@yI z4aW2svBintTT4kvrfH_=`a-OQW!IFhGqUVj!Z@)TcI2{PwOC-guDt!`R&v;tcCnCD zVOOPOtdX)>w{kg5_+o^t%RZ&%*9EQGYvh2Xt7dXBn#$3S=v)WE=!4iftptZuBqU8O zU7iiB+Xd@>AmB*&if?V!c*auC!eN~z>2gGi~1 zyj-xwibn~Bh?4E}YmOLWrR0_vmU83h3;f}C|57e4Uh>~vY~}8&M||&xKjathK9g^J z<1MCnkd(IEzO}--1wVW58J|AB;EQjb@a7vQtk#yNPe&eoHsV{)+2zQxFI;pp!!Fad zh4qnRj)g}LULZx7Vj^~i@BQ>4Kl$JhzxqqB@ujz3<<)z)Flf#`rHB~tUT>0(^H?4A zitif2I8w63`;KMXb8&XTrV|J{0_&F@&N;kq@tvV*Ez7>gJ$pGa&JpV@Ap|jovTPI1 zX3{*eeYxW|{_$%}LHOXq&v^H}k2pIUq>--NyZ;Kd6;hh8R-|oBS#}L=<8?z=jj+D& zbP*!z$#YKINMZ}#6h&c*uLH+ndeM$32&rq7OhyxC6!n$8kId762`8v z#Y)4tGmhL~VC6^0Xllu~0k)cat8Od{qiYTZDezygx$C`M|uMvNAC>*+S8gmGF2Q738D zmmd&kXb;#{cigqQ-c$)`L1IZo8`%PcgF;$2_DW)toDy@Im}YqJ$zz7y+j!Z~HLa{$ zrS(;Eill5wS@!}V1PM7JB@*VDX`TrwN-3HBeo(knwv3|^viAE)rl66kX-JY{#8B{! zWsZqZVfGk@9^Dse#ZI#GI9IX5r6f)A8~y5CO2;%(RR8o zdE>=`9dEtf^4k3)o}WGCy$`qCyt!bQ3do-0rR5X1qokSjk!K8v zr;iiH8{L11Vc9PzSbp%6=RAD2=j&g1oj2cjg_LST)mw0ZQW9Nl7Y}n}&RNr9IngwR z&ANk>dGYj$&mL+ztnD<0`}P-KryS{$e7V}-a*gejlB8*D0mBfoblH|=*K?6~Vtm6~ zS{^^WpYp5U`WpS|TRi&c6JiPy##Ej?c`CPW9&zJ%RZ^OmC*)#37UPWE zI9YRY(wD`;;=Pf=RJsl^%%n7yT(Vqk_x$jk2lDBsSESOEl6E*#O53(#rLaBU(KsW{ z>%*b3f^#}A)n?gDZw=xzwwKa0jW}-zF$%@dcgH%{6GzM)<2;Emrs{JL!;01wcJs&_ zJ#+53+Rqq|gb<07E_GtbTwKA~^GV{ID?cM6R)nM>-6B@hBw(uc{xHuq5{m}(m0>K9 zM{*X4DOG+!BBdhKU#FXtLMmB|F?GOEmqQkcD3ij7L7WKHYiBDbIo6r4HAbuvBpaMq ztc_rEHL#efyg@=pm7AgSJTc~aad;3-mIL&NEY@16mJThu*xH`UTA>jOIWwoogU37m z{r~%O&YoRx<7CBh;Si^dLEAK}H%EBit1;T3g&x;J>&YzY*t$vqP(wOh zXB&oCQC5RUCZ>rwjKmlbBV6nvV+{COqH>M? zJey)_C_o>uDF?1E@ZK^dmwm(U>ggAOoR}4^la2xiaQ8V ztI80=aU#1_u3E?I9HIz{2(oUl1s zLz>x*nRkBjh+lkkfwjULudTUv?@dlmmz^5w6*&hc$S)3%(S@8t5kFL~=rU*`7B6M6LbA*NmP(f5BQKm7iC z{PTbIk1>8B#T3Sr2r0>Sj=cZ=hkX3uC-U-aM=C9kpIk8naITRO6W)q6W~UM{(O`M& zp>K4)YVGI7U$KU+>vTRVv$VawFhDaqRVbM!Pbao7wKW9=XQ~!nj0WQCO!x2x(HR<~>MoNC+7~i?-{8H96=P1- z5|K5NS+Si8tEsA=gQ=iY%?}pwRZdxI?YjOqq1tjQnON!!UTP`8RHH>Xm_01TSR^Y9 zJ{Qe2Ya3aro<7z;M^T!k6r5;@!xSN72vSMGLMe^ox##Z7Gtm7*_3qvNjsQbR#YVj5r#% z&}y~U4~P;ExmiWp`bHP*+kMMoVK_Zr(f5|kQRHGfDdn(O!Wh`?Ca#94^tr6;i%g>H zgs%1UFD=8E@J7$DDJtwL=ZF+TOqp0_d^8v-IN#unQwD~31u~UPNS56&Qi{-sulGd5 z91}4~g)Qk-&Q#V(DQb~M^aQ?HH#By^9411Bi>rZ*;2nJY@t$#fNtg<^P8MA4XP%x# z`ekMs6%VYL`GRqZ7{KcH-gbM}QX=Ctv03Yhv2lshP0M=WxpCZafu zUwrchw{M5;_V^p zBbte|1>*$k^~B+vW84OcnemO(yl~bAT}k?YI`GT0#=xje#gsGIX!)6>{;yOS6(uJu zg~qEEJm<(9B1&Ve633)gW)7)_Qm!3?TEG#kI8rX;%3CmEIIP~JXuK+m=0J1NhMh6$ zoAXu+9SRWA%66`bBV(bUzc*6bU8o~WC?wIWbBdx6B=b35vQ)R6Dt0s`)rkUvoHK}b z1Zg-M4BMBpnxOrxhu$zEIbm#OweomtY8)yOV_>=ISgl$XeTQ?xvg_!&7T;RBw&7^g z<6F&}Hf^sh##*8fBUtBI_gb%4D@9cSC9UyVt5RHYWDEl#Muur36*bMw)5tK6Z1*GM z9GEi1pdUn+XMrgs+D@rvF$t}2u%g@!X9^+1J|^NI_y9u!yDK#NLVGpi+QMeplVZWz zhQ-3cr144bJNmXT3;_|LZ5v&}rAXuTVQi{Ib+K6Cys+OVjChVVmg5`87-O+T?H=cs zTh6aW&dzpB`^ak1(Yag^0fMFA466LHupRe$=y5e7Nzz?Hib?{i?*V5Tj2Id*Ec(Ko zyEh3r@%ZUEakh-RK*;K*vlZlRT|F5WO-C7DND?VTtvHuNEECoVi>|2_m5GotkDiTO zTqO*S#yLXBJbt*P^J}c_IbL@aVx$K!=Y9S9D;X}U7h9@{#8jRN;RV0*8~-J%qmDnl zyW;&1Uh?G0C7(XOVmFSQy}aV?*`8NkyM+@=o&#~#zQDW>m|h#Sq3CPYEFG8`*DMId z@`r!?1D3s4Abs~3S4z@&m}^L>+5;#Qr*Fa?BVA*#66spQjnf{JcC40;t|_!Dk86aZ zjpOUzc%9=lEEkcsUoa=(?Ke;P@|*WK-dNhU;9G%N<3aIw&FwpDOq;lMw_~`RnWw^# z)ag}2lo%(7>G$z2C14!47Lg<4;%VY>$3K`2Tz?LtH$2Y zwuWK~!&C^VCL3yOO-#i&mQsmgb;ECJqN4KG1tC`to06dP&&hQbTn=?i<8Vg#y-0mf z7ciw##fn;UopDIflQh=W*IUOYbKMK<001BWNklEh%Yvz(_ zjW;r5t`$M4%Yb=M-& zQ8pWjZoD)(lQStNWpBqq2pTsFb6}cgvIzTOV87dAu!OlV2VqVSQ(?ECi7^vHpGcq!d8?zYkU?yN%Y`JWI+L0`cLF&iO+MKg z_v;#N-)#AnUw#eO8h-KqXI!3Vw%g37kDhCc(jMxI1?LoFDYe<>oYXW@71vUkExu9F zXtori;@QS)%(eFo>(zo7GTZYl%hiG#Co4XFbVlnvg1ZK38D}VSsL=wiE`y@tiV_2F zy>*YTzx_IQUOC~#^QSD=YlhMA@4x%ETwHG1?*?8x-}3a?j>Trl9A~C|WU=m7p(DNrY*jv4#|b za&wEL^@dxwk7=wUm61{kZQFAHl@llp+n49e19U4#$~#U@@8C+ols(6*j7g4%mzOjy zGn+^XPHo9@sDUPRw}~!jITQrM0hy2^zBa{Lr-g_bek57VIcBTZG3&fGfpS5t2cuMf z5jBlqlwLK3tc|Epn6ru$pI%P%ohZOQ9#l7$9P|oot)vR-6#aZLE35nF% zSgt73YACS+CFvX;FxFMjOVX@zwN{i|{e)J7{3d_iL{mgz1ut10g@hcaEK1T85T~UF zik2dzlI*-uC6Wu8d@x2oNJ7%nc1VTBTaHhUG?|029iwKAOVLPPF|ZfXi-}Sqo!e^a zg{*JdMlq9%&fu)D>^l}+OTW|;w)eu(vZrqw#Hr22wVuUl$)feNtyiI|bM$QoEhwS%^ zAIe1FjnNNdV-RncQe+Mzebd*ybRv}Ly71x~N4IEMbrze2IA{7|n1WDJqU#(t|39kU ztXZ-n%g+1ucK354;trXKETF2oCUmR2)oe;6jg*DS6+6lF%y^guS-s?B<; zp=$t805Xx8cZ!H}j=S%zhwX8*i8myWnKy>xzK6BG_4=AO@9sxTYVfJUd(a?7QPbNN z7)=QSoXP>OiMkqB^A$h+qfgoD#^X~!;@_>#beMQJRo1WXkvEUz8NUD7XUr)Qc}$(P zHfYeRv7YM~LBf>b)u-2d@}ltJ?E|OdiJT|FEJ8gQEP||wDP>fYCl>M)ZSnE(f%o5i z2u2kvd`SV0EVgN%*cIWlHr!WsGjKKW zMvc1GcwpU#ivp^R1(b}rC>EiJ78`q)SmJf7vAHe@@53a44smUSmm)E9H4A;Urodh5 z1s1P~k+MTc@=VVvDL%-E8Zuf7ry@2ki)Y%G1-5SpJP|?gcxnB6*1!`nA1X&pcmb)yMrVpOjFamK9r{QE_G>>V4) z^_i0)0|efzW1?|+_$9R?(koQMai(dECtOj<)Jqb0)^Rv@NP=iM%WiJ>m^k$k*;RvM zylm@W8LZSLX129?koZy>$sCXg6@cWB8x}1=j;q_y+QK}~g)r%W;bLQ%L&*88i+=-Zd9}b0i zH^pU=GAR{yxlr~K-+M7+Ul+p=nQf~q%SK8{)==uSSO~MV4J-Ea!@MVY4;}brFJkNe?VZ+3zQIyZE~N_IGdi@VM{~zkI{p2V=jR zF|VjVPIEllvyy0(B+Sz^umBmC2@|2#&bBx{lHF^y7)`pO20!}jHOsc~i(mW!Pcu^~ zq>@%%Q0aCJ44G!asShIC~+EC28hU$OqQ^P?ZWW_J}zo7y(A#MqIp*jmwk z=9BAdcHg^Zmm9zT-FtH9vgnEGEnA!z)?-$4<^#D1oz8JN@&5e-Xkw|I-~Ik;(zNiy zAN>(;zkA>}|MYwQEbK z984Co(MZ-CNxJT%QjUtbJDgiZ#zU^k$RP|!OGnVbJm@W4Q9j6SW`is7oZ%K~h%{cO zTi_r)qL{+v=fUeOrO*fVuhT=;HX@9|>kx4GxI5AqFLm;mo(H)s)CpJn%%A=AC7*t_ zr|c4IZ7emjHRarltq$&i1j1E_G?!)DaDm!7b&JceF6U50tkAZ`JSUc|lXD5!PAl<# zs*+R2&g19aBHl~Oj;vvUP8vddnJ3m(`TD-o9JZG54=p~sx`1^i71SQc23I!|y8}q> zBsD&HbO+2hbzh)XxH7GxjsyRcuk2iUy)K~S1cLl zg&+Lrnv`e0`tpva6&_EOSFf+QzAnr!W~{^AyCbIxOKZr<2a7s9f$jlaIxlBvng8(b z|3*Il{QLet|F8dozx<0oriqs?c9f!g@rMtb&W$h6cd~89{r$;* z{DT`l{d5+S>ZTdZN!nSQgd9rdknyQ>`Sg3U_x?iiw#95Tq2w};Ai=P68t{EyFzp1P zVzx0IB9i{MU%utM?%C>*FTY;6yFc;wfA<^K?S_YkZ#b=uAAJA&{PLH7;2;0)H~jDa z$N$FdRSq(i!?LWL&nq83JaRl`-h6xFbgC>3Tw@ULv@}= zyqB4-DC$ZbtO>_P;As52xk8GHe_0!~`g4w4ZA-LGp_M1)z|i-x>5p`es9tN2fX5Jz z2EQVwX!9-kzxxG5j99%j%Ir}L9POTXwMRNCQ4HKv%M5R}! zRR)`Qc^<8}2&XaAe>$z4PYKFIrE)$Uxx4=@S|+T8jXJKc{a~iR1ayokXUN7pD>qkr zC^?p@WXcrrLyI}fV{{fS!rj@}&L{ES{IHvt_l@4~sdWSCWbb_PqL31#q8tu;c8BSC z#F3JcrUD73{ltr#D@qpGP1&#Zd*(UlZ>@JqN$d|hltR(OH0__qdSO*Bf{3@;h(z3w zOgS#OWH&d~wnc(WH9xN_=dICt4NO!MKP^FOdHH(Jpa0pX^t$qNdZM<*+Yj$~^Zv-g zgUN5dc;v&IcP@t;e)wuelFE6jJRK|R2CZlEoW>TTi;MfYHW5+J7`7qJ+|SkJxHYEK zeA`r(vv|&tICFKFIJk4Q>(ZKe^GgV8fdrfw#G_~yyGcb26}qM?WE z^StNkyfuIM;vm2Lhi~}L|K;cMr+@aDUtOvE=!f6qfBZLp zE#-`zj);qF0}(+kXB@$!>{oYu<2!|H;{R3=I) z)Y@h38|SS_T-Ip{{(%cy3o2AjiVP{po|!aagVt@O%$a;heDU=+JRPq&pU-G|;CNiP zd#L>KS6|cGBim;D?sxZm@x{0N;vfIOKmGb^meUPs+8{Z*gRt1fAHF{F&36k=XQy_- zCC7t|Bl$U-B3x+}EqT!#?R1Z@PHT~$CaV8T8PX|5X;vv7REX9B7gv0IxPXYqUZIlH7;6M!Ok8@(K_XmV6GwjA+3-i^FVBo(fvEEgo*q(uZ}+p14fl6iXRy{-W2zYG#IddxpF$11YAx#6;`oq3)R+@Ic5a!vw9>-Vl0H@8>P zT4OnHbfA=krkHu|N@5o0_WB@)d7@b*;k@|dirv-hW+tT+rYVz)BSmpdyqu6%1vQc14rxF-=Ukz3d*Il1?ClxhoZ%}?tS=kqG3 zr^>_Q#=~)w%^D96PyFWB-|*(`iSyF2;b@J1&n1gd-NcN@*N|Yh0MfU_x;buL-rqej zrL!FNg%`I6t_~a1l$mFxOe$prB)eZ+e4XwQpM7 zZYHJ#@9$1*+e#@#%o4|AXIUaq`s(#Hzy9T0{@?%jb9wc8=Id|n`00;+h@_qT>eqkZ z?H}H9bDjD0d#|J#{Nnf>ZHr06m*3u_lkj;ev<`Jc$`p*{F3NZJ3y-IJv`myTlV?ps zl0mtiu*41u9^2k(;9z2qc_`$*OqKz9#asPu85ckqaLw=SctkLg5r6ARt02V_#i z(IGZs?ZvIdfWuPE{4YFRQFk5bnmt~(8180>#bNGAG#q(`i;Ebd6k6ygxCO!K_Jl!%Y3%hlQ`-b*vk+7MbV9)eE?}Islzk zD<#J)P+YuB8BHc-mvP^ivdWY)X+-6ulDN6rODV!MC$yVPICF_m)7{~UQVyJZ=3o7r zpYgB%^`Enw_q1+!YqYw_x}GDMp*iRC#;I;>?JTt}+&!K6yTAJlzxvhJa;gb$PF)@E zi9})BDyQRF3|QJ(dQ;Lg$+-#j+-0OVvoWC{-VN=61N7Y(P;qYiOq!W&b&Fh z3|6bWd;dsIfq0#A;njU%+m7<#@sW8hWQ`epmDssV^F$g@sjIojZqkuZUD)qSB)IH% zVaZNPN?A%$Zf*~v3Q`hf-T{Sqnn>cJQrPc>R9rq`A2L`7{dNz;!8dQ;(U%in{q8;9 z%XnyQ6bBaLG@ztR^B9bUY*K~=Jo5Nz5437qoDWa;?8_ACGPCjO^?_+hXiAil$r6yW zW$Bn2B0CN@JH#{Uu$z^`p&(+^TG>s7DGU1J#LL&QD<}#^Vq2iMLQV&+$}OtO|Mh?V z15174XMg-DKl#aPe*A;il$`n7*7))dcep0@`@~N_zvXypy#4lx$MeQ-zkExXX38|P zEaBK|7*AV6n)BhQQ_4ok8@aU&=%Ow@&oiqv)~%wAZV? zq^E{Y%F+T1>2s5i*+MkTmetS~MRcfZ4^pH>Y(INl|%O z@6Q#eiqcxg#66`XwXfdHWs32zh(wBU)6vZLaK$;0CCLb3Am@a3$XP@bn)T7ak9ZUC zW+K*%Ui(N&@`2>xnYiWFMMQ(U8S-8R)tE|=N z)hIbLO*zJhr-j8s%e{K$e7fWj8ch_lSZvO_ncf2*Fe%I>MOI+nP%2yRs4KH7B^xhq zcO3RJjfIqj{eF*$vOnyZrp#`J!$CM)MPTYY6?RiWa|yFi>PYPzb~~(x>LEJX{#@`} zvid@l*~dO34_d(3CHEz}J!Zuhjlg4F;o-3BtZq$?5!dJRo?vyEv7$MeR1Kk@0y z8~*!0`4Qi}yJy~I$}aQr<&K-1Yrg#QJAV7?H#{B}zWw%&T*7I3^=gM1JU*TYeM91W zTG*FD4(f|yZqlr|x=T@w`m38vFS7sVpZ`vN{ndM(wlhm>;xuMeGU6qP^zN7zL5E-) z6>pGI50Q1+D3MaWp-iH3S2=Sg(RNRy9IEU^U(>6SHeQQSP7_VBU5_f*qoR7u`LQTH^1~0TyqA zI;TUh=OYcf4=qdF9C6j8VICQp(Mt)eqGZSY@YP`5Qp|a=Uq4L*%{r4>A%Jt24T*#7`G~pO|&dj?+nUvNW z@9yvT%|E^4?b~%k1vwdGN{Lj$cFq9umvN9THGa5A`AAsb*tW3XiYVs|9*>g zr@E4I0(I0w-j>TmDN_J)o)+%UjjSycOWK%sowYi(-66@jJ`_|p=4=?1-7W{^P@|xk z=IFG)`sRV8J6eyvRP~aWQl7(fqY#ovW4V|wT*e+^j0_Q`40*U!yTxK(G)Ibf?VQh@ z_rCJ*(Adv2^A4_W5-(oP{NS@24u{)_Nm^^9<}kBX31*H=D6zNcp6S~#Rpo@!LAF4$ z9x{bYYa6xhNF=OPUR~Yt>gK@is>BY;DlcAMb9+eK>>?HBd|p{jXMXhKACaetZ{EDe z+9i(7X>}&$Om6P+P~)`LC5?!sq%PJr&>|m>m9HPZinFLB+*e8#G=g434u+8P481bv z2{oZi6KjiQQW8NGDN`DWs6%-`<#=vP6Rb_C)z~&e2%=gG(g>19WO@%@d>>$xXO{7W zu>mw|Od5-{_|1{Xk&?1`7$nRb#e$?J7T8U7QVz|dc@(2)(B2Rw=SU;LJi-@!EWa2t z*pxpe4quEOge0#Gd7G+38u2nVc*UlJw;8gu9u}9dY4(x!JY;VXC*<*dXmE*<7!kO~ zK?#i4F4U1Y664!|)|)vg4PEF^c0??F#15&%I7a_jB0VCJ1z;aHm?1ONp#zs^`*-{2 z@Os8VHc4EeZc+J-1JhM-P2p(lFinYdtI*h5 z^*8+8FTUX6X=CdSzOtX7ph4@(A;n@OsN@n$Oid|-|8A6=C?)jE>dsVP-p`cMdH-H` zI5tF9_H&_>9n~72e6r`WPjAB{)a<#14`6(ch_Y_f7Al?Y@bGY=8dNmYG;Kjr<#>8v zzt7}-;^}GQ@u_k;K7ibe(ZLzm^YY~lhcb~oR4+L-(z2n`Rdhd9IBhM`W0KHnBNs4R z*yT)J8|Tx)vYk2gGi#5_Ix-PQ-{*08xyTsG3~xO_HN5DJ!yVVgI1$=t4K;_oU1g|A z%&22w{(jq-i;$D?=FJm-@+YtOxBtV>_}NciBO3dZ+MqV&v{@|D-D%sIZClt{Wm`73 ztzi3C)?g`fQ7Q<(AVSx8!#CZ+e4<$T0sB6o?(MN=BCEgumsTi_t>F3ZjqJ6^t;xw<~^$!D+l_RSl5 zN__qH5lK7B6wBVna}8Nz?Ua(43WMbx{O&X~<}wNd2sh&O?Htx`4SQ^DA=$F-thVvU zk(@%i+OLA77R-lGOIYt=ve{2;-ohx8;}S?kseQ+?IbHW`TV~b++xf)n7eC=&{^g&r z+fAI7jmM{rRx9iJ#IhYZFDLFFpZMyV_q_e~1KX0h-;}n6j`?tN3l=UsRY9{b?S?+M zb%f4&i_6r>G&Edi7SHa`-Hfn;;8{fF8{f@QRpH*Am+0fGjeCpOrhqpOw`rrbm7;T8 zycVM^cVTM*je0tsxqg#*_uYx>{f?4_!{NX#XLhr2z0+V@Oa*v}^%n1~^*G=?wC}xJ zn01zwtr2tV);XUcF_TqU*Av}i7M(Qmjl4IeX~Md(pJpa42vFCRUCHd`!aOH>H}=yF zraOXaI+AAfl8#|57zN`?*7_QxuPg|SnV>TDU{&L-hYPK@NYCw^DiJ`cIbF8RQN0a2 zt_;m;Bt|G^f&UYW3c$@m^ZE=dhu+s9i4A#I8|`gx7rus#2RL%JT94(E8f+F1x_KFg ztB%`sqfCYD5yVPTiiC@+3m1kj)*2M0FboZ?VLj%jNu%QFy${1hRN|_zRUd6|#M;ku z4x__naS`;WEK`mGp|+5bWzB;deevt*$QT=PHV;O#=!lt@xJ3IFUwYA~?t8Qq^vhU= zkO9VJGyp~(5$*vVinQopPe=FQSg36HzF;Dp+eS($oNrcx+nd5b(tF2~ve|}+1?R*zHV-hrhz-Z$7M+3Gxb>92 zRj&3oOi7_v_PLN~%*lE6;y`PilnTAwvTi5D?@7~s8>&#PTtqbSwwAJWq zrPVb=0rW8=9-QM*&>%6E<9Wdz7uQAcBjfw@9G@T`LuTCi=x70{!NowZZn&pWlyveu z@#f9SfBKKV`4pd@J7B*WEIv${ttm9$#afk%NA!Qk$oJ+K9qIn;O?2v;E zu#JtOtaT5~Dq+9Onn*4qmMQ-1z~00bzV{ZSCJk-{7W&??AqzNqiq}#5C5|Sn;O?=6 znoiY!8EnnFZrG9_pvP6Hlx-S^Kk2gD>{WC zW4OmI(eHXGQwIUfuzz+~2K}mAjS5T^vJL(4Nav6gfcvpb5|vnt5rBV}h@tW^CwmSC z=#5slu#5T_JB$EXNr`Te_8g6@S;ppqS@ephz<8;d>+W?#$YRpajN$o>71W?O97 zcb#=z=zR%?r5$luKvsl0OfZd-lx9ZGnUtdVu*)ci=-#BjlrQF;s4B}82aO8h#2N_9 zZj2?gvv^0%$))2*8!6CF%sJ6oWK@=vqt#83YE!$AONp_KB<9&r>Ad5}s{_nwhkE9_ zZ{P8FT$$&Yo0|huaq?8y&C1R7o^5M<_PzJep18T*C`GATr8?xYi=bi)MsYV`ZCmVP z$gF+i?r!DF-=2n)Qjl2S#vz`Fil0u=9K4f@Ty@Av8HG<24$-ZPjlGB1pumM&Ht9t! z>bRt_S@Q8~2~C;Wg>T=UI3Jy9N~H7@e~%hvmjX0(bwG!)>#)ll_8HM&8y~K(*i93= zxrik9sbun0M6!C$%B}=I<7%3zE?gf9MWWj_5i*(DSJt(%wGcL3BCnS7IXXUD>27k^ z@Z7x*Yin#a;|+>4a^2$Q$vMZerC+kb+n7m41tvqT;VEXSVS#XzX?U87+?{TQMNJY6sF(KfiWy2fhmtTu+p~WB+5gj8M8K#d|E%nYrU4qS zwKDQL)LT&@!Hv@##R##kCk8i>i6sqVc-7n;REOM1N*Biw=Z`7cs}uqU;Tk! z{_-6kJ{;N4iKHE;i)eCm8#CQbNrgi$?DFWM6s#1oG~T^UtknbrF&U!1MjitB-i>DN zDgm|9v3ZXFcW_da3p~JOT<$S$b_sE^hO>Aiua9H{H(YvP2B~eOXr?9QWFqIP-j0na z&C=DpA60OrXmdqmTQ|Sn&!iY9N-j#?KQiaQlhSLrFZZ+0b2tPK2bD6bPh}EA{OSOG zK!U&en%k=@*-gcBPBN9~SaZqjr^%a}h$>0dUtAp|Qr^37_3X8}WK^CPPVNc!_6!t1 zFF|l>t>G!=q!FOmk)k7nvSB(-&K|5@YXTl@T)N{{!$Id`rW)l|SW*GEIwIjOn^h03 zb50R=fcuxyRqLV5A>c8}ylJFeq(Myr-bSgImq z8TiZr+z|~SyC)fAn~z~_k%bo3vL=nW?=vJm-pich*>*FsmZ+AA1O~G)+fpc;hFrFbtFPP2-~Z$9 z`TDCTmi2_V$?so1(CT~t;g4?k$GBh#R5HRL319#lReTq*-=>1|P3KhAg zBM_I2Cj{f7@s`{cXbB!ByhpZmZ6_dl1X zW#@R2k`~lYKF@{bE?akY^Xyhvna1lc881o1)Z8cJ@u|}`+`5g6Hz6Qd2XoMzk_u)f z-R$H1p+7@do-wgzanUC=@nPjpiihhbNw?skNCH)3$|`HKNW4j5%YJ=(#p{>X9Oj9w zZL-yhriuI0D(hyXu$f9-8nv(Tu=T+Yk3akP^#dR7R|;^oPoi$*De>v+mrS#8K0ScB zT;E&+E{FZheww&C>?9|ca=`C%PIwZ@yO|d+Zpf;l-k5iZT~V2)97M%vn=SyDSOm#P zl+8I&E5kV!sS}q4nMnB2ZRB2=#o)pQ+EQHT-6CjEqeY1l{a6T;%rq6uI?L+Nh1=Vm?B?XBwXxPvJw&?{ zRc_cX#6wOuqCPw0=O3(%Txh*TGKeE$-E#{0+i;(_Pz3iF4O@4UB;GHtF6`WhBHmCD zi3=Ey>Pv7pK`d5p;_@t2OUYw25*>&rA{OycstVFYEFzs;cUO=$*dIxg_r3}q zb43|Nn|UKondUC;?zLA@i#J&ZRNY)?rn1#OK>Wm2?2OAvC5UKSTrz5M3AI%XY-Am; zOU)z&gIZ$9c5$YKwY>H!(NzQs;`V08&F!@q#(b67wzC|r58S@EkxyQKO8c%!?}~K8 zNwU;Hv6>{F&P}{KD;6O8tP)BN7jogWRF*Rme3GHY6iAYyA;88mS|Ywmh*9M5G-(Q$ ze6@x}fe^7@suxtJB)z!#BDLi*Gj0}kd>w(jQ`S(e%*xG8XtSr?4XMm5o3S-wjIc%G zwFAec(VDZa8+BXxj|KKE9>j31y1!!sGp8M3#LxGwmi0y90Pb ztTPv7J#W<3xO#cZ_02ufJ9uSIF(N5T zLZXIqEvd*yy=@qgUC0uq43`)$*!Xg$0atI<7~c}dL`3YlstuQ%5ataFU4(b(xVyTz zm?u|~Ow#J`S@r=vkN=KJ7?naTw zx9jfmtTgD3cX7>0qNR>;K`Dux5|3*IS9f>zyV-GMSzADXNT`@^G!Yl3T&UIP=A!Mg zpwo}Qp2300!J%^zum~O{rJ-tR!>p(=c6LY18!CAmU0qU&!}O8>KGF{)b_ExCQOt{SVYS%92fp@5DBjOo`=S(uO3*v>_66 z_zxfM`1Z})Sd1&wWdUtqTm1jNLH7tJkO7(+`--BmfHO%k7D^L_(>Un6LwOX`t! z4-ZG?S$J`~XPP$9OcEt0XWoYcaJReSm5o3%H*RkV|L%YK7ku*ihGkhepDJ5Db6lSI z)vv$gKmDh_2E7TEwItjo&ZoxOH++lTh`Vu+iKVTiR5&h;w;$fJEGswHdv;}p?({ED z4OUH-hV+LeYS||fNv;rxMcv4z*X|)d%L6VdN((~Ln)>4`o0L-y; z7_uBUQL%{5j671XMzw}&5xwN;b$b@d21+;bK8}4QksZkwZom(|Ro0JPOhA8W`h+IFv8G7xzJW6X>lmJZjWLBwJao@ldYxv1=nR?y3+Z7Qm!ixF&3cI12ah9I8S$W3YvVl&46M;Y@|SY7 zyRKxM`;+tk{C~e>%8F>Aqu7N+=ba>ZER{QwA(hN|-FP~$V~H4@nWV(&yaoRx$8(bh zAjvFfX(3q*TxsjEmR58uZNSo~l4C4Ek{DUJN8*TkqHaqRM+sI7W=TnTEVM5&(T->+ zm#k-+Bq~C2q1Vo*-+xIe5t;Vk@yuWS*T3b}s~5~=0;&A;XP;rc@!|bl99q*YGy_en zwGZxgu#;nn|4~la#_T&}jq!S)KZoZF{!*zy9jc;GT#d2h;B!j~*i!30*xwe6@iBHY zyGY$ab8RyC>lVPRG=NnXvy*!yqHO2bgYBlo^4hq%3N=Qx&NLO~ISeQHVIfZk$~<#E zANlHa&GEm51GHql$4NNaDbHIT$fVK*Ism#j;S zVsEdZ`NY-;g;t6Jr#j@;ni!!|EJf)x@RaV+9+#okvEC6+wC=G$N-?Uye7NOYau$jv z=xNMD6%(YH4e(CJ22?v`#3gWyNd@l_E-6Crh#Alu9VP9vlEa7GiNNrs%q26bnIXgV z;C^9R#D|nrDLG_lq3Re(7=s&IQYMdoPh-Aqn#UMsu#~;itpx*^@WWe*Kfe;RQ+d2OLLS+`;FykJfJ$jLNRv;3}){()E>jhCLYR=A*vVs zxRrj+we!ncG-Pb!Z;(-`jFr=98RPXMk-v8#uw4+KDJ4pY$nkC5{vsoY^5V)EGvtd^ zJ)?MU!(bCmrO}-STwV)}cz-7gMT!bBlE^YN;4#3u1y!R#1 ztg&tI^z_K_bj5LV{_xcY@^2m~2-D=8PmQbFiLbtX;9+T8<%)Q?QBzK&G!k8`4{iG; z?18YTr?A4ihtw?&!x&+D-0WP|osuFcI?2VE8AY3<9L1g6Q0|O{uwVQIp%PJv%aF_H zNn*WhJ(l1pCG-+dJYX?_sS8-vvVo>P&Jbl;7Rn^#JPl@a3;gC6U+@=y{zKfHyN7!o z9v<1MF;5A^`0BS`b9$`Np-^yXWPyB0n8SWe!)X|oX77#NRiaE2P)PI4Qaewl1(=xf z%=zg^mL5NxCda&nSZTcJ(?C>y{D9m8KwYLBx8}BSsjSQ8XTqXdO;ZfdN6N7HsGea| zX5qmtQ-NmqIP^s`DzKV8&yt&UiZ~^vSAoY&v3PTHdfzD14vMiZp))K6=3S=sux$1& z!P|gX=1!R;D)Vi84$vo0*n^50alJ{}gk ze5u8UtZ}dr9(j_9P;)9OyfsVaI z_ehu^2I?42zwB2m%{#TZeD&$eSE^(MjMRk*0%x3PqfyegDRn-@=>U$4qLvB*std+ za^MW?V(N&)(Jn@_5yhnl-D6@oI1JH8jB_TB+!sHHS&&%9c z?&hId@i_QnVN)@6x&#+O&b0(KqY0`YpMN!e1w-=P{b`T(g<17}x|9)od} z@g`a%O4!iYG7gGBJZ09kl2Q$RuIQkt=}6+})X`Qa9We8vGy?SP8rsxLQfoJ(!W9Hm6wB8phdV7AqqjFTUxHv{dno}kd#++%oq?klYYmEC_ z!$$4{B4b_Ix{y;KPGf`-hkNAmDJ3b{5)duar;}NWetggNr;7!p? z?a;eihM-J3qyi2ApP$UUb~r%`T>tKy9X!=v`RX zM$yFKFwyCpt5HWvi4BuQR0a}p_q~q|vkd5uaUq0@5B+S+*F%QNNBy!7#e=s<8yT7w zMB^Zifp>dO+92NHFNcjY~Mx)`q7<*B(EM8O@YQm1zpYP8_OGTO(%~-HASTja!FRpd>!d?&(x-Y->=@ zrktR)7(WezLu+wSie%IR5|71qymhCPgh`@$baO=`kX9w*J?7&v>JKY>AAA@s7nhz< zt%eaPWlq&Oy*p7#rgP@JokuiSMstCqV=df;Nu9OT_}*EVp6W9nMTcT4IyA4_=*%>D z88uR()zeTaMY{7vIg|z_bIi}e{_mBf5v<@EZ@9M>$txP~(dr#$m>=|M2iln zyHeLSKAd5-9{F0Wx63b~9)<@S>U#5lpy$yZ`-rZ04Jdgx8#{@pbYfvL)Em~r=9>$) zHG1o4hFvLGtKsGvhg>ds*q#F>6d)m?c_R}QMKhzWjThGwFK;K#b)kA40(~8TpRnf+ zLoi)4-2$hnL;Fj2yvNK}e4stupZU%ZEQ}D%4`rf7)sfPKNE`NW$C}~ELS`YuI@-rd z=`sL(wp+_Eh6EQvM#kWflrdcGm(Yl@NV5^NI5f~2%Ns#rhB{{2v5etab|V@guSVWHE*&*)x>Dv^qYAFo!f7P?9muj6bJSM<$~P z%~8#9$qfs+(ebfAFwrqK3Z8Jmf}5PO_uj!(M8%sm>DHV9+Oobt-v$n$ z#kXqAnnYf5ZRJ`uJHW0jZM^hi)@rJmFYb+K@R?itRTPaLr z4J@e($Ta)bniLP5sPq%ws~jJm_}v#@^Ua%kv=nY`uKD)6d%phqE*9U_p&MFoNh+;H z2KqE*X=WseVBorJVkDY1DN>NJlk%{DOHPI3<03i9G`2euKJoG8%PGY}RwJ+OVmv@X z{`UV<^=4hRBu94MHZ%7)=VacY2B0u>gF`o)T+|ZT6!rh#^+r8NYEe!02ows1szTi< z^F+9tnI5)zWc35q!UFEin|U(A-G;rt9dp5T^PCT50<)H8TrgAwPx2)Z@PKKmXabCo zbN)Hj@ZZQw7?Xj8QbrT132IR=$+)1Xyyl;k?yO*r7iud$59*DrbxOeMAcm~vl$Bob zCoVzob1)HZ+=KdPp|%ex0hi$7C0X(HPLR%c=J);ZptxKGAD|qJXR2-2o`g&oVKOeQGKzN8&C&YbX&7LcAiaULps-hgKnkK#n`o*9Xnjj%e z>V^nnGC4;(`t2&e|K^XlJ#6^ruYbVb|I_zC>*($KqEp^5{RvM#(YYg&7=!b4p%F-w ztmMrEUg;uBd4m`XM}}d;12z?0CQV<6b8%3>?#AeMpVU6Ciqym~Q_!@w?US<>B-I4c z%62T2|7bbWfW&311dYryiK0`sB{PHO^|b}XM9tjcV<1D(wACOYkV)HP)?v!oYLUCv zytp>hCWdZZgf;;lgjy0AV-of;L+U_HExuoPWG+dU00Ce7KLkQtGbK&J1I;qcSiKK- zJX{TLUtKVFm;2Lz4@nAb35YA8kcc=;_?(_gh?heWO^i-BPLKeQgPe&JQJOChkWfTK znh9Dr%&|*)@}Qt*E>%=!QYxr)I%QSL5;2ohx>Y7C9L_OAkVpqvb)S|ao0xe?ugx`N zVGlD1he=(Rtkyy!i?<<3bwCIk3`KyaZ_XODNNKA#gNex+O9gwjI?zR8mc| zMn`ecO@k)K2*VwlxHP5vG_+)a$4;|SZ{p#I84NF#L{o^!3JPVIBSoJn`(&lxyGew> z=jhNp6#xJr07*naR7)pH<%mP2!{IV~C1wj!>jEQ20|In zbw4IE`lMlwfu*5o3}8h1PO_g0CFWoO011T50?uk_{@DfQ37|)HLv+h}kqV=zd~38N z%Kt8qDpImsq02u1vVd-C$WYASSgE5i9sbx6S>vyLP)Pe#amJVh3ZfR|^{572&PDR;n!p_R;`7(^)Dq^y zZ=W*2NS`4jD)B`xU!#Zv;*qK*CS^~iFHRyor8S5{JPruOzdZX!E~hIG4i#A(UCOJN z$T)l?G{u?{c}oi|L!e6;;C`whM3HG~RWJ(Xh@9bKLg-C5J^ziAYIZUhK@@D)1&ZE# z7UqBz8dq!L@DtD;T-joh62}=9ar$y;y{ZL4w?wxMpFTe0>F(TdO~y4fEs0V|2UA2O z6da2ujSO;5f;nWO8y_lBs|FEk1avq0c4~@D*ix#4cp_Gp6p}cr>N?p=6vqeJOho7` zRHNH*4vv8qJ9q?FCW z6Smc7g{aEX5ZJJfK~1g*)R90`v=>i1KafhYi$Xh|ux zpz=WP9g|T|Xqz!NQ34|ewqCATC-EjQA*vXY7fS1t$fX#oVCOQ)Do`L7F|D9YQE)6z zu5LZ~b3plQYLdy4lV%%Jc0O#)4QbT0FWv7s0jnKFLSA&+foj=tN+`AT>T73&l`O+5 zxwMP~xd-FL3eZ$>O@jxaf~GE}!v{n+ga}-iTph`*XA~$-1Scs*?FPZEyonu>X@YtBkIS+Q?u5fc?9?+}7Znxg61{FTU zkW7ALt#erusWOp5eWO8?LG64e9j%LK6C|ee)+Lhxo(hu;foYTA`3G$c3BJrGOh5Lh ze_IWl!PkwNA*L$U$U2Bh;N=!LM3h1E2qtpWwIXU~&*IDvE30@c8PAjKF@sMcgKhO0cicK)aOwg zS9}S6YX%h+jsf!2>IzC~rc_&~lpbMB_{CQ3?yDRk%-f2eoKQ;kbjz)T<+_wClR&JZBvYB{NK|#SkwcEhceO z<#;N*J{OiADhx}FqKnx^)x;cL;39qvpU!1w%1@+UQv7Iw_(!F_=&1$(T5IUqin&ed z+j7n^`J|(DBOe-$W{Tbg)~mymhGWp!(6$b-M$NfXnQ$)TL2b0w&&oXl7j?~qzV!ZD$_T1ZVg`=k@RA8Gh+Qn+M7_I^!cq#ya$ZU6J{UY;wVR0uWZ;Bj$s)V0 zbeg(AP>dD+F7stssHL!|mJ}_E)K+2Y9<{?-i3!zFi18v1E_SJFA7s*KBJ)7TL^Cb^ z3gF3|gB0f{g5*X7aDSdeXg*wUxwJ|vsib#wPI@bx!yX?W+8hTT5~~5O0KTMT#y?0d zZfS_IBuEL*gKin|bgJGJ&11*GYL%mao`)E-?8`?u96$W&6Amxx88?fVb29v~=49&w&zjjLxM@dG=%9>n^qO<~ z`m+hJBgoPoFY@L(@RVuIY$@tcic_#3HRF%sdlCWKYtD*On>i|(dM#K<+T!9V*qT>o z!vm`KmEu9&E)!2mvKT>UCfzPDrP+o&2BRiCSgHAm7pIEAv=w~bA&APZQ&#ZK!(pX^ zldWbaSc!)R&J=8IhPL&>E!L8>_6Fn{vr;$Vfux1-k@Qm*xCY<#qfs7L?KIVNv1Xd& zeM@PP!;7&(YFn0`n)?s#Il6W9*2`DE_5cJhvEq^yvr>zEFwS89#&_*v{@ zFsbc!yR?NBHlzAL>qi}BraLSO?3wRHQ;fv!8-@wMH(rR9Xioj+_OTU%yCtr`9$Wva)VezFdJ;A&yy9A3Wsk_S2nCSNxc z+xkjWsY__ZFJ+C8)@Nr*WkoDN5o$zGWk@72gTHL6gJ~^R&#JNJ>?nAWp}}N3=hcyZ zQs301ke)cT!h&R#-1s%T4r7{EUM^YD8u#SNdf;N1*}!>LR|#T2Rm+4^N#ARJi1j=3 zD4R83Oa*0xFk^thGIAt2%c{V&8(YiFf|2uCRpY@OHL^g39jqTTP8XT1Q8~jjg>%{z zE>BIQmNx8EVh&uIRe&oy5|YO_7Rfq=?&_|7a)65p zS?S531fpfjgd&Qq8!oNEsyGr92ZV5@8aOfm$7{bbJvkq*)RLxB>Jx`(;(ERC+zF07 zta#)Zj$=5UpC$x^Uu|7al3||G(8Q4kv>WW&Tp2QL6xg_kEeX#G&jJs3Psu=U2SrDl$1hPfiZ3RuMLJc`9!V~DEMN6hnu4j}?o z!QYh%xBx2Lq6n2E#|)%4UK7dxe0sX!A`L+D?;2c znM|F$aLT?_8eon_mUA(U-?u825wup#pTklLJzu#-WFs*3q$5v+z z5m_-}k}}*^5hE!E>mAdFWOBb?B9(N*pERbUX&04-t#5*0*gyuzZinJ}+0g4^gfz(% zNd`U$444^W4-c))q#P?_mL-)znNkporSaWb#UBN=nNhQ!ET6te<1u1+y5Uq=C42DJ zMex8BT`vb#eEnKk(Ga0b{NVd*XC=5|pt=c~1o~Q9AuD}?&K`jyqqMnYrto3}oQttc zWEvu@9+P^~Ds@DqU^^D)O$t>U(_v_c>3Dd!;Lm>bGx*%m?T&x>||1CRimERj5Mr}tjdg#p9N%BZR9^xh0g^N4IPwMR7bLiS3%W^+DVL{ zGcizYS-wsSL74<9jmK|lG-&hZjB@8 zzFV>M%9jvI4RHMA5TyICX4A!<&KkMQp!OY=vSL`g5+1TV&{5qE?WbP*0j*2KIuDLH z2yzn0IW9rGWCsqP2v9G-7!pF+h?MxFI2F8T%sLtqz7Y}UOU~P!2WbTUWukW#CDs~x zm%4}p?n6?zIHtWJkrBdat9Gi@v&q&sx%MVa`R@WEX(ox3a9^*C zc!9M2P<>y!Y`qy9LpMU=&{_Y>% zVT6>cjYm2881xEOasg9FLe47C5hC1Uu038YWDHg>a^^}zsBqCrmsV*+Q6oz0nB)*4 zMaq3BWywZ5?Zi@Btqi0O3gwFft)gYNFd#(;nP1OFag}QZD0Og}iY&f!LWPMHJe)$< zU2qYYQuaUoPHQn7aGBuLeFQ$+EXgsd2)mL;$^Sh;+%w^I}11{DqcKn5iffb4;>by2&vE`vitBkB`*C zzvP#hVz!=@S^{$6EbO|pZv0BWiTKHONstuqa@^suMq-i?D1(VKQ%OmrL98qJC)N4( zw&8l&s#BV!_g_iw0#Ow&&IUhMqa{6uh=iDtBVubrB!GEG_p9k-OKvmv)tkGllA}#1kvCSuSDUp67!;|0MVj>X}l~iQd`Mt zsyzt0yRw2Z&vihJAS6gqFe~y=PNr61)?%gR*Z_tHnm|-7qf(MZ03#7gjMaR`oIIlp zP}7ubbYxAD2qk56wWD^%ic4!Pm$U|=;?8r6h(yJ2{`@of?CpkbBY*YFpNr4Pckd4w zldpQEQNgMBN*;DpOcq~`aaFNog_#mkjC{57u5~3-Vg-_+toLUDmYCcCMfIvlLodP9?N|6kbvszo1g@_sneKTCF zLIdE;NtDbikCkM-0Il)gIeb#&s3@3!giu|@r>=F1ud z^^BHklEM9i)=P91lL)~$richGZ9}HB@(kvycX(+y>P1z)d~*);4>-^ zLe4IV<{hd4E=mJORD4yp4wt}4qEK5iDo28FcqTt5_Oaky3x35ShAR15T361a$fC4y z)Z-q2zAO);=D(=qaxtqB)r6kO=qJRr07Zh{mXr+`$ADhA_mVPkQNc3FKF&@;VpFtA z7e@r5Q5gei42c~RM;?Gt7N|pGZ>(%`2Du9i{7dmbdbpTzdDew|x0#ALAvJ{0rjU%xU?K;- zR_RGW7_bIrUeF=BY$6x*t+$5Af%HgG<-MtfW54ItFQUybrl*L&5n^i4)J#t)_8!}` zaPd)^+%&|X(3TT6616l#dePcukcaEC3~!0ZOc4eoYCvWjc)fLe^|Q~Q68QO-H+=s2 zYyAEX@8pl)KOu#i9@UgNDgA+}bfp!gwl=3<-_w^%K*B4vS=O1$nHY0tQZfhNJOo@E zfsk^eEPE=a)LLJoUOdPwmK%AsN2C}R<&-iO*jpR5rn92v8HrU(uAqfZtCN@!gnBRJ zAzR0n`F!%?<$|U-%27X=*7rixDrHUeOmWWdMX|%l=Bk;-JQLmZ(!tGFc+|U};D8u9Q zYHBJh1FcmxmkcrxQD{)~<<2g1bwrtoBPt+ayC4x5K2FCg7C@{jT1o1XIid8LWfMSV zshH|zKHw)qjWwSkN2yF!#7}X=)fBxXrpH{cu7Z|HK+(AO3NI%@AmV^WCvUvC(^C5Q zESzCFFe-dgOX>!IVE`HErR+&j9Als<(8_t6wMER5K$^Dd0=b;-g`8*$05(UZxNxU( z%z>6s2a{;A5WrHu?lzN3%*m=b@s0f%Qbfb3i zs2o84*!*Q#F%}|7-;#P5mxM4gF)G1<-2Kw8HpSr7k_$GOoSkN33?{5_k@g~g%bM|1 zMp){BN_Q~fywvAX!py2N`SPxCQ>}$BYWCa<;yxqL>x=p#dzE#W3((qF+alK)%*d74 z$2hIj1tx_Te?*(U0P)Z5j8+$xrQ?p%R3Nor%5do7>c%=WXX$y1IZ<1CO@iV*N-J6y zKZ1u>Ys}bjpX>@7Kj&Ev)1`BbD3m}DSih{>lqn|3V>MpOrT<=|AaE2Gk&tE(3;38X z`t%GG)&^Kx_h5vXD(Ch`p!mkD;!JR|eIvXwskk?Q0GHNCLCl2`sEKo_lejMuSWBjW z0~mz?5D5Z{Cf$1JjC0^jUrqvBvqtN4j9S#Q?-n!u+!ZgSVuJ?RQb-kyI z^F%R}&b}6qxt5avG#KY3jU>h;4b?mf04JDJP7J{^oQNowlvth#1`+6zoK|Gqf?RR2 zOl)f$&fMO@M3^N61IICNxjb;(Ig_$P}+t(PxaPMmZ%DMekva(VpZlm}%EnudF^3rg-#S!G!|w{kr4Kwq$$YPF)a z{-%PaTq0%xW%&2>42z|fl!y1M>bdbjIAfp|Txj^LEqcDNvJ#^dJfc#(g(Ef2#UNRd%Vh~x zK5G$^E$(pc3k0WJ3&GLAcHPb;rPklioV;8rS((~h{v4JS!VA80UWcz%I*rFsl^R1C zmf0uDwHT$dUkFoF^*+1;ie)WS@v;mQFSAYn&Jfw@lZ*eD90M|hna?kZ%d%8Tb(ngo zj3`gUc@XD%uI1&>W!oG-DM2cFO7wL0v1{U?yOc%N37%IZ%zhH?AY_b3<$s#>GP+G( zrm7I0IDZ zKn~54HIXv_S+5`oRxG>oyxq+fkAmF91t*WiGA{j6?LJR=(hQ()mlvf4md=+m3c7U^ z9yDK6-r0-0s#-tMI3+5HK<{>Hf`NERRTh+N%s4BnH=5P&K+1qM&T>qwbh(SAy9_0O z1b^xC?)W!<_6Cvz(1GjY1^@K>AMro``A3FmvUV?*6AxiE{(_<&Dm}qKc}mAbSOK-F z>X+W~Ul>6Q6s_l?<5kR0J=iO~bsfMQoxa$@Pi0801B{8W1)vCSO>(* z3=ufN8q3C7Rh24}qE%+O?evW8S<06+%Fw#3d+SVH1}kb>#~Fu&U}Oa z(qGwd)OC9}MvOJ=udrRPgDJ__8jZA#YKpb70~~8yN{zH&cd7X$E4J1Z+t&ERxpOwp zc8SU-I7|bKhnK1zS<$5_QU$Yo0GV;}XI3J(Ev>vKdDd2ydL$YITP;+lk6Mz`U=r(+ zT$04nA201xP4uZxF7n7KeHB!v^hPC2hS%3ABx~R&X*6VlkS4jdP>Z!*j>1k@563Af zD#qj;7&hy$QfsAvg+vZWjl~LR!xW$LSu75Z8jC0^G%lC4ihWEu#)Qv-%SDAj6Se53 zs;d^Wf*B$9aBaQR)~pIkmb7MiSum;yW=m=_EVUvfKlFclRZyypulJ`YjdNea}^9^Ka*k9bE zs>Neo;hGtIFDlJraiK}%Zf9yZR1nI&48-Xqn~Ipl{S}vy<(;uzLuuq9`$SH zKtzmTodq$FVzQGBs3KeIXkyaM#MCfnh$l5R?v7TPw-^V^Ld-xuBdJqRHR|FdA*Pb5 zl7OgnneMz+$X0-;$e5l_`vF17<q~l6U*rrXr4%Yl z16t^?tQ*Vh3{>=7&KcSaqg-HI^wcdT!n6)JXSH=BC|(Q=)8|ssKvv~lu|0&!Xtjf7 z9*{M2mX|6njZUTD%V);rMw6}nY@QM~Do9o(Nf3F$(5;uNii9Ns$;)P20IDsF@8;Zu@%bpENk}4c4j4P6k)A^CR+3CI;ac4&H}d74K;cw zN!S@_bHbEjFj!RWtU%6sq3C$>6PszAOk%4_yHoy%%grKq&Np*1eV#<7=~f?Y&{z;!AFvJOB>vsfa9B;^~JlhHYd^M>f!JJxH#vbfm*$5rP;cNI7M?Z=ET0cM69QV zyBnhvLOeqzM8s%xpsKL4)ZoiqEf5hk5z|(2mR8E1QX13&NPe>dB?nx>*)#tUS?Vb| zdwaX!+Pk1w+gjXpZ5u~9K4>>7uom~dUTUsnYDMeyKJx31!Z*AqR+^ZQd99)t!(|^s z+SVW@7=Vbis^;}9(4-1gd-ZVbOH*pnisiLr=vLOnYN5Oy(n1xI;VfvYVj~+m1!X?T z8l_OMBhm_h!`)a40e3vWB2&y-*{QL}&r%DYlI-#cB5AKlR75)snZ5I@F#rG{07*na zR4UCHGDE1TF{p_2zKN=d3eYX3nK3bOuEUci<-VCTQ(@Svl`hpYWlDG*Y$*a5yqYEx zSpo?}rjYD~bwLSuz{_+eKh6x0Cd@~Jh$hJnqGGC|Vj^$}IL`*8sL6?T?J6a^%f$l` zNJvQHh$*!YrOwyu_^4zYpbP{CxonDVDg;<5NdT6zb{X_dQ8v@JOEIjgz!8HQ4=Eb6 zOiWc;g#*l}BDa2*zNBeu+=B+uCWBeI=Q68l13bmEf>lj0p$k2Q>7^$JmzAc5P?PB# z$w;vxoWoUijKTpBopgkc5ldRmjrw}a_OJSa$z7n8D4C_IVA~89Nx)=;A} zCTF9TrXG`UB1{A;2^3h(e<58`*0L_eE1{LY#E^^ylh+ge!Zuq4Xm#`D znc#sFtIoV5=X_2?)@(AQrX@m)IV*u+B)tg3vxL!0Dui=5<3^P(4Ngx~oN#WA`RX8x z2r*$5(I^3u>Ih^;N=a7q3Z7Ylt2CWk;E!M+}X}F>B4DjTSEu3g)><} zLh9hCW-mjOxK9Ze$z+K@kBW)}GCYK>UwIXZNx;MlIo(Lm)qZnC)1x_6PCgRFFtC%Dale#oaL`-Nn%YywZ2OaD1W;MrK zrTa;Lp*EK+VpcRUC!+WqBOPK8m2%6i@YITpXA~9}#3RT_;G)paWl{=nl}JL261)go zqeMv8(JhN+N6Yl$WzBMPNPS+lG^u6iETzR-xXHPcaM6 zKP-9}H{@yyvjVs~yS>6Ou0gwV(@SSjgoqK~q7{&60(dH1X*pcl*Jg^AA{2E?4a7Ou zm4I~P=0Ah!3DAZJmnF7VGijA!2LwV*hI6KDdJzF-WKf_r#hg>N%N1h;4s`-!tchUI z30F-TYR=k(4_PAMwN<9HFisSp)U*syF2a&J(Q;n$K|s0~91Y>Z?7fvp%-N1C^r0fi zBj96Cqf8kuJdaA_CRuE0L=u5fBPbLoM+@jQmu9%+Q!)5?gmV-W$x+Z!jYMfkX?M|@ zN4_K&pNo~Xv;_0!#vFiTCBam)TP~>xXWZ7{h|6oVP)x20wk(IH29cvmhDi~~&w1#q zeZ4kA7jDHb%0=9r!Hn>ulDo;srgFg==A203vWUU4rCe}UN2>rSx$3D^6%}+5OyU2} z%{}=lFWb~L%4#P}{@O24bc_)Y>$U8wT)^pQ(veeY*=d*+q&i2Sw}z|n&l7%M{1s8= z|3!s-(p6VLE-=e36&+hq3jIZ`bFv-E3l!Y%Y^@}XprL}-tYXs(_I+{>P|Ni>6Cd6^ z)5?!a?L!8DqoV8;uO2!avx>l^{8BkONvAt-dr-W3dxN{l+VR2UI)e&MZ7L!x%gB z4NF$)VK7{gzR`5z6OxMKn3V(0CapDXveH>mmStqFezO*HE8?hdcoDRBsOFQ@IV})Q3U9xy*$E4}0Fyv$zxE4WKVHy{xJVJ;vMFBQIzj|v z0+3G0&luR+%lvmji>1Ju^VkP`>_7~p_J1++<%YPI=9txx*##0SJbule`4XE7&g3wu zK+>R!U?~{@+Fk8mU_&dO+_sZ~MK43~MNXwkRcZCvvj|kQi{WzXxZOJT{lJG0Pnbu% z@Pw6GO=1cROP{`G+^GWHj4?Ff*!l*B9~{L^evv@UAdr8eXoAJOh?$7cQ;`Fud4<|m zGHO+Mc{5<#MJi}OPwvDZAh%r{#UjetR_}6l#iAXJE1I6o5`AH^TL3?Vb z)J^fc&r&B%CMLIV>F(zgTvMFQfWn;z@!x`%PD5{t{=5TDi zvoE!>-dE>4l02D~OE0b!1lkH7#8E--%g*kAcsV2q*owJw4i&ds$LpKn=Rbc1+kpFh zBBG<~1^4@baZF4oo_B|K;LFb+@p!wyf{`@+wY$6<2%K%JNhR0`P*0M zoduC-$A^yxqB(x~uigNW_@}@94sG`Kb$-O$QyNch*{P$w?8j>pGG-1mWt_2MuG zEDtKr9G-|PE+#B7lQgACkZdZsTo}ZsFMnUxJ-D|qRwBvDW`1MzB z@#SX^P)i*9fqje`Z#o*$n9R6JDd2YG=@jCyiZ3RrdPKd*r}!GBsf{c*4{DAZFWALA zYBAL6Ope;$S2Bcv1SmAN!_{^MSb?;Pd70FZ6xf`Hn`+iFk+Wr%{{6HYhL_$CD{7u? z-pYmZpt)ow=OHxkF|~PSVAD?hbpUT4H+=QgYh14#8M6RH43$iXbWH$F4LFO;1t`W$+z*H8!IwS)hYPG3EPM`^{Q@SF-@hneDGtJ!%~MXSADd1NV66(ovPo5V`C)=t`36W~`rd%(}WdW|1` z_=x+brxQUbwTxtI8*8zLa1^GK(xOo#j;#UB6vwe6l^3gK34zOP7t3~Umr`DE!>gsC z&SYHJ`e{wpGif-cy<#s8MzvAg>2L|WIpFZAk zd%Qwa(BNnaTrLf_+l`-d5Zb=)i3wnz0Z%(sH zg%jEmuO2RFmgpwfE`sgKcl>Yv$Jg?Yzx^ID498@6s*1_6k9_s^hX4AX|2_WoZ@z#S zcT)R4aEu*^iN+Db{E6qge@!~2g< zNJ+fviid5hq>$p?T0*p8`VIH{#K)(BOmY~Goie|0Vf@j}(0VVK;EJj@h$XgSP*^5z zo8V_}8h-WF155&6|JEprQiWQ=8e8`1zHHm20$MY}otKNyZRO52Y0k3YroI5y=?Ld%25NDqC$^2~##fJ)|NDRa_xSv? z2OM+Au^;K9;(SKnm;@vBCfP0Vc-!duBtI$LCw%UB`t*$V9}hg=Q{I2tQ&o}ZqSj!o zrH!qKQkh>6?QQY^${&#luK^SiJAgb(jHKc8dDpWeO4AO4{Ebl>sm(-cI* z?vcj=2chBq{ET0G_Urulo6iM^{PDv_%rP+Lj%_30>gm(K^YefRowgFd$M*w>#C^}S zhY9J5<_#a-JS)Q}mhGtDXCLXpMe(}{8_}S0i=JnR)@!^Wr zT4qi$32coV?Bx7VUcY{oAD>cgw^!)fhWqgZk(qDbKH}OSTi1O3W)r&r&-)$kKYhUO zzkQE=w4@J%Qoc_gK1%!5m-zXYU*M~+zJhf}>zW=e`*Fvd6OEcotqOpp^~&UuRoNEN ztu!qq+gbzplCVM9LM(?=38w?)ZdoY|PBR3zx9xP+5CTDI6)L6qL|rQL&8&2{R#lS} zZ2EA{!Aux}n#t_7l1`QMi|UT8^AStWQu8ON!Nr#w1 zy!9)rHSBXBQt52si9**xk`v(3)w^Hgo{TF(I;XHk^(o zL`||~yWop2-r&{iD_m%3Xq9Y&1dii4!RTGIxV00P3xOw@iG2os`}Mc@`s;W2@!i01 zR&P&F&+sD=u|W)Y{rXDd%AA-};n->?;%HFZn&9>06%&qbA*!W6H^E z&Pt4~v%Fw2lNE5R)Q7DUCjm=GulzC>MW~3HA|2T};Xu=XexV()L4*Pjh-6~3o|A}jr{QG8Nc|eU&(*@&wrJlzq!eA z>?x+$Ol98>9D@M}_c3xalk@|ZZjg)|M8?XP2Lvi+}y+vOhcCfBcht^Ub$--Y52b;O(0mL=}JY|9pqv{_Y9Q zE;(b${T|rwjvs%VK!29&n+qP_G>8P|L5ZE3LS2?rQ=kdsh>BU4B3zg$bM!73l~=cp z>!wf>Y3+vI4LJu|Gnlc}`s}TUH97<@w}$J(BSb>3TSMOjx2?(bxmuGlIKgG({UkAxi59WZ$iZh8Icb3SI z(!MU%Ete*Y!{(e;v{elItRPEW=@;UX*?NZnxKF44z$$x8)@)fS@G#HTIZLmsY3OZ( z#WI+v&>nB_j1!X_wA~bYptQOAlL(l~95N$P^cX>{svsj=T1qx+uryeT+%C85mkqr& zNk!gd!|is%c5Mvblq)nQE}PnS;pb@?Q%-mLiV_XA@j6oxLF z?7QRVUwxVX_Ah@U57#Z36(m^vT4Bq#r4fGjG?1>(|u?AC6$W3X|~CS#bmwkHarE%spmP`?I5>Y9U5V(B&aK|sd z`Z?addL_5(hRb#l+YH+#*!Mf`_Z^}gZ=ur6;QN8GKSR}I3mSh?J0yp=3tE51?G~7m z@9E{T!G*H4);D&pmBrV4ug=%-aO>E*V81^v7op6lI3}fYyAK39{5kP_9Jn7Ton(m z8lJ};(5TKgDg`I1!>NwhNb{2>mq!evostRy_lH(49FdK-{sTuj^F+6NBrU2k1~cL1~BH7IRbNtWGKc=+3$B; znjz)DOvn+MGqk#;2@?@l;G&&&+(rapa}kdxe0aB)bv-5Fyx6%kl@}lj*Opn!!E-U# z0n0M}h{6lHj#Nm5ND7+NGBY5T&gEu{;G)qsi3}WbqIbb&f&s6Jgo>0JC&F4sW)N0{ zz=Vq$M_80I8GB`=OpGHj0hLHaGj>!43yE#V;3ChqhUe#j8Iuyxpd4&Y9vr^7uF^Q} zi-~5Hb3% zID*B->hM&7IY%uU748#wc3id#`eyj_@eVw0Cz(#NLv6#D2edVeG0-SO#yplffKV>% z)W$axICfmG8>A_wJKnzj3?YVN03YuH_dB-h6>r`=;=_k$%vl%#Mvma3ipQ(r?d<{X zPtXWze-DmrD3}mN#z{Mqab`?3y~0CqEtN@3Ai80*M)~8QN`e#i#7M)_q41>ACXr;8 zc*ABl;;d$3?tyLVg=AG&tCSJ|EjT6|V_?Ln2sl>SM8IwU9PWrDos)7Z9NsRtb}!M;11iCjA8b(c$r1SCdOWO*RuKx4Z^N0kW1bZG06A(%6>DV_D* z1kDM%*2bAIwvKJ<5+1np1V#OVOK&p9L}&Vk^hP~xdHgAa_k;?i+O50XDgLE~H!3Oo~A7bSx-DX3*dQLq*vT2R1$N!-qTGeZ1p#yTR~LZm$e)-agPqZCV}nsBJPA zOFsNWPNGs8tS`H8;&{HJNyi+C85~U<;;>E8?SiHksC0b)&F}G-fALrH;oZdF|Ks1` zkKg|Z$KZy4dg8|q?`!kja2$>w{`e>StKa+rZ{BXmJm5L;^*7(*>u`#&k@tEq-mTtSKT7?0&`T-Y_DuiD26{bQ9d4cEVlC(wr;RyJS>q zvP>&QDdQ;1l(u%S3r1S$b7SSLDZ;6DZFOLC-vL~jL0u4ILLk_hf{tEVs;D<6r^B-% zz82C_6)|~PKoy~h5P`^c!iuC^l-2}e9&k9MmDbwHpRgs{6QH+^tc6VQl%j2XA3Mwp ztqGzWt-}}nuq2$$F;j%V@QD3+!lyvcaqNTnczq?yQd;KIkSf@BTA5=eokhPyzZ?6{9| z2a-IFkb$TBom+8wP)c7Jm_C>|kf=21tUSSS#t#h-j1`C(fz}*v9v|@CZzuL6@Nswi zAOG!t;5a(|(9H1kyyLh3{df2;|Jz^V`gp_N{`bGfci+9ofBH}V5x@Mi&*AZm z5rRLyoA|@G-*DL&9frU>1~LNMW`NAP#gmT1WZ=%SQAYyfV0HBAJ`qnl{6=KsR+kYvUNN}VjciURA8ywqZg9{+7<7Ol#wJp%g=l$5OXY%T+hsTQVX7FOB<8o<0 zZxv!Hta28A!4q4*AT=0MQ?=C3=gz+ z;fvq3pf4R;+pv!VTY4Lqf^>8_6iCjHGiQ2wx@u>JyPKIF zmSy$`1Th4sFIBrTBizl_`ab-p|MVMt|HFy-Ow8v`_=ms$z~BA--{AX?#BYBE{L_E; zTl~X6{02XN{S%;ufBXH3-~RT7KmT-LJ^BipY+=pCFJc-WhHEdF9_?%(0=1(v7`lOE-Yuyy1(++U_7zKCf3yzu-sfK?%mLS{iVg%=8jh^o}asJV0qEox5;`Q=9KEb znrdcn+$bn07Evk_dlNwQYPBaQfX$8_iV~uPE=|l_IAkLQte%&dw;fJPxvAl4G3Ro1|Y5XB%hF0Hr8}x+Wt_gE{0E-AR@6*$5ULN+>9;_Sn5n)D=Pt2Mv;(4|erd zt*yPiqJ$)7@C)z8rOt6U+fPX~Q~|iU)1JWx>W6m@!cJPC;s&3 zf5+eb&2RDR-za|jHv`YP-a+?Fjz@U9YsFHdEvq@L5p14G6ZldT-yep5{F^(D54Or| zFPyHp|N09w0)P2~;VJpcbzK-ee5s2JEbQ#ujIX<*kDk1$t742_G)jK5Hmz+M5jY!m z5$`H?brK!R=s1TFKGBt^y5C%C2hMT4TJ$xBlT2nPsf4=X zFvTzv9gaklxl3xjWwbFv-~lM@5Fh9;FsMYWO@E82~=P5sa{f2SV z%G{!^(2BaBjxQgOa};KxOiHv}oU1XeKYzP0{`eKo>%w`LD{24$AOJ~3K~%RZ@ti>b z4-&Nr>W&H`^!vaQd*L>mQq;!97NUjfM73r%%R^tC2Zcz$6jEiB{sNLSaT3o;Q=AS6 zv?{ikiijLARjgvuH$?=8;<}b(0c)iUzbtuBUq9Cz$JQMF*B=R2l=7FN>Lm7Dp@ki>H@ z&b(eTSu^a-`DVl~!qjU{utCi$=8L_1*ua_-$H_6pOAI>ag_c%Pd8ERGX9NV<4}gx^ zNrToqL!A-Gm=GH{4nx$%MTYtticdZVzu2aHNUY$gkM@y;s-smx3ws9DLB*GomLQcI zZ?hq5&-(hfkhx&GaXStBb3^yWD4?ux8{J3*jn>!mtEg4glL-|ci7y`x_aGurrPd0m z$cDtyFoA%GdHJD&6(tn{%~CO;s7EB$u3vp;@<06j7mT~rpMLr(^AnJWy59`n-wlTq zik!!WX;B`D47#I_0~H%^`Uq1}T(yYl6>?B?VCSlel$(1wN?eO`_-;3fIN^I#|CMO- z7pmkKY+zv*Oug(-WR{fHTWMbvbqtYA!CnhP6`EBCUl)?axoYDbrKox;fk?$F6%jqy z>J(&cJ`g%JLJ?5Y_yLV~t{IZBVO3E=(xIVBi63#n+*@W%eD~`w5QRj)&3^89=>%!*b+b(Ih{a9v&4taE73JF|c? zm6hw=-gL8Ga5tbo6Rxaz=_bPk%9yFOjmOmFx;B3P`bVe;jxQ!siIWe0`Qf_*_q!q` zKzLKV*$q1brh?CB;PLyPnLklS1&dH6+Cl`8>Ozphnjh?MUbtFe4Cd}hvwIn54n)XX zmsFe4)haIF4mFr}`xi`xnGQKl1y8rY?KUtRh|lbu1S7S16~5f>IF1wM0}+YmoT$B_ zN-U}S;3j2?LIL=dcM#b849;4P;VrFGSam~fIWEHTP zv86z~TDG6or7ltf5>}+mx&To*)jX3Lcn+bq7i%d&qSb&f96)##L}wfiv?e(y(IU<^;!6r|ND1X z&tI3g;6MN8{~`vdfB2_=l#Q(a^3T676PM!<{NsP~J%0Y_=lYL-`;+|cUw_2&d2pVO ztna_S%gX>>T1W+4Og?i~RLUgUR8WDG0dvP6|MZi5fBOOd^taz*&WHT@nw3i=){@&% zI4kgR2>#fVJn|kpKBy&9R`eE*{$O*S7X_&o<6#$40*AU(1@a1!cDzNtNbD4`sIvQi;70J}D&2T2&xYev~bL}_3XOdMbQqvz5I#lRQ`t`)fUVw_iFap$8> zjOC2@1^1f;;U5c1NtG;dJl4jSAi|O_Vk2tdIH2Qv!{w85;KnQjfPj197*xcW9V|i( zF0$7u*dSv?YQiPpYPbjlV=PX9(+4$P5j?z&uJ|N*AZ}T*_a^Y)40~-}zg%Dtk?QCa z0>iwbds4<*22Qe8osGK4)jbB>n0RKx?pdpQ8;LO_SuY0q88xaWO(#qP_ z0f*4L7Z`Sf+YprCXM9EEg|#2Jo=^PC@4jMPg}?i^UrG7E|MI{7pE$-LfBVlrAtmKs zfA=5w{`LjmePPA?4?q4v{~kurtE$~24%VM$Kmvzm7S#ZcPQGZUxR0=*nCmxR{9?uJF2j(uayW2OV$3S9Z2cwb& zU_LJ{3JpCvT+k}a&nItvlu?pZ6P)&)=YR}nBUhPH&^~>!_=C5LZn)r37Q_gWPrwZU zR{3Y}_LDupSCD1Vq)5Wq;x+3pdLr>c^G2I+61%^XY6GS>t`k&&NX!quthxC!p(b;k*sm2t*`~+d%CtFThGgVjL!GYa=lWl_@?3uC*9F;m}>Q zf3T>J9(lB!YnBwmnl;=Y=L$f_3B15bm5j`& zA(c8F_)BM1u&72E^DR#R5Eq3ehQp+(RJ+GF2GqeMLvRE95^6>*RBinJ#~<@R_habPeN8sQ8>%v|WYhU>3K5@9<$G=?o`SWM|@y`!@`R)U1iZ35048S1l5Fhsg zt2TxTLN^{4=jK_$4;Pg2w7uYVGzcnC%68$}fx%NH)&;Dq;LvyFx2!p}@^aX5USHm0 zB00#kz)LFHEzpXt69Z+6t2TykwhvhlaqKJ{Ixt(&ZaqVG8_n9-{NEm5z0ACon^$m9 z=cNM}{h*+WAX<9LQ{-NSh{0lzC3f+eDSpGgcshJ7&R%FrsRDK&+Bjmyag@HT*?oF^ zeIAtUMPxvN5i)l!ny$IIFjPav!qK~oK=EhUrHy(K0ZVW_H`X=roEu*sPdu*c#azU- z7F-R7D6WgkG8&ExGl7^7_&A`tDM;NxQpUiMoQpT{jiW9Hq0j4;NweM?gs2})`KYzow=O@%0fBUN+knJ^NTx>vGkV2Z;?KV)B z_^*HYhPk6jZh|yJCTE1!Sj;QQ3N9%Oz7ZiJm>YOp*_IM*({#SknN{?yMFwhfub>@W zj7^eSRd(3FBZtBfN`ecS(|F>KK7mCmj$XDAiUgXC+bN3#A5bq{du*P@LxiB5YMafA zgYnV|Rlo;%9V%xB_ZJL=%4G6qCq_68Z4WGm3>?i0W-00g1%fn@4IEuq0S12|Vo+81 z^8E<`8+-Id4qj_FMWGq=RK^O#@7E zWPw)UitH4S;QF@k>fEjgWI7a^)HSKzha@xy?BH_sOyR32*5zz@$;G ziM4{C;e2!!SX%cL$O?(DdQl{!8D{mS{3&MPuRm+T$A@8 zz+A9n!A!fCIgnv^KA&QTR&Fv}Om5g~ONLf#!CV`k&kKGZa$O0&=1oMLG5KLwnez49 z17^S}S{aF5Q!=BR${fL50UHNUg)1h``wgiDO~##8=X^yB*9?5zzd&JFpAVepU@R*F z$8p2D0+0idiWv*{^8@>8KCIH^1sAO3Tjn?qNCImoY_vLC46!Gw7;BsJ;z?8txeF@- zu{PAHdSA&|AH{=?HH#tsP69BBhnAX3&n_8vOX;_2zTxP6V5^cE2cga!9Qf1108~z@ zTU1%R*oB=6sQ`y%1s~2+N@EoX(9X98iAYI-!l5rqGG5clXp4d)bK(bA{Pd@<_``qP z@aLZ|%mNI371f0MM(#wcWOK5=xL=>22r109@x>LnHxwJYIE7DbaVF3?)_6m+i8xit zDuXAxox~vi{B_}9{`D_V4Myv(jXeY3J~#gO(-Y6F*x7<5gC(a6cVc!RqIEV6Mga%^28oHVq4en2R!dTQoDUbl_N3NbUJz2(%5qEd#+0 zLTX|c3e+Jj1ausXBJKVIfT9*_!MEeYbrsITao)!J6izc4`pQJoe|BVtS|)qz!NoYt zwNBll%Odn+4J3dI0W-zk#EEJty!2fnFjL5ITzg{$tEi$h3ur@=GK8Z7OYAJFY;r+T zar@Q4|M7qQJO1>S2mbY6zvAm7#PzetO(x#3O0d_3N)arnS%Fmx?pzR6C?1a|ZifJF zSRiajMCEiX+L9GMoFJ#X5N*;hH$jVW#+MKL@xNa3KmSkvT;G3xr@!!cI{;DFAWpVg{K7J`}J(0d-wZap!2Ll+Cs^m!L;6 zY6jW6v)xnX-tdm%p;irt{^lg@LVAr%fRu@%1tB)6W;f?ZTcF^FY z5mzMzA#A#BeLM_^O9Ccka3BjScPosl7n4@0in%wA!^Or?q9&@W$W}#h37AL;NJ-U; zX-mAL$VN#U8MH!N8C8r(WHqA!fQ`ZyQeM@ETv#P{!$1H2NBlp(`$^`$YE~AG0~wP9 zQ=l?cS{+_s!Vx#EugpZ3?hrr&~2(R4#TXF*i_vs z0xAPpqXZXX#NGnFig-0 z>MFH1ud=EbZZHvfl}<_&yNJOwJw&WvUQn)`8UK$Z)${cd6XHRw0siuiX~tSFsy|AV zvVb;_K{__tWJUFYL~$mqioHXQV_zUTU^eLg&=cM#ZgU#J&D!c76E+U)Yhf-f zbwv^`fz_v52pgZIp$0N(p4m|(E^04~dsbVCo?j+kV#46-qf122PzO2LQ1 z_Y66XQEs4_;vC4@m@DLVepFsl_&MO%;P8QQ4m{^mY)C~EkR|6h5Vh+NN(kq*N`$Lz z$r3ZEjFKvWQ&%hELR(XJ!RMU7@LGFI0Z`MLbHiOF`r>YF^{tB56cr+}GDS{ze)-z{ zmAP0d*;B?ju=YYslDH5HHXJ)jR&>(4BWWre5Uh++aj|MMqq4%iGDs1NA)Z`#bd*Zw zoG=lbd?*MnSlZQRfka3`;p(W0BG0~EZJ9k<;skmpqI22hXhbqj0-LRJg zM6%$+aGJ|440{Dm6P)LeY$Dxx3_yxtqF#IuvY%92ZPq&1-tsbI(5jN;6$A->UE@Fk zct&#UgT#uW@6US)l`qIN+iihvI2mJo(BhYve*`#$LmLz3+1I92VD~O!DEA4XBC$72 zlhHECUWobI-~vAJ+5iJ29BVJypt)Uzq_)SdfK(Wm?2%wS9W8Rr9<#l8-Wo4CAQwed zf)&LVgF05BrK4Ob2J^{0EH+0uqngXX<*^7)z1k^_Sb&XzQtnqw2bWmxF!)=bP{Mz% znj`j0=f$5>v<=+MIc}4LN@DlvjDbIWFUX#grk$ul#l#W(bwzE+z7Tt1uCI*KWowDM zC`1k0!j6Qh;c($?CML2??sUR+eK^Td=jbV@DC;F0DlubqX1w_%@0ZpqTiim|o#c?0 z_89ENJXgH@@*=>T7xtP^43@pXz(Gaz-&eS|^QKHwq(7m=KcIXS!Ix&$i?n!K!_Lgtz{&Vw_y z{ebyf!OfG<-f%TB6U;RsE@Du`T5^s9$s{}cG{o9;)uAM@F>VJ|CiFZYs5@B;W)N4X7xZFtj$X5#i?;R&((s|+DFR$RcJ`JZI;A|6Z`5uP zx;bJs$3XbNQWXpt5I1ZrW*6TwQ18n2#xV>>U%QTTV8>=2(hPfVMsI47F>OF*yZWkd z#YPnWZ#2h)hz?G)Lx9SSwV9Yu;}UnjIoQR>RPDEd2oUVG5!F8Qm;bF34qZ+lc!k4! zgbH>j7AbK^Q4m(n+^a}~r3iz?ZU75GFaji*7Rr2hN7V$ilbUwcPf!)un+VK;GCC#X zOo$51+aQ62VS`pLgQ@>jZJRLvD;`h;Zif>X#XBw#{L%`5-8S?T0)&v!uJD0jqq!G? z<8T6)#%R~6v|66gJUfV%WQ0?pZbWp70P5s?L|}e?;x9jc!?l>k*|iWmALR+$+SZlM)vg^l4{IC(A5uffP0vbfI1b~o`Y>mDW*iU+ zL^PyI82{UB_D~DKfC|h7xjXG-KngLJJQ{EpBaQ!j?P}KE+-qEkN=KjP;5J?ccfK4H z@ZosQ2iX?UYAxZ7c7e-NG+RBAEONfg6Ihc;k!HIqtW7zLOI8);p7_$LCTWM; zR*`daJSP`zgdeSzOF19LZL(DnIH>E6+%KszyZu@)OB4jxVoOKfya`@q-a_ndDKP}Z z1;gQk3!IiwRwR{DTAdHo=CV@gB*`x#DlrblMhjn^b#0bQUMH>%MB#Sa$eZZvUS?qj zVJe4H(wMnmu;yj7c)gd9m5aO#F<4txST$vwQ8V!xD^wediDK-!C zme@_X@3!gdKeP8~Rnfmkpf-PxFFzn(y7b_o_=-Y%0+|`-NjrqbT`P9bSrS1#UMIDVf+P%vf*ry3%e_>a;wY@f&PDAP5l^j6-T}`VwzG@NCYB zn?oRSxYx&*54jyjsfbiXC4%@8QD_O=T7Y>!z5p=H`3b+DbaS=hdS~=}Bzbxm&W(F2 zbPU9LMb&s6KaK&EU}aDsxq@g;v&L1P(3h7@o69-~1S$}MGH2p828It_*-^a-AE;8~ z+Mq6e;^lRUOpMzd*MqadO16p2Y0@3exJ?8jRxg#%ULC>0>un})YrMX)p+esoVK0N% zBIN_QP(1!B5t@8tP$`8fL@uat_MH%{qF>KC?+Wk>wKEVEZIpJDYPTNA0&pY0gQ59& zYt65*wf_l%2H=**CUeZ_g06i8HV!D4%rV*lim^Z(?kST^z~`y zuA%%Oix54ycQ6EHjT#ghd9}N?M+MpCP`J8eCUPZ~8pdhm4%soW!^-@S*b_6Nl8n*b z@+v`J#UQ#=iYjg0b6x~knUso4CBJj8;>>>!w$U#i4843&vKKan-+2PA_gWi=KzN}xKLNXC~80|(T@UeRbxST7>j zYj^8^Mt?|F5cOGRm>E(f#fwG2iV-X_ELwx*yo}M&_M&bnXP*shcjJkF2T#;KI=Z$O zR1R43=iqV9kUw@QJm2moHHDu`9bL3qx!7620$sRSfe!c>Z#Q02oD zfElO%kH-UM#?c6Q6H+@7!rC)m4JyNk_M9sKK{*}u#fo2Bae>;k#qHpAxD+b9bv);V z0zZ3c9Lb3Bg|hZW=BkL`aV|OcRa3Y@hB*sBTjYoDzu-LYq)|5KK%~TnV`or$kjm3? z&wKcQ>V}vV?)NYF_W21W+xVhfdrK-$@l18_#t>{iN>xBJxSS+Z5ZO1tS&1u(sMjcQ z^Ga+HRRj`toMK3VvV@3Ig5?Ql>c9!qfs7CgV+=M+#?dH~NQo%yNO>iiR%`$%lqB;u zO=h_EWI{!&6HaAs0j?>n(#4`Id^m1*gGx%|#yM`xt|t$hg2Hh+3W3NAkd!e5$008- zJDD`#Is~4$g7foLMOkdJ+>$-H(4OL&-R%GXAOJ~3K~$x$H6d~mWET2MCSCxK;DTUo zN;3)Cp74&UthK;OH5X9F*>fHjjG?$58;2_VWm{f>-47~a7X`OtU?cbo(P9+M1Y5b# z@P24>amAzG{X8)Dg<4zWkjh#F!(<@3%uzd=5VxV`GF&V6CFfmGk);Y*dt#;376oP~jDSK+WeR=tRg)l&I3NM#=?tg}knLB3fE0TvWW&^!zzXYvWx}ZoD%ybU%<$ zRgt(2riZ!cGKn2rbg2sEtW^$(yF)~)iXj6x6WUx#42BYs9Z3?MdY32!u@lL_6?Rho zsUk(OYn5 zRON+ZUD$HoZ^$;0=S%8t@@|W%^9>R$a?A=mXUhFNp(rU{iG>T#Eow9|zbe_>r1M1- zg>G>YQJ+kZFgpzph|xx9?Ie^LbMBc;dOW^;Vm&8cc5FP#aU9(UCWy>klxYr?%&MrY zh!RnhXi2I-+SMnOwPFcWOF9uCuSQgD8G4|G)tn*Ebyca7pj9dAQY)7XlY*nZtu08! zaeko{Knip5O9D07)k+ocG(mzFgp66vLo0!6rf?f>!nU3X%O5m9tQ{i7)Ca790lE9Z zrAz_|lO4bSy;1Qp4-c+#ccnPB++3vX>@m`42*!d`N~K^1;C3)(lp&*+KP*567k15i zWNrO|-Bnl8C0Sv=5-i2T zDNmx&Y~+m@6Rz!n3!ZGunmJP7I7_NiKo20b9~>_MZc9g#i(ZIeMFSEVm{gf~?Kag| zj@cnFW>TLGt z{XDq`=n~1d&j*bo0IfMjRps>iEMUE_5HPvy+u}my{+xsL76gd%$qu}Ca^8x z?pV(WlLP0ekik>--Y?UQW6q7e7pe@%%~Nw5;pgHqZ``;nuI6&Tco`KG@~*XUyMG{I zxaR5?k#U3u{_I@U>C3a5CwZ&{86S7y}%a;>ty=eX}>)J43*QJ6p*~*X^8;7W5 zvZx^fq%LHYRJCzBN}>vf-=vbRvE%U8qyUjyO1KrC`vDs+c)?BpS#wi}3PbI{p(cB7 z=(r2toGEGtuIn3PHc=3BIS$8MTe1mBV<;RYYXwA2UV_vF+kKhU(WzemB=mx1&v|*u z+3$z7VlRGJ#$fJOdJ9yW*Kz*g@GUuvPPbJoy_6_&bEI;zjMi8^YSJqkQO$!Oc3Y`U zoYsou*u)Nbj~X6$I=^fz@{O!&C(&$*ge&%K@VAsFNrtB1n1jjitJM)uLQU z@~Erwy@VyliHU(K=BHnOuGJ!1=xCH8Slb43;=3tehYx76u~jVr5NRfECt%1VZuoiT zySzbW1KoD*h3<&fD@DN{Z+7l>VMD^;a*(xb%+1&4ex-VOXlgi&b&A-5hzsh#jwd~T z9mk8!3crcq9NsOxq&m%+qwVA}V_r7+^90Q&0CGT$zi#$!nX2{pDw$c1>;)u&zqDa= z(n5MPcNL?G93la8FPKvZ8vXAv=kq~Jao7n_!DC*u@eHRSXE6e2)b8bW@ccKg##`=5_0Cmj^ zV^A!hS;)09uZ74-<_#L<>w>R8U9fTDe*X@~$+Xgh3(qn`jT&C^4urqMpPTCCUHNmx>T-r4~$#mfPZ9>g4TDUn*!-|EtHon~M zh}v-JbVvdB6W|Px&6^7TI(Bq)2lPtq9e{4OS(N^+D#0p&M8cGAww)W1o5lxh3<369 zh4{Tso9qEOX-nv=$Dd`5=?Nk<3EH z!p#oEUdT)wXDeaU;GHyx3TXY+sVk))R4>Db!8$}v$~|okCA&{b(ph1HmLY_N9f~Bq z>2v|b{{Lkz@jCH>*U%kF_5qa+fOBR?%XoENnAYTK{9thr-X|9l!bDiJe$in$+U5WW*glr_FH1jER6L09RQ6h!#&PQ3QoNf=BgUEae?FvX+Q5dR+c zX|q+Tfa`hT^ZCSz#T`tted^}{2>BP!=d-iSl7l3V0M*TnTQbyU>wF0Q!bdOY;07m;&-z1;rz}> zsg$saNfGi+=-?nYGi4`HwOJx1yQle8KuSi|c~`M>VE=g{mQ+AwcQ9#ZiT3B$%}Z2e zuU%>?V+=0dHjmC`tU+CCH|AOdaF|KW`3-BPj3bNBM-}%QIY4x=i^+hyl@Avkf^vej zCYk4z1sumA-{0=Ip95}$(H2lcc?S_m_}&x8F*@3{VaJK<`GolabH(%Vgp+ND=kpuf zZxDFDEd`J30Xr0@J7Qk2;hlUizz42H4ZX+$q*&Xn4a0up|9tT4z_B46aO%KyJ+XJ6 z00G<%L#&Ow7JN`4bAEh>c`fYN7{WLIaK_yD;7UaB4dx zcGMeJSnmRA!^OMa$}eyKl#C}@ZT$}ih&-2wD0Y!0AP^v#ZSJNhTnZ}D2+9U0QPolc zmTPKXP~!;5U#H;)^v~FsuLqkbBsW~ho!D8(V*IKQP-F3;M0<>=ulu}Y7L@%VGO#Pz zD(fsMnCt>uv017Ewb>pMb-Au*nW(sqlCI(I+<>@jzRjUZK5HcqoZ7zuI1-x)j!3A9 z9OI}8ksYY-zrV|u`&m*YYtO$jkFfAi$Z}^I$IT>iSFDtst3(6pz^Tj+KW3u#s;Y_e z08C4)R=Jr(WMNbJVP@nm?}Ez4ICz5F*Ht^W1WREkF{r;thS6{(Pzs!+$+;Co7Kd4x z6;*PM0cfC7WHOBU0m7fmM?cBAB8Rflqi2cs=`B8a2g;9A2*1G6biQwr|D-XTqzxh zSor*W;Pe}E6<&Yn$4~<8v77BJG|Eex6HCz3cP_@ZwVqW~~d?+L~h9CHRUI=uKc9W=7 zOSgCv;@C_%y;aOXl{S3za8{wMlAT990_N-DaEr)~hYAggQ`L?NnGed-m! z_@XL-l$Mr?!HBCe&TJ(^M6`@H)_2oOK`bXEWcX1Ln`)gD#-%`y*_WF_hfC>Z_gj*` zrni`0QL4nNSL2POYfVY#_2ArIvQXSy7Ldx_Kvzvg_^H*dJ*)DiA|)hcztT(w@nN(u zt5g>2##SU@sf{XO)TMmuAn#f zdEanKnl;8)7i-rLsfd(g98k5|dqb@RS|utnBe`Tu0IO;XWHXQ~dvVDEqe~(xFyttv zCYG3Wd#Fmx7=H_BMZZl=hrF(8guFL2Tdk@TbB1s+z(pfxl=;RFmZTsBW-6x2x+YR) zv^m99d;p$2ZA&+3nTgB}@g+`gA6TECks#ouHlQNz^dNd83|WYHnT$)`wct(~M5Lez zXf7)5gJl*`sFhS(S9SX~&iOh||n#bK4>nelzpzp6w%qZe635n7+ zp$}vMdneMklQ?fgzsBk)sAfawi#!+8);lLv zFnc`4fr!G|0gD$;gGn3H!tH+G^P!LcWbpt0ydH2jxESV2>~;0UjQRB82fo}sU>I1< zL{Ss?Y54l>XFTQwuZ<1hIBxj-_6;ch9$kg4BtLH0u_VzP;mo?-PEo5`*OvSJ=p~2Z z<9_49$yKVP=H7Lfww|Y8!{xD_z~~r9pxk-SgNnG_iKa^)yh^LY1drK#;+x=19CKvfiHnhA0*R8j-)F8t6ono~+R%c?>jy!a)N*EL75W6P$0fch-5R@itl zlUit&LUj&G`EXG>3rtMR&@U*F*Q}3A8laj4h72j;8&jmoZy*ZtdhUMUH`BAxnQumG zF=_?@O$(yJ2Nk#auPQ{gR8`!%*I%%DLGm40gzuvv=5sIpcVc*4lmFf}QNM~4nfy?{ z{4OupZX_Qj3w%g$!_Dht_u&z=|zetLw z$ZF6Kv@p7%C?%W^x7MeUw<$)<1gjE;z%T>53ej$>LJgyRx)o98#-&+I6eH3df8&ee zaOTk6rK|M(XYCyjr!02u1mLY#YU2aAoIcv=IHTUClz52;Kp8@5;V~y}_a9hUmcCiR zNES>qM;bVe1C7VSUOXWRQ!p?);7;KAj=~Ng%U=8$408->w%*nKQUZ9e1CLAbaVl(_ z(5{}B2+rGq^DxZk|HstZZAp^jMz>}F=^j}%bI$uerbbhh;Uock7lz1|)*4;3rc0GS z;Z6c(dut(DRbr6~z13W5#Za#?aSpK`LD|;E zTxKS$Z@qiVLT_y{S?i7WdtunXYRoU7=>RS8{Ve=_9^BP8oJ5B<3kw_L`@LFZpuFGj z*Du*5PV#k4taw(&hEy7lJqYZ95-P7lXQV4Z_$ zx~@0{+wyWuGvE-X2KH{-gOTfq>aVL@HC9tl@fCWA1QLt~^nv|;WR5`3S^=PzPIMK> zvsKwH*R>1T)mdvzQljc;QP|5cm=FQr_2rO>`pWA^O)5CKKM}vsV`5w-+EyDddWn5j`Tmn zl{cZX>jz?kgZWX9|4G8lMNSUV`ny6Pcg#oPBl= z=8jpVrCZPI5rsfuq^um)@kOzoY<}{GGFQh?2Kc;nU2X>Q$sU*0QDz?vv&juw3L9IclOzcnqxT4G zynqZiV+>sL)}CeelWpJ7X>4%d#1fObzg8QCwFIG$Af6RC>Bt)Gj0EO2BxFE{ z3Ei>1VWWwQ7u%E9n)WNs0i0l2l$mx8ZrLv@ zr;&A@MU>aq*9(&uvNq0>uo!UOc>h`W`ZBz3V{UO0Q>qT}*`_fCwVBFOhjyk3_ceneMLsqq67qaUJ`z&&o9 zOfZgGVa@cN9C)8cZ+H}T9L%Zg;WdY%RTcPkJ5C$~9A+0z9E@3T)=#|Ytff=XnCkeC z2@B0`vR6gkP#xy^SvZ|kEUofj3<*-t-Y5=zI9$sir2RZxBlbTh+?G-*RY7G^`|q$* zg_Nq(#esf1w`JBq+^(+&p}HzfwuKKe(B1naY#pbGwu1CBtmAZ*`UL>QhzJ(k8lau3 zl4oej3j~giA-L!G(M1KTqjch7#4f-bvzZ@Y;B^@?A2?;u78$4?rZ)N-s~U7>Y6D)1 zUulL%%o5ufr-^8#hjP+?WU(g=7e4~bKFNPRux;aTcU(5G_twLY-f=&j{?M^CwQjA= z%gP2T_o_Mcv;qGKG9*4B-_@*+Vb+F>1btwP8`;aaKi>;;3`{2?HB((DIvvudUo(tr z0JU&RKOY;y4Tz0`AN~Zg$gI-7pc*5o<+qkjz_T~@*{Zy+)tK1OO>j$)X&`bR{T)u| z`;rBYf{lZC7WZCoo7ihrC3wxNPW)}AhM*2IQUX2(eaxx~-0qyL8Z;hOIl=oiD{$-T zk!V}{A#Kz;1=k6(AHyBwvq8G+g;Xiaj3SWbHk5jFQ|z%Z0kbU_R!+CO^-0y@+61YQ zV4SSeE(eKf1FasaT1hWQ9=+nfUQ*GVb8tc@`{5Inq}hNgiLV=~E(VALAgo^F#mff9 z2gh2VH{V0NRYO(P+KVd=%rBOe9`-(Pe|^zxsLYdAg~W-&k171R2JD&w_9O(1|9-zg zHy8(=wP3FP{c|3SYv81G-t!jJW4c3ieMNUzB0&u|thI5n@IFg3U?=u|P^FPVr5?6y zClrTaWyi-l_O(`EZ~Xj1tG-zMXmVd@w#3k=I2nwsnldU&j@ za6QtRIwhctM1=Mep|hX7v0gl^&skJS0!MXb5y*4kfL=5oFBgD0FXdr7-#UildR>@i z$Q_8I9JHdLVkbnO#v(s)Gu;d_>t|m4`JarBIU=$5LZudz_nf`eE$JL6dYBE(_Kc3{ z6Pbp+by}Zx>HAsM=!6uK^uu51kiAvF^##!={ZvN7^qWa+R8?4W4td|t$>s(qqPF+$ zW>Rs-QAL+UH3^MJ-y2fhAkA2#nCq}o^B>a>wnskdPqDU09+4`r*w8XJlgu0D~wf>al}&~_1zM90*okD6jj+Sq7F}N zlr|=P?QTuI$Tw_*G$WFvkw#{1>4c1o2xb93jqVBahi04CZT$877DQ{kv7R^kLC4CX zIhiQz3c$(tdKmg0BT@7`HL7^~!0-8sxsF_Zd*kfjdnflPF4aak#!WM$&=#OOIfik# zP@Hidy)>W%&5Ab9mA>7T)_|B5~af z++y{OR?*lvM~6uyZLp69{5Gy?cu2fw~Kx?o_~Rek+3aZoQJy-NWwtY@nw!_kWIiT}Pg(uCcsEL=k>Ba8tj@$3ga zjMa{6@nbdakn>z0?m9`kywVFkNY@azl9COsl|;ErJ`r@cs-yX$b?E?~ML1aWrn`Q) z#HB8O#VU>g_4*n`Sm4SkZ~k}YXO^sRa8*`T(&!}sQ2{Nz97AOghtnzwIE<HF%4zEKCkoMG4~KJkLTz);Zvu6X)zg zcKmHLjX0KOx1UO?zQe34W(WWjCn~duo(oqIv_dMxtT}p@B=n;+e*Sy+Al-+aMQME2 zhMDu86W*$0|NQ&Y#2OOH86}7dk6wuU@P6F|FwUNrXC;t2Yz(UAY@xuB#tO{_4kAv_ zS|oa8fTp!sdgxuz0!k$sgxlOWr}{MXW_?x;gKf1onp8uLm+gxu3)5~GfnUEa4j;%} z7`$Mum!ccSoQxAv)VpJdm5IV;E)|eYAA&&rZhhSo&vWo+9gL*d$PR!5yFQpu<=)MK zDrX+xAn^J%K{|HHE@D1)Fe%sk6-1d@aftRYb`ir(`SfdEnoCzfz#W}vR|O_?=okdP z<_+SlU}fonDxY3;8iHLc(!osZ=FzFof_;c-!<9VgZ25|SP1(oCJwX%LessRt`A^gG z?2U7_#%*!1ml~_H2)nIk?vG??q0wE2;8lgd&I3}$k&5V;pQ3GNCnAZxsRI#!{Tz%P zpRkhQy#ts7Pi(|lm_8ZZHnOx@&jATWp`sE#o!|Q?YGn@Wz%{(~IfRY6hBIR8RBq(6 zAKcehNr+gyziwo(B8ll2E3&Ss#$SY%QQ%-f4-}g(tjJR3(7SQxII(d}4cb#uY5eE! z!`rPG!1Pg>hZzTBeBpU#X+&FP1$Z{Ss^^j*B|z24loio@i27$nE2JM0fQ>#q0$6!K zn=&(m4qmzr>I7!}fH0a`h~0v7BjzM5N-shKuQ>pQDi=j+VnbV@GGMRlzJ^S6+TENX1shRTU0V|lDT6J)pj(6&kt3oD!noolt zRyDei@{!~QTBE0wNR#p;vS~bL2JZVyC&a9N(6FH}sXQlvr~}7TWDLQ~&uBuG)#^eB zdUHN}Ac{C$jjb%CZ4g?_phW14c!ZEl(|{P;KUr>K1pk;UAIYl@&3ua>-VY}}=)zizk@dwpY$FM-0&QWl-r^>zK;pK3EDyF)cE2v7QG#~=fIo;f7b?#xUQ>JZwI#5#x-v?|ABK(zTb;wgFYvoj`0jQ&)>tB zO-vZ`6!$5p!0JssbKKX9qvt>wS_+yOD+;k4&%5}3AHMEeGonn+>&0_`X)g-QNS2W+ zle}-dcjABk`^GwjXC-Na`xJLug_*KhOcS1Qm#I|;r`JGkaJ`8-{^89sD{)THT)gDM zYAGfZ0SY1y^lhR(*i(YFZTxJ{2R2 z+<4uBet#;c6;M2@Ve1V|E4Bat03ZNKL_t)(ZS8zN@X`ObwoUIyWaDH%#T%nc3|^mw zqn0b0pSzL)jp5V-wA*wAk;5!Inx|&sN@AtP8|q$l_7kcK8%M*>4Ff%o&uT)S=FqZ# zw2`=*ae3N!g2X9}xaMUlH#AeYsFw_l`se6etk_@3`dE~K69-v_q?V)ERbh>zl$cTC zWJp&82g1N`)B-M__}AC3*2D+K5G&$YPXmVVGfIpAzTXQcv?O)A;CAD_f2p7{{fE13 zuBCN^GWOGfhzH}+3EEuT2zSSvx1wr(A>mlN@Vx>nWTmkJeq9s4t_#N0j2@ypt}ROA zbqUKmI?`q}P^FZGBrr`ctH256&!=CoXtqZ|@?5c}`gcfsh)GuxJ^_~$_J?g8pOs$M zk57*$_xVQV8^A#!g~}X+IS{!~wcs~ZL8qR9_Z+g)16_z2-J~r_#!uozIvNZH?L(6^c*VPIg z&1owarfVKM-Srddg+b-UeJP8TEI1suYxBL=7R0`J6mE|A`?uM^37Gegy`N?-Uba%%S;QED(XuRhFicpqsAh>*(L-5JTWpA>!bg`VdrE>*x>eDcNaO z>X%Nq4qPs#h2gZfOHMGEiM_Qx0p8ZDhqQ%|J@>0>+nQJq{Cv%bJgxCHhf z#MV}qLi4}7>$B7QLDLIRmX^CH0fmsd^^8s~nCnQj_r}hR;RC}=4+$8QAgUjxx0aB4 z!(^6b;IJRv{hYHCKB|9{s`9TqVk|%rE{9I%+HH6%ofHov28;s(6P3U(9}Q-=rk+W6 zbuti9xULI6hOXlug9*04IY#E$rN|+)z`iCpw-)IuLGSu}LzBQn<>q0Qxl};!eQ+1S zaGZLuGGr4U{#l&p=dz$MVXf`S`xg)W6 z)bxo}K$TDdaIHVgdT!g+o%-yVfQrzFvmobX!|9Mgp0EmSJh;{y_Z+zIFGK|2?<{!X z_4|vb4%YXo=OpqJ#wA|*K8M$Im|9sN$uS*STiDdhnr^5bd1WLvLU>QRa9zJ3eyw5n z6rL=S@y52Q4h~+j!)NLwZ>G$ES?882j(=GCCtwc*0^~>I(1T&VYch61t|L3OZJec z1J?YwlYcT$X4bJIaW#B;>ytvw!%Uvcy5^-a2(rx3wS1*!#_%8eOGJ=*vIyQ-_VZ#e z7IFvDiX5}dMa<5Ue$i}V*k^V!Smw2RTW+lSh)jmPYM+BhYF=&sWC;mFX0fWu-8f9Y zALc0WLlz71k&zTlcQFGit7s@0gB07WsHD5F0PA_`!~yuyK&jh}KHACXeg4a=F$aI~ zg{XI@o|5{}8^^rrRG=(r1K^OD*Fa^AkC+v?s2&I1FTCynJ+uR(A3Z`mmg<1>8hHK) zK5|YXP2cED!|V4AAn|_x#dY1t*jh-8fvAnqt+DrdFy|N6Rtdt{B1q~B&lBCYDd}(= zSnG{BFIKYRB)AQ=A8?NT;sCo0)>Y7b6p;}OgdMDh{$5$QUxvMuW!xpO&UF3Vs_hYH zOEGV5ja1YRO^^{OezId^jzN+oCPUYI0h(D6Mk}wgf^^o0ryH#c${L8XF)~#d6|s!N z2Iy8*4Yp3j=iEuZtTKW~)TC2aX)8p4Q?pZ=ms5$(%+xSIePkqy3>IxLDsWA!;V#9J z8I<@b`mmxMLt~oF#k$v^gF070(l!dBfnZ_su*2&}m%9@)16zxNI(n*%tZ2&Vp zmJKLaQDo)77)}d=v*?{yCI^RS#~L-U?*UN>@GPFgL*>z;sUsK>8_t4H=X8Po zH4ENY6+ChD;!~F!?#9dnJplwiH>t|P{p+HQ_TJT0^SlBuV&0D7ZMg|WbgpaQ*=Q>b zvEG~e1Wte-kwTlfCA2kb3;Y2&np${xz1Vyc1yq#P&mS$?dMmBty>!i1PgSF2LtJ6j zaKM|6#)-0llLwcJk$jEoM+A|L?B9FgdEO{D950+lm1i3!A6?2Mp8UKIwXhs*&aSSN z%e>v$c(m}g0&xz)2){0z0>0PAYtA;{0DDO`kS$vU1I8PK0CUei*r6?HMNvwPOnhO;^MYR(Ui;&I%NZA>cZjInT_`Ro(zz_3YrhT&JVn@<#>p zY#4yo80|FcWuHvMgbgt$sD1K^lwOItZ=gW;3p-MmM;h$9P$wC^<;dRkB6pV`G^WYe zT25xd>CB@@AyN;itb_4cJ+`y2Uku8SDnran{+yUIvVmOr`Fgn1Fbs@JFv;oG`uf1L z)R=^!32xx7qwzz5@5Vst`w4m{SgePG*O-V(otS8y3vLbXamw`A&(!jcUD;=WBN~C&c5qiQXzx~MUERz(8b=firvwP9Zm3yXr2*)3Vus02 zpAwh@KLok1bvBw(d~2&h9L=Pw8lb-wld?JR_gVPw_k*m$ItS1D-8E~?&1a8dPHiN0 z6PiB%8G9j79=KmGxQ9k-G`K5SvG&H~jWPV=z(e+dY>bKOmukcTT>F;Fqwo7v86f)h z2=oJL0P|(AZ?)D~3FlPW0YJ6wXSk#KCLK5!Ibb%Gug~iFym&Ih9d5v6!SbNaf!`NS zBu*6OPIrJ~ zPE~ek*a1}&Q55hQ{PX_C)h#93z$$5Cymde412OQSZ}?s^4tt{n^-yUAI%pqxDF2TD zM<7I{JD}OCo{h!|^lZ@j2jVONrD!D5ME_?gKkZFN%Tpqi^>PUqz3|xmp(J-S)3z5C z%+&YEUCEAa!p*7P{%1L|4_iBwaOi=aO(s)guTKM|+PM>|xDBy>KQYb(kPQvjpZ7VG zR$Cr^TqfP<8d&FGB^qE9&5agt$%mF1+I|9E+}%hk zDW=?hmP6UGn0pA-d5!?>l?ffDt@SuZrsY)WNldhWOH?B8IK*-uLnzQZg5=0ZP0TJY zcx$o}Dk()J(hfdmk~kYqWxP)n1|8Fs96_JRBBK)ph4-_Su^k#4Xf~b=LI+}1N4}s1 zpc`r()D8iL5K1*f8?v|5uZUbcE1KP-?Ca;!7Nb+IJ@9>DGyH*Xg`^W~VHo^g@)sF0d=`?|=Q4p=M0oB?)|86NBHdBJSZzHk6jZq6muVk)K5# zn%xZ73_XO6GO*W7Cd6n_mg%gX=hLkErnRKs9 zjy;edb#?SPe!$}@ct|tzoQ$;#ZP6|j`53MsHQUBGa-T*Nijniw}&M@UTV6xAp@vV zi;NvB5=BrC60M>O4CrA?fxy!~b!DX+qNPG;L8%fF4Jhw=Zgl;Yu3GcQf#)WSrA!v1 znQMh{Iownlf?faQNlOpC%khyFAkRjm{$2+5wLNf-0QuLrR6&nWYR2?)%m8M)3?ows z1k=OKos9|AOUkD<=+QJhWHe($^Y^p0Q1h;|Tgm&DQFzTSoaZejcPBz3y1JhL%lp`I z^q}l~uKt-J=!kLzE<_xxy&KCK@KP}$PvO}Cchik+Od!Ny{`bHBg^Z2$H}SeADiYHN zuAxHF6z~ZkIo&GHVejE^vhc5ey$GI)dSkl5Cz*^|yCbhZ3<=fATXOYjs1^Hx<#1MH zjd=^RU5AFmeP1P9=Z0Mx1)MGUm(@kYTgy+g+7YVj6HK*MBp7KSFpH&HJXx;Tq;tU2 z3ze+&LKdt@gW+|*bZd*~pIa7+%w(BOrO~4}8YyZh{CZv5iv;Uy-h^jOC!JaInxKJy z-fz7`GXsmTvumpCdD5Uj9_fZ0GF14y+vTNsPgKG$RKP1G?wYvFRuXx)??c)#Dc zhgbrydti)#_w!MpG>xnhHY5?u2)J4bxUY$|1Lsqtbm1Bi2d^o8yI?x#^df#>?EzEB zt_MUP)qQ2R^GxZCY-0oaA(L&T&GKG60#yrzRBQ%B)eS^;Lr%ZIT3%*T+7xrU{OaYR zKBOuTXfZqDwE&^aov z2rr5RFJV11)vm{n^DtUE`>7j?$Y#z$8#q3oqE9YWQi6|lmpn(?EqB#36+=`ksvA!% zjgql5kWh_3DsZ-cCckenTb!e*5avCJ{*I_lUAp{z>oapXG2OEF4YkNUvt)ZHlJtX zQytYPIbghS_NGY)){I|hL|7qH@-=wAzqKs82A*fP?r_k?hjF6KM&GD8MN(s5z_61T z(^2*2-V0W&Imp+X_z%93r|KGHGJl{tm13-pVRWoc!E`nF)3QW@nW&LGr&CoKpjRP_ zXBW;PB6M)lvc`TAN>o+}ym{St&Y?+8 z!K%c4-~4(4f7ds<%?&gC4u0>&6M)mWo()%K0rENy#UnHHb@5O&{eyK@E1h(hG82}8 z?y$f6>C>s>{a*URNDS9?@5G~J6IGR+bEwrqEw%o9e`5}rURNAo=<5CbKFIFZN5jkA z4qh(<>kY$}ZXLaiJx6#ucY(oCS}K@MGtYi^av*UJF?&@4P~iLZx)i*xK$&X3@u~BE zSdF@iBLZk}qIxBLwf+R#`zgUP$5E-^=QESa)Ur@K2RJ+79BLO;5ylCw$YXR>kxKkVLCQ7LIk;QX@UCCxd@?@~Q`ox)p7ioz^Fc5?p ztDACc!DF3Ne6m`~WKLR9nbx6oMv^`T?$@mkZl11LfK_A#dxd9o9~{GIBrl(w=ClGY zGrX<~?w>$2u@ih&GBG*Fi&dl6(Za5VEAnMPR8ngSeyR(s3Lz2H0Acp;io3`LX_;oRl)D~U($$SgVmwzBzYpZYf~>DGV;TwPGkhH`}cF7xOu- zW&(x@?K-D-w)b;;aeDQPpAP3l9_8x^!&*Aq_;MR^ z4W@2lEG_0$*qq`!*vbJ;Zlpe|0@5l1t^NH=CGN#A9cFMtkLK_H7j0g zsR;?-tOt1l*SH#nByXZAy4K01OV)TSi~)Sz6Vr%{g|ohaILH+k)5+;x%DE0)K02i^ zbxRG@>-yq8r=oz@oP2-(#dTdp8us}kMNt-EUg~29=U_1&+@r|Mijy!ap68T-ob$rp z?_G(0w^!9Y2KL_K5D&rN-B>HyD9oa)2(wHSuvUs!ISudUfoZ|Oh$Bv^SviehRqC&T zG{-uc=X~_XEURh8G*(tJlNIK$_Qz_Zq$pT{rOYZm(jfMILrq_@Y&iGHG7h4nPRs%g zPax0`iM`Hn8O96*|PbX6@%32F2uQTO6T5B%T6U6{T+v{juFB^HoTneWMfrp za;SOw$>`cPIIpi}yk=LHp$8FllFELEuxV&8ryLp~iXD6Dn3}^5>ca~CxBw^<>um2} z3pUT$%v12G3_1wxSWHV?4VX1R{fjj*8-YyL!a6aA|o-nPWv;8aUnOE0mf15kb~K= z#d7|rrm7dWWvb==ecrfU6Zh+ac>|QZjV;#;83TJST=#{(ujufSA#zIt-uN7b-fz24uMkDsv^*!AG| zyutnq`=r!huHV^bZ%j|2Hci(0IElaK8{VarHY-RhT)_8x!)v3b!6sc<)=D3uYEntkvvrorH)SfeC<}}m1jAuV! zM7{2->%WPe$qeGxuL}|6gu`Me2xC&U59>i519nOCZUlBnTj?(1(y)m<$w9)W<2eg- z@csQ4YZtz*scV^Ov2nR`_i1JLklAB8{{DR{q!uMmkK{pm`1a7uHJn0K5*7dl1{|k~ z9|5BtFbz;|C)oQe`n&}=SZ~m_{e;krj?UT43{U^B*2^ z@rb17vPKLo6CB)zTGN-4eHfARab;s5*hzh$moPrDQK zQm#xC1Egx;-|vN^lusvFRLZREEG&ouSVq95 z6k~)QYVL}HR^q)LMNDB>k(iBA+_5ptFrr>?2=z{od<(~>yq5JphL)7t4;*=SzOP%I23)& z-pLf+$Vl8%9OSbOzW*-l^yew6k}Wxny&T667I4F&zY6FBANQx=zfg<%H9KK^cd)yjZWB*zb<9bRCnW z<%+@ZGH+I!mWsL}Y2@VSE&VCXmlj5>&x5l05OI_ms843rgtAC&=#5G-cykk07P6uF zQ3)Bbw5?eC;OqmNp9N*L$Wt?~>DB;qEoT(&FIWa5{Ks&;&%*H8o9~V(8Q@;sdebt` zP2@XffSn~J9eW?~csr1*S)LkdN-_+Tu9{jzQ9J^6Q3YihtU=4O4+D1iXdXc6I+yx7 zv}j9I9_7YuwA8e~s{t%MIwGm?y=y+nhI&gO^igqrtPz6FtVj&I8qAZpM)eF@I|0EZ zKQnvfg~OEaurd42q-dv9N~5_Yqd)jP{5IutL*X4{kE7uEiA75;3thRB(t6D?wZPpQ zwL>qd2%H`G^XKo+iQg&_@y6PJRm?aCXSX$^Uy@mY_c?e!fxQl#&Z?}a^Kr$L6}4;l z45+3SuJ?80bph-A#qZa}|NXmb$3}ElrFXq}uMIcWJqE_S8JgqJomDKD8zWEcle|r$ z&h>13UF0=JeaM9U9z#}^Q6na1n^5?X(OQ>4q>gZ_YOc2+PVmame8Yx|z^H^!p;ct_ zB8QI}!;p0tr%(S;bt1)Bsi?IdIwlOWG_wX7N+V6v4K>dxL~=~S`Lo;SDQmP3mikdd z9NmUbflRBY7BSS}P-k1!$DJiU0Ev@{X++hAd9#N1Lb;+`PxE}4z;1qVRpGubL>Si6 zeD=wL&xv7*z0EmQ5ez+y&)WLneJmVq_})ub9UIU$AscyVc+SGGDTPxU)EHPNVVLj% zpdVA~*|7Opu35HA7qvtbww{%aF;v>>%Q7wd3nPI-;Scb4qP zu>663TNhWDb-L~V!(gurn)XFexyaw=&v(L^FqqD zTzyMOhUR;1HxRHrz(IU^fsqNjCq99OX`eqs`%_|6mf~2wN2E`y8ij~LrXIj?0$IvV z7scmrcNCq9L{`y6*+b(ytD;{Z_K{^2S~f7va8ek@p7Wr)70gzj7>H}iaFOuJ?3w|A z6DnC`kNb36FKzu(gg~v&!1~NU0Z9~+__KD6Yhum|m5KdmjPg0T%{dv7E%ZE$6WC|h zj$-AI8$2FlF3}d(Qd}~kWu1fAf!B4_?Kh2H_i&=3VsDQ2TmJiBU)bmUk40P02r8y$ zh>jm}Hl}S1ga)yk!{M1iP^Lz1*2}iatjN}fx$$JDjf|hq6T#LZQ4PR-mbfLRet|Au z%DaEY8QFI@ZGjbi6%O8Nzk}yFs6h}@PDU8cJ^&Bq1d72ET6`D!u#muB!EsLv>hFQk z&r99TNNT>U)@2W(`sI==tg~?<==UuxRu(Iz(lQVuQjCJh0))fhz(<6 zTo>L?h>q=@>3dRrmoiJR%Y7P(}h+$namw^4QHm+dKW8a z?WndvlRL6LubU()DjDYp6Pm>;E85WEygsJvgkDWW`3X${b8(gbaraTB@tsj_x-Sef zo^uqvax3%1q;nsu{y`jj}l|5QQgBS%TO2EN!(If->?%svv|~FxZcg!maNb z>h}HUsEUa+qRL2Kz)=qRV>CB4dVo8P%fQ zrgWb-%x>5iJeguzXX4p1W{7~7e4cmnJ&KM(rs14mhHAwT3m1uW$NqkUN5r}@9p6vl zg5k?=SQ>x7zF;6B@H-K5SE35fvkLW!NK4}?iPoH_+( zanPihFjvg~%${dtB*kBUy#EJ)jHfmoJJEVyU>LuVq zhm7Cle7`;b03ZNKL_t*d1vwiZ{QCV1U-MEV);^-yg>eo!u8FmFU9RQIUNUiHH6+{| z`@MKwS7is-2Lfv?MpaR7XZrAZ)&a{nr`P*g@F{!3*}Gj>3#8$?CeL$fjLBzh_@x-r zvo_~z>hi-X(plMI2GRU^DsZaGQQZ3}z1t*x-&^;B>l&4Nb51XwRLf27(|_i29T_bc zKc`<|XiD{wN}Q}R*W~kruBCdb>x6cV*)1VCvy!u4AYFX_*bSg@0Fbl-24_WO(M$!9 z&^X{V$%=zQ@npf_gqhyrAV0*aF?IP@aYYwP&_JJ!W<2^ZALVPWaVwc2GY2&uFqTXg z0-+ya`)!aB)^lw~nFRMC?=MeA|7Z-8;xeGL%#lk|NfM*6njI{Wbg2jEh2%l@LPki$ z?5VW44X5RqrnZO17}hCPJ(2bQ%e@ytny>C>w>`l$SH%XcF+*f$la-TaXOnFV-6Tra z%Ce5>o%(0F1XFDuj)4+5i_j?H{~#WTepqW*gE4M>fLSm*J<5{vuJkritT;X-vTXDD z(TGO>q>1c8h`!%h4=sb!8r%hZy*iB9rwJ1 zhIBE*nf-EVB~_e+4eN-U9D)>|L1_evZ!tM~f07vEYQ9b1;7aG!L2IK;gQ7aGviBCI zvh?$1$RIS}C`T7yv|(VLR+4>E?lSKr#bg%UR%AV7fi`-v*sys{MCjmhyS{SYA6i>M zq?qzyc=mzB&pJj)BsTGItpn%CJ$raE-B3s0^Xs|< zUdf|zgqa@xB^8yM5TW8#XMc#bgXs5K=cT*!W3r|TY@Ns=IEGRMnW|8K=w;MN3#Jj< zi9n=Cb!eClqWymTz_flzM4g7Gt6-p0>A}48a9R7&1C6eeeUt0Fo0>51e!#&#s|!Dl z?7ydv0i2`Rb(va`AZ*;K0zX@0J{E?1E6miC^P$`A$!}cKao(S>c>5)`nd&TK`#i-V0vd#tc#aG7m5&BBL9Q_48RReCp-a zd>BAKfM_VcSP`Uz89v3*h;E#M#zdBI4u+k;PN{(kiDMIf`)##76=;d+ofOEbMrrfFg0133C% zqEiqR|3~`SKy->R^#iW1Iyew3V1M$;RLVdL%ARpw($CX$ea<9;iP?=Zk^Vn+-`>vC zu}VgUkA!n~q(-%5V14Y%RQ9P1*cC9yX4`T**cfmoDiUj*HW+siV>)UA@7!1!IH9?( z&`4gm4ZfF=B^nbH80Cgg`Mm&K{k9pySWCKFm^Zyc()#_v70-A;q}wH1BO~z zM~lfZdUO<_xwB~=sS{=4HC4zt*+|p|0sZ_eP3-F|H4;Cp=E$u_NV7!T@+VJkt(g~} zLG}8`gXakB#Ln2#6>~eC)m@QbYI*79?PSzZxKcCxX<{pDF)KrKaq##3RqRUp_0q#t z3a$skCtmjpZiesoUuNy9R0(Usn0dN5?07#1aYW|3IPo>eCwrgK7Jw>oS!@!5dn$b3ShAvQgw#9|Q3Kc0h^0 zA^)>UbiA*-{yc{}#J1Q0oOnbUD%P0#-Prrh`!XR1PVhA*cn%Q)aYZJp^ULmzbrS#k zckyx=h71lH7n*0pk-ISG7dQm|cwNfS?G+eP%Nc93(~bilqNVLPxL?2VJOQ8D!M@kR zzkc0V&+a)*AWvfWEwbBGp>2DhzvRyJ$TV`uZh2X0qS|_^6l>p*Vg%b*x!-p1wtvRns%!aj?D;8$Z-<{=1Q(bqAwj!H& z(=_y=E;Xr3og7Z-bXrhj2?SWyNe`Wd3mo`y^aH z*G@)8WhF9=W`MyfJ4L~+Mx!&q6~RNz-mTdRu2g|^qh{qoB+{%Jt5eE*6P<|;8eO&L zv+HwmHV%0NPcrKieem_Vpl9-d)5zgfS=f6?&gra@OqBP84B?T*99a52Va2X2VqO=? zsyK@!3V&H=9Zy6ZB!^i=f|(k^Ct0EJO*xGJSV{E#EU~&^ZupuvKe~EAsM}$x_?pm7 z{gBkJ*JwV506c?{fpdVtQ8X={U$^o7{J{>{(an?p%*{Wlu&CjekVPkSGaQC8$0;z) z5F~?z0r1oT4(Uy7WC7O11b~c<_jw~sC*mwYnLhuK z*q}=upRKMp6|BceV0?maDv*`FV*&s@yzc=znYl5{dG!rvaNwMzUcO?G!*ydj3{)g@ z6{Zm<4@Nnj=M8kF8L29~+IJs@jp21ED_EIGcT|Yo0ZAk1?iiZq8Q$+Bo@t2*FvdiI zA~W5N(=}g^cz-X<*OyL)Sr`}s1(^~TD1lZg6E-dZ#iL-?hY_G(w$K0<5y3$#Ttn@+ zIIv757W#cQh93A)0Yvf)uTM-!?AN2}aP>o<#=W1SO~eUI-at_~;nPdEG4P!82_5KK z)3d4UI9N4`WGE+G%EyA!35Qi*IjL<`R>t8lFJpDQ#Rv|VdEG;|gV>7j-P1L5S6@UA z;xuK|y%PmgJI$PRLSZ(7MKvElbJjlKu*#113}+3a4m?@ZSYcyaL-kO&)>M`#Moo}z z6O~!-^WYrN#s%ZIf$+J-Y?Au< zO(ypDl3Rg4BP7amcR-(@vcIg71p)(zIus4eL?j#+3W*(uA9znQ0O4lT6uj8L`c_mK zt2zSM<0g*LYNkZ}Kd#?r>h|E*Eqqh0~uWYH#+2QUa`vHuso_Wxf?3zrK zxpRky69g94#_bc|*O!*z`=~Ti&K1lF{C@u6x(wGa9Js;-r>S-BB8-BVHCczKy`+H~ zFf1`H7a45;?iZYLPsQmVlyd%R7Doqe%CJ>(E@Xf?*zMn!8}4yw?~-WpV8_1AfH^xt zUwEEBm}dC8zcJh}r(<5;(EEXDYTrq2wW;*?u(G8>P$|L2-|AQwmob@L000cmS8c?Y zL!F&nJ4WkisvBPh^fD|1=GVY^wye4)=`GGjPA&%Gp!w|qni|S8Wo1Q|CaZCr?V%sI z=frhQutFE#FIObIv=bP-3}*!p;ICi*Q+scmeK39v>A1tNA}TXgbzKRYH|}}YUWtLh z{DY!7{<y=&YgT0TR(a)8bj}F9WX+68;Nf~N(&cq zQwTx?$m^AUQ(u${MR--Q4o1S0wDR`BCpu<>tfU%H3bTPF84G?5eob$8$j0qz_E=f6 zEVWdVS!9UX1@mS!SZmL6kPJ&T7SmbPHw8@x?YJ;z8I;fK+cq6;&JzWTXorfx^<}_$ zjo#4mXnMg$3I7>e*2!_vue*5`vL#-D1G9l)Fyt&xo=6T7+E(c{gp?Xg`+Y{^H% z)d>9FMo%n&E)*q9Q;*_zf@@*mIa{(N3npj`n$MuAvr(k7PwR!?W2#mC&j+L$zC|?i zz9?O=0ep`ym?feXiqdXRWy?;Ql;&`hg~}I3A=VN}&j%_UyBRZrCUqs#&{DNLAwK-T zi4B|(Gp4FRR*r%KB$p{5f)ip{G-Xe_6{Y&ls`i)za}HcXn>O8NT!gu1D=T%WPL3DX znhk0avQvvv$)3O{|Iv*3vQ<)Sm_Y?h;%p2fu3qL0vZNQEDz$f|!mh~ZDs!SNV3xR?j6BT>0L~J9 zDl_4iF|)At!KF4=dG512;Nr)x2OsK2%OoW)=(n=g4J(XK+mG%^prX?|31qgFGt?@9 z#I$0rqxv*+guRO+6Hu&#&B-Q*VaTg*hEC+jx5>B6vUUp=A;05Ok=iC-k@W*}*KI z01lFYc@+u==K2ws2Va->GuY*{Q;j^I6Zq=hLN`Yyh^W$Kf&dP#p$aX8P@9EfMOJmY zjUJ7_8^I@?Ri(-mwhV&q8Zf}p_-2|5Mt2W_PX^D|X zwybM9_W9GuO2ep9?5_f|yV}-X@00~nyl<(CjO;nuDIwC42!EW6^xq0vgM6W;ps z5wF3I{(Glz4!Q+f=|poSB8!Ow>BaY$@N6j|`=Pb$8%0NnJ62sJVvB%wdhrDS*SxTI z;H<<|j--kKK5Oa5>dic^fuA9fZ2vYp!{46Is=oabr?H#S91C$1`a7(hw_G5hTF7A{ z>t*hy{W&H~g#ohA={s`r$49CL3N6L7zVV;_L9^KhTk_efoC(rN_p;KVo@cWvDkES9 zo~okzkG)M-_bPX^3qlgi%PmGFO@NaIYJm#;RB01XD4>S9N_jP9lC&~6@p9`GO&mc( z#zw(7$1LZB`;A>2=%!?|CWgeK0l06kXCfz3@py%5)koPWI|{~c44?*$Ef`$5ftZOPT!CUej1yk!he51crvM^t-S3N z*^y$z$YBw66zQ3`~ zQf$-&6S3*)h-=ou>B{!3(=p|e1#1lXOm}se=axR(%I%y3d#Og~<;kYc4*wUbx{bC% z_PJ(2=z~A-p%93T0UvFzaYG*OWKzM0>at%An^h_mwf7-u)_lFVNNw4bpc0MDyC75y zUpB^1H^lKCL{drMy;M9^-63aq`$7sqAEWN+%w*}NI02(TJTHu;AMxnWBm=pI@>h4{FoO1+J_ZtC6RATEVmm7t>Xe_cKOPzYfz$q&oKB>NX zRy!~%#hWc8OJNVR^BANR*sN$7|4MWab}TO`r>)jIkpz9p;FJrf;&3liF%*3+A4Z=q z;9DT4z717*A*vV+WN{cWgKBd=a4W8p7#wBhe3r;%_tzz_?>U&a!~Kh&9XNR?CiOcV zY`!n7`tdj?-(p&zgF*&c8l&O6Nmk0+2Aadigetry0pibp{xGY915kqNYmBy3lDn6& z&nJ0y{xmG=<{uR7T^!@H6W17AYoTHzV@VPoz;!v|Ja3>$wNb-iC=8Or2_J#tfiWl# z^ugtmgZyXjVy}CKz2F^~@AFa{*4z#o19WGSC^%>XS)>Y%WulaGN5K;zYn|ire%ZfF z1pY%GrEsjX?WXU7UhQd;vc~Wq5Ixk7r}JY-wm_Pi*!jQ!&N5gMwEzrV2G;3?qM1^G zEkUfUgu>U?z@H}s19`*$+0R(4AIcosW38z&QE-eg28J8f{$LEj#xsHMtGD>0uiHlc znpY(>Iwl-{_J`(HiNL814CnveyRxIySb^bP8t2lOK7SVe`fF;NSit22pB4PN?=lqk zPWYS^xpm&=+ntnUPQpeBR%Bo$In*~-5%~K0QXZHZEi1*qm+?A_+J@qZYR&q_#;LuR zCQsAbRZ6E|lk5gqGsBK3gEPn~GX%2f3Pq*;6sj@1<#i(Feb?UPQ zir#flQd7XuRq8ZjM3ftu*?VLYEL-DJV2nwZ4ozerwEZpE;I1qlN8x4!%iRb|cy%KQ zH5LzQA@y>BP8P}>aY_NZ*5_OyoCXP%dgQWdpQA&WDqvKGq1pv%M0x9|1Q8^)G_g!f zH>y>f2$5jK{(Zm9Mp_k$$&A9BeP_i`0?wW0h9_1_2av_745#&RPJ21UKy0Gal6(ze zP|F<2!J^^1CvFbxR3{-jMQH9YBc_jzs%K*xH^xX@!?BXs`82P&U=&0vqBuE~2(=e( zlkax3ZH$UA&NpoFda}=fF>o2X>K*VTFfPnF@idifUIT7WQ}YR|wQyepbA03T`5T{) zYJ`Zw?Yba*UE-7n4q!u8yD@+`3VU4MEt!&E$oj|QTg0E|h+|%bLqV;I)of#V;|(uZ zY-4BP*SPeu8xtHv^zw^leG#i}UP)AF0*TzhT$-jMLd&x(U2a~FbJkY;tqUf!bkx$) z8mtvn_;WVSV;Ezo7#Uh>UNkk@wCP~2z-}DefNHHkAa`JF6>iL5t`5$2GgW8bL%d_` z6Tn4W*T8jM7{l=7X;%;%#08AY$g_?-eKa8~KrMB2Uf0>dY0_!WS@7YCHWu)&Uw?6( z1s{e@(e3Bu*ym9Qf4CWy^B!IU4@{ZfQkHLQG|h5J%9Nu=);$&gmy7{?HoD)1$%kta)d;p{wqau?O+QX>}VLlM_1-ah3cj=-s)nZaI4n7bmZb(AWjlN3t>`v8|b9Mg!TxVUDc zmw2V-y9zZsnBK6xC+Wg+@`*$SIV{By83KUT5$yj&B2r%%(S-xX!Ok!sQ^$?bn-aFW z?YhH-Z`j2Zxz18uRAk4_#my9jE*b}lpJEAkQGjjerCg@{K#n2QA_DW8FzBX(g5vYl z9$|sfLDT1U4#aT)a86+`f5I;BEy^hJSNqL=P>$rlQ9V57ycB-vVo@c)R2*QV_4RIH zIY;+;?u5C)+;B|Yk2TaE%Oe+0;>6&Cl7W8f`u?+h9OqsX2-p#hdN5~W~Ewp z4ihzjsEvr?m|9-F>VaC+)rf-=U>bo@8G$T^m22(fs<3);b3H6N=x$Y+%(FqO8s7g< zn-|t9*tqFd_d zJo=qz>f6gqoQ}y>5p&$2x%kIWMg2L^_(|_D2Rn78csiCut!#&rI3i)?@z3f?U$ zr(V8?z(<#>@U`69(;YA@eI_<=_C~PezUV0MPQW-|c!_dCf)1nl_JmCPDFPK!;q+2? zppM!f%w&CB`@ua&zuaWu(i=#PBcHWVX}HD(Ge_jcX&t)W&#eLn`pk^oaTo>b4Sv0J znT|nwAId4yNj3c$*BHQMT<0MAXEryivk`U5hNH}Ima3anvN}Oati7;~_A(sAVR2w~0){J#L@^GkT%0McpbhoCDlG z@cI0K)A0RuW3NY$3`t@bW8m-qK0;;|)KojX6?sKay@;Z25Ae}(PRhBlwl=(}G02DM zkevcgBegjE`}YRA0FplYs_)IQ)zR(1G^@Rqux)N?cZ|r6XV4StA-> zQ{3&>4+is^hB&}A43!%7uJ_O#hS*1;3U~PrQHaw-yh~&SS0An-$?2h%138kL zXxGu*f({#kl`Ot5m`aS%H$oI?RxJ64hk7}LF0!bSdxv1)M3#4t8X&fG<%10Ap9wwe zie!T)b`=uCoDo??-Jk?r_n(l8Phyxj!J`k{&q`(<*qHS$bx&^meip9l(#szOAOH8i z6Kii)TFt5UYZiEq3u|RtC7~BmL#?DiPGs(GQ`S^rBAzIGYpTXl0IvDFbd?c+*gN=j z15pPNyXvqqf@83vHrJEgK4o;c4(2%W&GrUfAt*iFv}9(Q?4|uul*m^tb%J{zthMlM#P_&3rmO5Vm5lU3+=C=1?x`?Yf=G%4Sy?cfaKCwy|5R+H zt|Xbj7+(_IA`@kXmGVKVHb$)<6$M1#`|HNv&(pnK`qy>;LK0Y6+N47VwGM9`DxW`F z&8Z-s&%vDY=K!=}Ad=S{6+46veBB1!tjkVpY1AN2J{Z&(>|^wzL}<%63uC%0DQFbs zrL|CHmbE)WUtg7Dp3ef#;W>$Nt1PX9{e{ZBA6%QwZCH=#jqU@BrCzc~Fb`_D7H^S7 z8?Igr9(q+ddI_d(dq!@>SMLi|y*O2+OvOIE_ZgL)d9D&>5aP%7UP72XO9#zL2mQg? zA6&ypa~(2y%9>?<_USlbR^`w=Li8KzevzeAecSKU0EYpCkyYkhJCr(zTKkGn6|?o| zs80#6hv7}@5rz_r!HN#*5jJKyc4iGHqZuBRhoe0{ErA{<&msewA-t|hEmEu84a41v(4 z4|^0Yb9}ZMnElqvVfX+oP;t8AOB0s2Jn%dLFNaqHs}k6$=YPexa2%aQdYo&YhH2z9kq?nUQ22B&h=8-r@|`F=8vR-f(j0*{rs=o_42~CfEA4| ziL`BzFQW#{g)-Cx~^qt+aZwhCIcH{HK5#-&uEP55;Kv4FEM4fuA)FY^XNQRNp$ zm$%o$Z@sA8=U^S39dub8&v~%dlnm3DU4ilq5soZPM1%9j-V4v!{P(}VYORG8hu1Z= zxoj@dxSuY0fJ7Ft^hU?&jp0-{W8Gn61LF_I$;*1T@%k*`FBPEd8DHVr{Tg({CK1bKSdApe{r zX%e}{Y>CYfA>TQyu<~HktMWUhO=LdEdN5Rn(<~Ro`&s9wVO{)n-9tIlLgEE*5Hi zFy>VJz8uf9a2&Y5zA)y*j-;EFyWwlRw_nG7-$=`s-GjY9sB2=M!s<#bNhDVOf}ue8 zl&2Vx7&Ls&5vtW#kNv*+^<;@(aD>vOQx)sIgvt&|L}sHL z3z?m;x-YOgMhn+w-@36RMT)R#KZj8fl4v3uhBJEcr9-wFybmi>>Wh~GPe`kN+s0B( zf#ym8RSJ8!Ddd~n#kn44xppdU}A4AGKV{oTDF=E>4&Ki-KYootxK}rl2&P~W=nJImo?k}{ciGU zuQyvuW`wr+YDv=SPu4bCG{)h$8Sgffauc z*r<>MdCgz=tl!vMn!W`&+-tVi_&Hk8n(2En$0d2etgbQe>`$X93#W;GRb2>hO@80A z=!K|*wI9rJV;aFoCW%;8a~f)NB~<%?-M`>I81a-}j(ZZn*Fjm3udY*C*mZHG&J=-r zXo}qT{~s7W+i6rVp!Po9!cH=lP?%JB3|X}+=mX`$wR~598i`TU3U*r;KWqTT+@&5) z22O$wuK>9ZDz`H3EV80HG(>z&2UBe%*Sttxs3Lt7+>^k@`2E=k1h20P|M~kje%;?7 zf#1JB`2M=3K!&p1bq*&La-eH8eIhvS8+#|tR^!B8kFNChL^U(@MJ~>Jifpz6Xx6ED zVaNGdp1_GYFL7T}-E%HDIOZ6*4gI0T4=Z%xpGqcCu%N|c5wRPOxeIx;WPuID+1i{& zYsYo~*D=UW@0hu?$o4xnK| zP45TH5;V%^8;{2F42)`8TL#Q0gdI+eDf_^6 z?ZIlkY&3UZjDgPH0aUNvIch7prn<{c{$EQ`Rs8CK7{ZO7u7pnn6ILnNrf*krDS*=X z3dH0kPHzFjF9d_9q8P*+1JmB6mkF8ahM{U7aIhkDJ6@3_tA-`BV+74`=|&j?g5p(2 zVb}nsx>F>Q8+*#y6h*hc%Q~JEenotqt=pL3t3UH0*siN=tL2q5b6zsVi`Z z-?u`boiPnX#f`7&h)5a}z`=FF#h;}4kR}{>=|9Uz|9Ip>rAraiD+_~Gp zH3l-)dtno=JZ zzjHR+jP8!E4MZjwp16E;B@s~j;6$M^IIgy@W&ETyRVyS*Vh5NQSwJlmf|*AJv(Wgj z9GS}J&&g(nYm7dpuv3QsvUtx9aC4C!a3{xboWB$M*@{*hVRWL1E*N9w0b>J|%rxzg z&cd?-@WkgVJZIsa6J`Tje=kJr4iQ;5Y{-eh^OD)bl71KYS%#pRfs8=xg^Ug3K|-a+ znd)T}2rqva9$MU?ea6*EH(_Iw*?pAN0W7guDh!zp^Dk_;+&2;Ux_<#?*cF&5%dYGd z#7>2ORwU;9(!wR8{nkPnm^%^!ah520CL3Q_{P0X75^luTJ#dXq{U-4Jbqn5QtNq6g z&$$wW80H8i4K z5M7w6G$va=mp%lEj3%`?A{)k|7Hc_m^s>_DFaQ|ONlXJHH6dNs07^g{z?et86?V^@ z`H;svf;+^um_GToSepT37+)${oY2DtVPBnKRQ%&%H3x#oqls=zF+Vh#0(%8^OAVx> z@_~;8J)175MiggT@iO0J-9MDEwyXX3_Xp!@&+p0pF0^&AWJ668?-(cqH@@ex4b2jr&V|dS~~c?1TADFD7UUMPe#=sOiMnR!w^oopSuQyp?aeN@X)UWGl@S#Hs7^@N##U zh77|_$KcdtKU`_t6y$2m>jz~Jp_}bVB`@ME%ruNkEESS?_CnNvO_c{fpFdC@AbaI2 z@?wNixL@~;@9#?~S~~vMzyAdcBDnDVJu$B7JPi3G<5cccTLP5>l>Ak^C-JNgA`;)< z-#9Cm=5=FnmdZcg9FfMX2`8C1_!$31RT@xg!;6ql4CT)rkZh)V5M9L zN{2Pw3t-dQkZ9I#w!v{UOeM4VvF-B?NnKUM7%u%ikIp)fgF_1}1-o=3(SlRNst}Q{ ztZ>dBL^?8(eO`2$sTiS~2`ex<%>11FvzXDCC~MN?Lx)PeFV_xxU_dv^XxT@f-PJvU zxue4vr3!kep~0-tkQ5d?&`_CD9Q~MUBtFF3*2O4PZ6(iaf^o2a{J)AEDz+a#L57TM z3ZQlcZ*(;qDXvO=co(Vbxr*1 zU;l=WZvpPBZCWt76;eT`(~Hrf8b9E`ifp%$;rE{p&f2{Y6L#Q}i6;WnI*?O<4J|c| zCW;#5sdZ|4Hgk;U)9ofICWfh|UW&{H8uAn&p2e8{W4FA9ESpZXJdd9iacNOeNxBu_ ztZbwdt9Em1fI~A=yN1M!c5WR|ZlVSmR!Qq8icYgpc^-`M&1=pYPRvVsU{rA0sB2sp zeyJVZOK_sKTfzk9NL9I^`0QO(o5~wht@8)JKmXz0t1=GuKCH4*3NLBn!b)HRW#i&N z)vsT_Xxh=#{r!c=O^ZCp&<7PKX=a?mSPYCye~5aEL91Xk+S3~N>l)xuVr>{j7rVUe zP+ABf^l+Zk_Vk`A6SOV~6y{Fj`WOR7H4O|CS;!+V8Q?>L+V69+8k4Ol?XKEuDKdg#fffKvq!Th=P0cwSa z%%AZ|AQO3{uWPD^!vs^xOzDcC4oHk<`2JJsIo*0erlg#zh6_{oaHZm6W1`f8LSl@m z!pEv^a3HFtC~rQcMdzb{N*o{p#6Xtpf=q|oM42I5bJjsCe|UMfO+z!Te_{o>5YfOJIKQ1&hnwfvD^f6FDcwTLRmaPJd3|&k?ze<3iA} z4|;sn-;!25u_-X14t)Lk$*g3=Y4DJmV6!DGMRtplMEFxkz?PFFlTyu6$d@8WZ_Wu5 zbY3`{$Ze=J>Q=~(zrT7=Av0(wUPXBM+oeb(vGOq0 zW+g{VGW%AVxkx03Q#&0uQD9Ec>BtQ3b-4a)<|#$>qqui)@8F+5e^^CC$)By|RLV6J zAD&nY6?OJ^KwlyEL3SbWb$`Le&GLa9Z_+?(4>8$2LQUnqQ;0 zxKjxxn;1jzc@mhz@OchwI3f-R;F>qq=hIOMS!T3(RpeDjxeXfw&$C5H%j(`U!}Dwm zckDl^^?~~k=_zHuH^GO2xG!%NAnVMOesL(dG+ z7Wy~KUX2!`d2g)WgnkNk#5P}L{`~AO)==m!S=(|SfvnkGX^L96{D`06$7trj$q;Mw*w39PFn8F&pVfvf=s%nWx@EcI|`MK`WMVR1#Qqcml;#3wc4@Go!szhthr= zNPu%(`1SP*e|`N6pZIX^r|x-)`yDCH2?91y`}xD?_w%-zB2%OG*X=)ihkIOzU0?+- zI&e++P*_47WTU+L55{zkq10%5-Y>q zpr2hySSPjX?0Eg`MI2FzZHvkaH|=M3h8#M5b4TE(m4j~es7D%P^aiNfEXhkpNs z3|VSD_yerpne7xR00-^^_pN62h{T^~V+^%hn*n1Mq84_eBLdJ=>xSCdDja?)+yIvg zDN{+;5|ZG27QTKB46}hk;XnWVuk2J7r~t;iakkDQuxdwkW2|HCKluLoYTAGN@P_X( z5No~uSQ)p6ChH8PwVqrWn@x5uqvDoMM`Ur*F~Bl+Mxp}6IcL2&+IT-KgD@cOjaDLT^lA>(N0BUhml~rA=n^b2T5v2{aMnixq zx&CoA3^O(#TTpX*72h`!Zd6I8by~9C_ZNhfIvAMUdY$4`boUAYoJMp?JvF#ru#VD@ zg+#wZOupVzGW~nMG+XN6eGQnC&yjP5m*ec-!spz`W$=ervhzOPcmI9D6Smt{(b}G^1w?3Mw{YY@3n!B4}+>8)8jA@xg^^uV<%91FXhaDNsZQVn*YGp zu_TQ@>*ZMw#opNtswr>$@AU`6fv@{Zm{?3zxOu-EB9W#8_Rn7G`mw$s1X?=lnEp>y zm43eH9YpBCRiW+he#sgb6t4!rr>n1$hV^XN*VjN*@!6X}^0SU+Y7VXy*a@t@Kz44L z_dSW`p5DK1Qp*pFVL1D6jH!)P9-J4J=^qM#klLQ6Vr}J{>Xh@oFU-}9OzF)k?MYg|3rIVAVjM;r%gtMrIX_Yza zO;uFtGj! zg-xQcBeAru_;C{{HgC9`xF!K^6b}N`%i@+DY>3Z{my6*TZ}Y`VhSxStpSRuJ|CKm6 zD#5G+rYgBjI3kCh>Ae)<*@YKZDZjKF zIjD(DNr%$`df@;0pI?{`{P}z|rHR-lE!xG*j!;;|+o1)7Z2GQ}+9$;85Lm4PO6HBC z9bgfcUrN>P1FgW+w%y_uOgje3H4$w+*Uk4iDcR{QEbh~?*n1SGmfG1-YZ63ppARz^ z=1j~BbeG94OirlhELQI3V{7Vv)7tJ9$p9Wo|Br+T#@5WiDeUR2@PvR}!v6WYes zQG10+v+`a(oh-fQ`YjGC6n5K!M7XMM4^Y3Q_s{o!0pusHVF(bPeXyf&LY3<&69zb} z3!R8zh1*0hn|-TEh|!_M6LB)I&x5r-(vK4ufEpWKYhq^G{}Mlu+OFx5HcT842Z`$P z%M;SX|B-JL2sjlTeNByq6cXp0=tVBXRF1$tN6jDBSX8QvIBF~0Vnp$1I2D6H)$-TS z-r@CxcgNuHp_@$wvOo9X1NnX%Op8S`A)gQf^FfAn_oucHq3d2s)7+~D;~Qge*yuDUd0#hU9pq_W9fFy=U%JE`#>_=s4ahvfdrW*?Q{B53 z1OwMiTvHb69l;$W{Q_V#HFxk?i=ePS%;I#XmZ1ugNm>CVOTNa~@iwUQ?Yq;w1C~Q2 z$*lnOA(4E};@6zwW+XW1uyUN0SkJ*ZMfZuZK1Yy~lr_h1K}Vhw_}BN<*>nA| z_g0ug8*t#hCZ7Glv~16B;QsX&p3lZKE#LMz_;r0N%rS`jGQ`e?y6DjUeE#73`}(IY zeQM;Q7lImf|N6cWmhjojpf`SNn&SU_7U&bXqIF>PY;CARF3$qaJ0|PqyHe>p<4{Ad zj~^?_&OkLdCeMpL6qEN&5WPzcnBKbQJUu$P4(y-Ws2%~G*r}=@Gs5cp;5^@uNkv;7 zG+}F@ln%d#`ohdLrVI8iUv_)ME#D^LPBo_T^JZeEx(}`sBKi%du{)RIA&|Wf z0Mem8qiS9>Qq9v*G>l3l;Z^3s-LFVRcT0PU0f$Om4&6q%F8O5w!?Tcejf+w27U*O! zYmDO6f0x%hlD$OD9R0Z|Y@il(0@jp)3Z4^KXKP>c%=1{;WI+iUuAQ<~dCinz6JH>#c+G+IP z84e6X4KJ>zxSsV>ps;=~)+r3?rEJc!7r)jLnLPiyc@4?E<+U}MVE7;+oD~B$oJOTX z-PF*c9=Zq5^U&QDP8pKFcB;McET(#}&DUcF4NCJK62YKi>kW>kt8xW??dC|4=z#n#^g z>$Bvwo{q~6W1XWW3L1v9Bc6p{UlV!sp9SB72hY*9U$;)ff1e{rhXraEjT4bkcIiP#(~ zcjr_I`sKhrb&eoF=(_hgO_H{VYdoj)POX5`INdPDRdEvM9P&s9-#b_V*nJfc>KPkW zYP?QVohFA`#a{I5Wn_4da7rZ!ZgfzQ3_NvRdN9-%S4`6~!`c~;#X7OoO-(XNk*-LE zanwFlO4jLY!59j3q(EY&fA*%zXR?g>rr@fo$Z~iM*_E>3mmb2CTfv_SoGKy{7jG5V z7_n=siP;-4)8nodvcw#H>(0aeo3l(ohdjko8*_ePIGH>cEOv#u;@U8dIXZ=@1>ugS zHgF)*n$BfZL8y@W2$Ao~|M3K))MT6p)=^!RS+%LA`cgn#b1DX%_=%>o$%5zfa$CnZ zK5OeXpQ@}fWIum`J^4^!=PbwhEV+`Pmv0rY&w~@vmyN{yx|y*sy2&JteA?B|_MF6e z9@zCoV|1KKQ87gM@)Stt}Zw5T&TO@wav>-$E+{^k5q&{+6P^=l`{R;*RA^aNdEfz#^1mHcU6z` zpV;uxbgBy6UlV0n**(FQ#ARM<1p=fy>-X;u%m&XXti3R1yvj0#{c4~)6Jm(;4 z$a&Wdf^4>KR$-VcHcF_-lhB*DL44{`o4`4!Q@S}1-7XsEbc(oA001BWNkl6~jUDG79XnFDp0Z|Qvfn?PDDPE!_ZB2C5&z2{2*+{5H~ub z@HM}YDLBz|*Ob%;^>t62dQj(Jt#|e)G!IqfzLFsdZu-pHaWc&CNG+D_u|ID>yl9r1 zr!CPh)HnaGrV_8woQ6jplXFJ?xIg=5m&RRePD>f1+pHAh15^*+ZR)OMY2YxU0 z%cLxutYlRszwNG!&Ekd+*4Z28lLad?Dd5PB@pTXW9UpmpGchP=a7C66a+<+XJ$Yc^ z&pPz`3u~<=={uk2!S(e8rgQI&IjRpVLmpL&mnswy>a7IqA0Mobsl-zi_St;f7BUON zT+Ir`E@qgZ6`z!r6+sw_MoA_2-M4RVxVdXyCaHth24I2v9{BSo8{i^9gQlon5VWnP zpd=ql+A3|3LmhkPh^b7KA|jWBRu!!3c9Puy;;#NZUR@9xui;(Gsv;EQHr=)nKw$$t zy1#~tH_>J#ur5?3rKIXRc~u; zerT(jcT87y4jn#Qx0o*0kV!tCu9gbrV zpcXLZg!e5+k^Wmdi3a|2{2!*yU{P*kN3sz>CRtbVdp-aEgR`EtrCVesfLR1sa__oZ zwk6#vG82e6$ML;V-Z38%@Can=<~{4=CD1+k?@IIi zz0|uL4pwLR9!1rl^^Ro09vo(mxt<)lb(sW4cq*H}*24F7$xK~cx33cT3F4qw^Evc+ zpV|myVfZBWt`c_`>soLQRJ<8k<#W>AYfRvM-#FdrWK}4M!sb$EimPl)zW1u{_a-n< zsWF!hrB#TaPp|3`-= z^HGm*TD5+ZwL!8KOjS`tWK#t7b6R^>`bj7Q-7d+#sYjv4gpU_sI4*f^(x}O{T9wh_^nIr?sgdquzBZ&9S2`2POJ zn0l*S>*DKm!Wy>X9C%-X%8xSKo3P`M+I~z_Y3BTTy>PXS!%T#!aTsDPB}8rD_wP4` zA5ZiLYXfWPRO>LDr{j)5R(@=+&!*a_p#8cR+@|D)m7h8GL)VgZy62{S?by5f;;q0VVjxu`%+x?9DTSwj&rl`a4><%^=FgrsIB8w!P$L1drC zAWXABfdoel8ZD($ck|j2+=Y5^Vn;F8E*q2JDq@JfR;3wJs5$9o^~fw)${^~k7d34# zt162;j#Em{PROv0&_;vY z0&@dig)VXwxY{y&-8a^{Yx>}Mo^Y!4QdX!PuyKAy19CA&X=Gu<3Lvu1IT>ps0;qEC z?Z6zI^ghG@YXwIyl8@;+Y{i8qz4KnlYiGTe7FK`=iPrG;h@cO{js;rb3TG(>*rknX z-RwgYG=dYuPd(u4Zb>b%ccPxUc(u`0=Tb%_ti^Ch>&0oi1x0v)^N|DVJM{JAi{m^H z447@%So?cb{q^(={5dNI8m*du!G@d|{6^k~eE_

YgrR*I3Y=t$4$*uLhnG$gX< z@$Potk;PGauSTf0VJ5Xaj4VWY&$Sz?Rh2Q<>=sKN$NHKr*8oZvAAki}uBWUBFG=5f`Ib z+b{vr^`hgt6)7ElV0URljX%d26UQ;Jb|4_@``-Ddn%!fay)XDN5V`RCeS@5^F_nLr zLpQQ&p@a(59~7)UejBkRa|kAOOJx0HLsWmEA`!7;@{?Z@PdwyziaLH_4p!agjT zjXscQtP-h*zU$_TF$ZkSzR?tRZXA#^5l{Sa6xOnA2ehgO$^*IA4Q>U{&IEI&$AE+u%|B zUN>M;Jj#ANfPk0)0j>zr3s+n?Urtjeim&q|tMK*pgH_IbUpOX-T!?kkolGm*94s5m z)YjFHgT+DCq+!xHIOZXWREqY#Yk|4xW+hUyvCO#w^m!n5YFRxTGRHgM;Lc?OzSkdp^dn`Oim zQMWLJghks{HiP6ga#xNWQxz-!s*BkfVv}Vqd&YeJ%Q64zW9-|7SCIzd&aXL82 zh&L*4#D4d-p1_zGK1dW}Z{$um1&a|)N->?xKFOhXTt!R+gl#P?#Y|6V^HO-8+M;_p zP}(e)6KUWa%Hj(1rqNT5fn~<4)V{N!HedS)Nfzc|GAEbVAx=YaV;(NJR(~OaiQq=q z?uVhHsBs19n8yn~UWjsxIV9Wd6O9bb1{)JTCt!}XRU#@Aynk;!tfLFK(apRBVS_m5 z?Ag0g4R|WzZTE0jlXMK_p7-9!+E{U;mQbv2z%dIy{yK1;@{!*g*hSnZ{J!6KzrRuK zLbPUt*wE=RdW`n#ePLynfM9Bal@@~E-)~6*To12$Jh*6q z)JhNF{-(lV7=E=T3B`yHj#|RvzC2sXU*C0 z)`8(MGE+Q`2lZO0&f%|2{C@w9ph#_oiR-;ldtluL!z2@k`-bg6EJ5z~zWbIUCd-P4 zhpny2{h2WlOSe2Ai(UnNB7+wLcW#hmr4Cs(4deBLbH3=qxYmVX$7EJvy%%0T2lln# zB-d6@e3;l?K8$o-D~$>{vouTI_l0>D3c<>S;V-P67-MSlOVHdjR8MDQ!p(Hz3(W;H z0=Yxzy#&S~$o%OO$Pgi_$e?4IDv@S_+B*j$&^S9{txI*vN(?WQB`eh}cN6~sbd+?F zo$jcfD+j#C7#W%!KU=$M8w6T4H6E@+S<}YY*Z^Ta+4EgGAx-;G*|)D=dnYq`ll)*; zKh;Tn7^$lt%<^AfS_f_F+z|Pxd!h_0A;xiA5h{0=BG@;Vq0pT$cyUl=e81c~{~%}u_v_f}2Rx--yx z0##P4PeD@we~p)hhIJ|sBSIKfgJJprpgi&xxC-t=aY56sdkWZ*(6!k0XDdJ^lb(e? zM(Ii|Fmnemjboe@dxIvKPwXh00~N`=?@}6ALlIh)Ph;(@>i4)bL;5TUV&C*LBZet- zIh?pdnj@7rfUM-OQ3k_24&>Tg_jgSf3xN*0SzT-Ky54oIt?P9aBLnaIuAltke9hVw zTx*rabjIAf+^R95K*n88$7>G$T~)bn4%-!RYfMnU7=u2%ax3biQJp+#9E2>5-Rj=3@QxBT%1#1E~nMuqGnW&=uG%V0f@MXMkdgU zSG@6#H_~3@l&vIg72>{L6IQ`tV=9Ad%Kb(O54d*d%e+O3I*tReJ0Uspv&V5eeg5o$=ydA6nZUt8};Oe*eDd*eK$*AZUP z#RrCK{?)T0Yq-#C!23CYwc_K-la|6|itfI-e%SVL-8u79Z$u?*sG#xWL#?!EJC1?L z(Z5b5bcr_gKp*~W(Ct&rB-^Bsg)v7%+co-#P+fIS_2blDi)MK!RS+e27$2Yy9L@kL zIn>S--x+8E)#{COG81juGE@oFZEfCoUIHtDUBIdV7~okbOH?kU68N!EkR0VUSlqQU z+eyu8%XSwwMI;r(ps5rp+C3lK3M8kohHC};I9+mAxtc(zs!9>@HG-ytm3a9n9(3y4 zYJ;T&L?VzhcnvWriwQ;munnJ%OjfLtT-Xxx0ESIiS}iQ@LOBP`y3~$v8uT%`g^UdmneIPU&+c{KpCf<_`QB(?G0_}61jtAh1cr`5FxlbTgz3%c^rb- zd|#Mw40lEaj@L=h5nCo~fw3f4b?U~n)>e*xINo;07hzt=l{j8bb1{&t z**E)=Cd^zY%_;b^qNzIlsO^zxgSztcVv8i0gbf{woJ8GAj==E)j)@9Gx#PMvj@fl; zYH=+V#2;BjZ`*Oq1Cc@Los^QvO87C5_btzzfcz401~n6TJy9a%uu(h1C!OTyPnX$bV7eXkH} z)J9vLH*5eC1F>$+k*VXlkrfdb5H<^p`$_2i&?#t0v6??FqBBTg$DAvW;l@J?J(HRq!;_t%n9DdTSl5rJ ziE657Bei92VOgt|tP4VX<{?>EW-n+G;ln@v<~r&ue} zk+J&sp{xFIa?1w85yb9Bpjy$cU5$~wyx^|Dd%d+YG3{;GKoZ`~qNR6)fC z>xn^XWaL`ZCkiVQU*o`ND&1dQUW!$~7!s={aJ&rh#3^Oqg`+yJJG6X9ep;$b&2ed^ zn{0aptNKPO(mPDUNNp>+rvI8ROg|94a;m;HS;POIf2Xk;_o>C9Pf-txz;PTXEcj$w zh<<~qm&Lo5N?tW^!14F*|HYiMP4x@86JO`?dA7YKvEq%fckn!>sO`e{m0RLG^#BYh+lm}F`3@M5b z`u+Gk`hl-;fQbv>V-P6ZOH{vvq@oY6L2OD<|G?7bJC-P9^iTbL zn!`#lv#JG}Zen|1fGIl15>TBej3Lf%j83pvVVd&o72OU+VS?CgS{BVjY9V)Vc7MIU z@!ktI53w7}`lh9<_PPrz7v5_FA#giw;yg}NZrp2sEE;VU!F%0$xUu;mouX1hb-|C> z$$|mB_%!c6jzeI4)7<+!CQ$E=K4x>F7}BR1 zOIo}JmYuJG*c(;B<9Olw_irso#(}l9me`R(EA+3+#}#ZUpG1$OG~1TVna$#6tKQ8u zQd$Tc{^Yy$XAB0bvTF1}wf_!t7mALw>XA+Lok6`#K5C%;XVz-U*l2hwi2eCl z>3;%I8afqb0fw*h3;+2)|3RAJ_xnbyg*gp$oo1oiJFQIazI>j8eH-kFJq&eSH@@Gu zeujR?mYy4hsMkF4nvSr+*Kt&a{ziZNIB^Wpm^coW&w(qxB}g!0pb9<#II5O1(!0ZF zUf{4|ZN+?xWu+HvEzsJQtb~(FUps;U;Bc2eE;r0r6O_Zytu@4YrqH0+t^QsM)X``R zquQuCxqnPE6;4O4NrTU|I3HOeKuPPxWo<(P<($Kv+I-W!?G>QW zDoaaESeIBlrH+rr>5+7wpA$i~H3OXpSi2v5OuWWqZdAk;UNMugqa--BK9MGAtQ}80 z?oWXxLYH~Lz?Bvgsg7lwK&9f2W{q#ui?6I`#*$ST9NIcos)5#&pby!l;NX zBv(ZtsC$t9cy(HL#*|4Xth8QCijM*DBh093d^EMRxzxjyUEfhShPVWg3GE822FYBv z^id`Kaw3=(7|rg@&SGB~oK{sd>_}!wN|0GtS>=ijqB7d{*bsWUIvgm?aIu-IOFJxN z+=!rxGO9jer#^!;;^5@IuO7!~Bs5Q@5$<&X0C#JO(9Gl=f)SmwQBRq8$)HUih98F* z3VKiyHj+LPtcBmd|HggYm_E5fS-9HTJIxNlixMjN|xH)^2T+(StXUgtn8y^M*jbJvE2zU#R+ zR&0)n1sf8H{&QV$(|F?h`x{?hU&=&Q;Oltd`}+;JA~o3vy@$D=oF(XE)VemxCN>Pn zg=5SPPKVM7l`tEOK&>RB^hOVRHq6An7N!eCEyF-@N9e=8t5XJ&0Ny=&8U8?Yf)!cQ zhgcHGK7j_yST>w2ROTjfmxGKf3|d)xtHcrLljgJWFS1y5o(G7eVB*#NFC!IXrX^8o zh?OBwne;jIXRPEjlvBLsqUk@F(Rl>HkgZvgYcDE=;qd7Imd?SU3$myvnGyW0CHofj?p+z*TR4!Xyv;JbHAJW*7}y*J)U@Ru&bd z+WA-&w2bVN8d>EH9C!CFz;?(#0?5TNfAlH*>G7G8!A;j|`GtN(>3G#KSGc)8h$x=t zfy%(zs}ZL9lI5;vGk{pF0Wy9JE%^+hsRE5Fe8XsNi}&f5w5Qw&O1H#oHM&s>fPM)U zv+#Lw#^)w5u`-FW_QA0$dmFJf47ZkxB&gG4Q`rc2n2vP?vP~AL^CQMQvGSo8 zDk)Xi`1(4q!*Ps(^N@yWc9F=OIM0bY-Z*VwOdX!S?_Z!NRsi=^4ZzZ@*rwD|( zr)N}}X$NHyhjscWG)jA(2cJ2pU?G4nzJRJ8f{Js{(``6+)UuB23pF9p)rLK&bRXaH6 zKyEo3&hx;Eq{N|F8HG6&DJe5WnbhKALDIjq19X<#7&!b?yf1H5-gI-6X{PKA zj~ByIhU<`wlEV#gg+AQ#!QW?FKmt3Y#Zxffp53r6PE2Mk*^(iE%lO!L`=nv|KpP+S z`)-?q5+DI7l5}E;X4?XYTahp6Td-x4RxGRqjfSFk-5FJaC-u0(Sk2N+pjpHZvJsTQ z_sO=db`!dZnV8v`(lqS7l;qL)O-iW8hMa}_-Wb#20YwfE6<}g%TtJgwymlZXaU7$U zRQ_?-e5t*Rp59l!>A2(aeQQJV?`mX$>S$dq3)ujo;^oiGSj8TZybI@ac z=DkeCh_-XA5b($c%;8IO{bJl{2G? z7^I!pb>q5s_t8v?=mUjH9*2oPrY{yKbPCE>LeNxWR@iSf7OrB1~dO6zHWT5}U8^+>kPN^qU7s)t^qy@~4+HC^Nu_3pHmXMi8^!}1 znx|UNn|G+?BSxAcfl-Mu)S4ty^VTNGk-(sYr;3I?Ut0Do)bR8)*lC1MGs>z5%R(K> z7SZ386#rrj@tsS%2-FtgY}$|<6NQvk0fEpWk`&s9#$8cSiBc0lP+hY2-fHuWfp_f& z-uD%LZ*>5yV3ERzT9r}JvL>paON7m@5J9j~l)oLpGSo0_|CQw~X0($5S!^Jd(1}A! zq0r1y^L%|jmY}$BV{Isj!y0(a$^DJmR{=E`5x8^L@%o|q&fZK?;H?C*vTTC6HY%-N z=YY?FI|IYW|NMMa?uE63dmHY%8YSz6C(BEU^U$(hpz68;fuPgM?1hSC#a(kw&KU)Q zb66L~4G7TZfLWpA?|1#t9t(t`!PjNaGH z&4FJ#v9~fs$RHwc{ygydI*AC-l0Sc(_+A^||M$WbLC%T&j)$D6&kY^-wNY!66UYiC z9M|=RK~|h9V4UZneDNyIuZi`33x!Fj=IDAzj1eFL`!0F%c3@Dm-+dRzvzH2n;S+0J zx_V{cb%+#`dxb!A)`xYz2|kGQu6;J$7g^HkG00^>OPL9=>cpdtj#baENTCv_l} zadqTuVdus;MjIj=_gX;c?{>Z0_S-(au+nTfm1LYl(LSr)v*fK4vQ1U8*(|8OLpuN; z;z|@;TK6tCk0GFq_3BLs$3X4PaX8FIt$T~RN@bxf6Fv!W>%V8S7Yw=*^|wIer`o!L zr{SCfPbJ^_qxqCRzB0#cRsswnQnN8z-0YUT;z zzN4Lf#vLUD$q=AQTx=<+t@#O2RZ&4%F2Fgu^fV{O`5#2RQ2Vao2gSHpBn`8i(L}j< zIMaZg3(h2=SdYO2O^UO-FojWP1RO* z92WMeDpk|^q@5}iZs~#2BJ*2Eb*b) zz@(m7bo=wEm&@d#S+3|YGPsYCaCgih#`UhP=fWV|k9OG^Zs^uhRL26fFugE`!3nH; zDeib0?pnBF!^glpB%4@ugYF+996~pC^)43P>kab*yYyLmxzbO=onR!+V-S0lX>cyY z;#QsOpQPpdg(w64qW%msH`yuP(cSOGC$yzP%@)f#mXolObZFrHnn+Vmorrv zC=Obt64YpLO=ch}DQjhsDR`hNxK63+qm;z3PMj)$o{yl#33D&&7z}A8>7fy0Vnrv- z)sd*IO(!c5^lsv5_p@1;FtgHxFKe|r<~Sxt6=LgQcdtuH37y>3{%i1!nIU)d0@Avh z58SnMO^0Ep{u-VKc_tpJKV6D(dNpB!Ite@`j!tZ;kfG@ojMS!?&vQ}MWm$S}x({VN zhchB@?G2yC>MvbE5!|fZAP@aMdId!{L+u4K;~;TIDKDEK`!-RXy{Kox1mKuM0?Mbf z!-mG>?vzH+he{344cs1Q+<2h!{A}Ti)*h9H?>n$7ghX|qwjnbZeOss$npD|w*ODm$ z(*|D0OU9R>f^)=1A#fZgkjm$KDXcMRIL=q=fWAR{2!4WQWhCx9u)}aimslox;eP9B z`mbnZ#>TgNhUx~Gc)!2DZ~XecwU{3he_|mCb9D>IY{`Ok*1v_NYIbQ!w|1M%57}K3 z7{@@yg;>#xPhm{mWDk!}CEAB>rR#lnJ{TBOR4_BTo1{6ko6rC@62*?FVF3V+;jsQ^ zcC&XDHvIg;`z@rZ&BV&!I7c0?M_Qm2tPf}8s{7teUD3;qmd$S;3b?q{0J+zyISj-^ z2ASn`9Ewo}7RFke2U*7eu50r+23AF7CFc2s>w2R#*+mqGCDz^?dYj>1SGVf4XA9kb z>&NjzZUJGvQn)*m$#@HZy`N3zfjnvho^6+^2U;FwU>lLJFxeEM|k>jKO; zha*bOmK6(CwHf7FAqY_wCG7;w1}ZmKt~S#Mo2OiJJ8KFbRlHmn zM4H0<5BX4zUsA7+BYaR~yHz5G-x- z_YIJk9H69F&wI3hn8)a)wlZe9e{k-#w&_D>7l>{4F5d7c2Ig_5Gl5qp6S zjLDWVbd{d$I=f-cfn6Jlj0i~NpF|wx7VK(w+!s&_Ru{ewmsmA{tH)cw1}bnm+rINB zo_W}S+idfPVq6i)-`A>t-WUFP-*74oW0pwV4dFMW5mmwKx{CnUPw13AjCSR|C_xJx6YGdTSfqC-%zO+1; zO5@r*uy-*NIFAGC{+0%X#C83~fBtibV1&dVkw_lifb%lm_g1_Th4+2o^;3n7tc`R0 z!1wp+_Kt~;)?Z9_7k9V0v5hEXJ+U-do24>w9s7sr0h3G| z-7YeFy=FZVMxWFQ$2lnw4g(>DjGGS1F`x;P-XI=r~^O z6{`iB04!$Xxl3d3g?n#kCSae_bbcWF4aCnvJnpy9sly&oIveWK56}8T*=o#$7FeTU zPIB*D(EE8HwSJtD=`+PmNYSKBm+-DqrXnX#KFVA@&4Jhpc4DJ0fv4nBa;EgC zSaEGVRC>EPNAY+$%&QxvPLUFKA%m|MVP=)uYBL)$O%VIN0fPHpm5~&uKe_j=o}psp zqLs!q!bL`zw`;JB=NLl7W};BcSjZiqjiLwdz2Q{lX+9Cuj^pb#l2x`DN#rsu6wUNm zE0l2%rPt#z27rx~i)sCx3iXF}7QE}v8hz?PEe^RdND+F8`E)L&H)!k|fDAoirXPcI z>P4}0lRZKlQ!NfF0QVb{#;67E8xHb%>+k5VzrL_5K^C7Z`MnBN4y3-{5~2c0&5OT| zFU)!LQdeJsb4=}hbjqVm!#Iwq`d|UaapKqeMxgL@4qTUXE=a?^4IB#K4}amlH_SwU zx~`=~MQ_OIu23@vjzNrLO1kN-C|Rq!-dZHF96J_XuM@0l9`Z!2P~FfCJENmC-rH!v zec-*{uw&}WJq|q!BlLrZaG1&Mlo5if=8Pr z3{k*}&iUG`l%WkeZJ@8~z4q1YlRm7ho=p0#Dq{F#W=}yX%Dhi$TcmL_D-Y#)6H(&B zCB9x>y8`#U#Hlcec&av5?EZZX>6J2h9J6X~0HINk4HlxT+hS`ch6SvGYPJ}vvaMv;JaK8_0@(7I&KO7351Kvyc{ra=OeJmCQ1OKvL!XU=@e>)`3Nw zy$l|v)arL+5zaxY#3s*ys6OMEVrYc2^nfEHbn{_-UJ?ZPz=5hO$1rPS%_>&$@KYrt zCU+~q$v)*IdF}?Dx8`1jq)?XmjLT?1DFqS{0xMMkh|f}aR;ks85^9%$9|uwAz;zX1 zj$;nZ-5czr#b?*MqnF!%$Ro1-P$jLu{`x6ayfxkyD%M@`hL0)uSQfbMyMDg@0(=0t zG2I(_Gck;~uZ>|}tQ2(Mzkhw<`~9n{(*rARyxgBw4UqvGD4J$;rykCPRk^8(=Ut$%4CqHu!K}cO=$zlXH{++PfbndcY1gzmoni8EEc}fJ_ic6vf5uQOGdE zMsO_v{ojJ8zD&dLHwycfrP*vytXxQdnVV4w4lxOOVh2#x=Uo~FSps)%nUJju3>6?Z7Mj|JqpM#;()*N8Gu$ZexZ*#?}q6%S5}OQ~ZS4 z9tgh@8-t|<)1{`Xcb&PJs1PgPJH9!4Mz3Zfpxa`3!*_ClL!g?hPKab;zuy1~R~3#Q zQ}F-PgVpI+sh?wYbFAQpzpSxMCA-^s3mN8CN0meP!!uGhgJ5qw?_Z2eOA_4*Vr$HZZWKtn-rjHmXD z;gjSjQsoUFY|9U+BGj%i2i;Jy7JN<^M_b+1Qe9Cf4A68_)5l1U%q!lt;u~u_as$&( z%;~(>4La)>C+|CI>;!C_jG|Hu$60qQ-s{5j7vk1+_&6u_4*lj#vrd-reizO$dL2@5 z8~AkNM)ajNkhN&%(2!&V$dh?-l428@}pNzZP#EvK1-nUJR}+I zrK6h+#+5|H(uo1VGWoa4o!Dx}Xw=ZK$&#fuE7+eFW{(`e(K+G7PHXd4esGahGR%5c zFcU>9LxoBM5ADL{Br{>HrHX(~MMexZGSUWVI`tTcuW=v>Fc#-LL{(!b*xrjjAKq++ zuDep{3f6{!@L?Z@Et;q5BzJq@?oGkT8zt)Af&Yfk(1zlZcVN)F zd?8xc91|IOY>zhiW++izCWqr-3FC>4RkBu~3U}V90$y|U0%`v_;j=+X8StrOO+ZBg zVPsiNyBA2^Of~3FU0e^aTtT9WCIF6FjnbWGU#kVq%60*|^zo{JR+Z6^HK~!_j)nUUOd82u^p>C+_!_2PodBa) zu0L{!dL%VK6lcffUc+(Pti5-qD|D7BN_~0+JjVTTvANzSp zEL=db(gebd0*RVteO)V7?5YSLT=c5pJWstej>CG{>~t^ey%15j?i<%T6hWL-#?fR> zW!2?WEUew=fhSGW3NZJ$P^)<0~>qcT@YIeu6LOHQepq6$Hnwh0#m4*!(jCHOF+r##{5SM8mQ= z{m@{WdaAQoh;IG)p_9iLDhlZ8^L$B7aX^SET-74YUPi^rrjKPh^ost6>wBfJ5XkcFH4Mk1Myqfl-xPiR#Qs1ie+NVdQj| zVJ0@d*RE;OB@8nftICpPz@0ZtRo<#pa;HCieE7~8Q9Dy6dO2S^k)yNRbKSP#6%g>q zoJ<(5MK}{Z8{*yzK1NlM_YSPJmAkKG>;>0-o9kYBVOO#$+ILV;I+%!EgcV-)f)yDN zm~&FL;Q~r0K;`d@$8jR+jj9X4CZli;2f;D}=Qsr2FXhRPlCCHYBbthKmT;OEaTL;)dgbDzMY<8{#&7>!Y?v@;s+e9ei2vq^)7 z_gbhVUgv~W!b`h14e*Vy!*T5kW)cBj_l4P}f!H^WF>vo2bi;8RysoQ`G5bq{2Bt5} zW8&V|=Q{GfFC60wJJdka%vE_@>k#~IXIhk^CdVp96Eude`D%g$>jWRe@}>iq#~v-i@VPYSw%UE1`AdAY?z# z^J8)V)wZLvCtcaoo5E5-K`p~xOsZ8{tg0G*Qmw8mr(VOMB?MH}6vVu#_j(r<>1Vm{l-FOCOyAe!CIT$il7p zE7~B5L}^AAkY-4w*D8SbXYR^RQ%?mSGAr@>3SB#`QIt>6HwX34Y$>dY6w$0#3E4yH z(hJz=fM-ikiQ-_~fn!XLaU%B?{AM~<6<2H^iDAmjs|DkFV4^xhtTJ{cKUf=LQ29g}>hyu3dP&CRT3lt=ot@m|Ge8>=#<( z15sL(n@ZmcR=@Bvaj%6tHr^q>+brqF_TF+Lwk+TY4o^7p7Azejak@doiD)q^;B@7w zv704)z)}mnGzdTyz{ZVXLoKy+WB3c+F*PEZm7dDpnkkOA^TV1@M3eXg=&>=_nQ4hl z(HTm4Dmw@6vw>J8q;1v`*qg+!?|+bZVY&mUg2x<6y{s)qrMUn|Cqo-(4E z7{%II^EG70o5odJS=})zBimN2Q(R_NWh$T_Zxo4nPVRe^L>vN9`xq6e2T4`nm{xt2`jAC} zYHpFyS4%Nb9bT$%Qm6$C0wv9If4NiuF>Q~K00vDz#L@#8Fx+dYofJu@Vb0l~CpCV2 zI@|~E`_?ie^}r;Y*S!!H;GtY&q~wXyhIj@d@#trvjWdT4%<8Ux@u6A>TvUJ$Y=sM- z_mIA1n#Bq9_#myGtc2+luBUfv@1HubaOquAEp4HlbklgGkJ>OZ^&O*QUJ#ZtO3Tuo zH@A64w;Be45JMZyss&OHEE8K;SfM7-smP*~PH6F#N+@csO_`#BLj}UpOuw2tftDBS zl>&qh?MOz83|x|Sus7&$A!LPL<&Y8Mc~5-U6+P-QHl#`VAlkq&XFntp$%!EFUJE`5 zL?W*Xpmqw8Z4ALvLfNnq8)UC7c|x+YH##BK`u*}%ZHP>x@ALLxoNJ4#xW)`leB^R5@3Z|nluZ69hz76 z_g=wWI?b6&R$350*~vcTbQ~r%cSVV*i^^`AWmk4p#mut4_N#2MTSufyaq4Vo1U=DG zQ8nppDD+=q9<%`$YvYL^2mY%C@K$F(E-3VD@A6^Rfq2427D7I+B^R%ykJ+1=UD+vP%@3dNMmFzb z`0OZfpm5Vo@yg1?y@RO+cS~G!v)Z?KB|+dYaJUPeKOiXsx5`yWx-Nk#!vs*($(>v< z2i!qB9bPhk2!?5R`HAa#V=xKJe^pe6p_aBB9Bh@zMEOMI8~>lFx80FrNs=r@RLwk+ z?5gQq?E63C0yBM?5pMc1KSVuQXf(R|qN+$HBizkYMb2@TV%zDc3}`0r`2HOHx-K*u zaR*i}Xm8cX6MEQGpgw^wzfi)>VCn~29?gcehWKPDlWkG6W83&K;;J63TyI24fkA_1 zjKFMy0zEj*>jJRw$=MPwN8cKoXvUXAoqUWBm_Yy1Vo}fr1hkbWfW5SZm)gm3#%gjc zdEuhQjzPz!&k<4nqnfO7c3|7Z>hA6snpnY?mSOKGY`^C0S?Ep%s;{rbiXLU;pf%x> zTeQE$C>GdCEnMz^d%Gzw{^$LHE#PatP%Ji1XD9CamSGo(Hl1Wst)uQL>hE9xK;3df zvJp{T8rN{1*R88zA*E_>cd|R0LiNuC$MkX%m5Ib^UqYqkJZ@!zHB_Wd5(?_8!a>lj zm5X`4OdW0R?5eJkpA0j?Na?lsm{e+3xTfg_1trpWOCv{x^r{PR!jWZ_l_?B>^+eV* zuF0ccleW<1_*CHjd{}v_0Mvy%2S9O|@Qob>E){yR$a4o?`$fODB5|2mTlfflo-fiTDWeXu%yIMf4`WK-RH*j>x-y`VmEDLZ|X(grR#RFD>Pd_5%~Ig0noqRug&`-c7>B|Vli+p zLv(j_^Y!Zs?>`^VRu_fNR|rjr^4C%$C<|EoVx9tRHL~#9&Mdt>6}^k@DD-;ZA?Soo z0o6w*UxFn-@7Q(mL)@aRN3;PTNz;QqO^cP9IcGs`tFr1-$t(c2CY8&s<^V=8a#G;y zTHPe#K3r=nj6PxV>;cdh!NoyXc9X_i>|%Ns_AE)NrCKlG2gD=Ko{Yclj;!YW`Cwgp zVst7mm_Y4{zFmfMYl-NOX*%tv(t<%Wjy;5H8Jq=U3uo~B{5lyifN%XXodwM%pQ3*l zm3l#%O(gA*bBZ|;*w-dow;Rb0YAVe}tR?9F>>jEmA9d5OWo~>>k9#egI?|;-BNzU> z7`aJ&GI0-BfBV+>C5t`4r0Jea##enf#?#94^)o)Q!7NgB zH9Vrf|MlPhhPmU<_Z!#cU^Ti9KJR-j{61<9b7hZc@E>de}ugfOXyjgm1vgYqNQquv+3R)N1qqX z*PolCvW#^E`0~A=)MVq_NA>7|z^$QRyL+#-6|vP~7L`Tay0ahSw-$c}Ul%T0d~HX; z@F`&w)^eP;fJ_U9@BjG+orOgNGMdY+-NE~Q3!Dw~pU)ru>-R4$;r{uCC6MRlUYb8; z8tBebce?|b$;=zSUcZp{&AlDlS7&IITBFIyJh;|qKDy{83o&gWQqYu>4ekpDSv|U& zaZWEIzwf)R<*W*Tt7$W=Z$3nKh-jrB&VK#kJ3e}``o`x@#tDo?3jQFvx<U7#mdi|LsKxnlc9!*p|C;hjgGFvApih?<+mGkQ|x zw}0f-kL_88Y<+Qau8TP)NA~Xh+W-I{07*naRE10CqP{eS!MyOI6)h79Z{W>lsIg>A ztwdaY4J2Q`_S%m4+;G2ir^@~r)AZbCBnz0<-;-IL|22Uueqw5mUArr>UxHKp^Ep_r z1@svQn{3o;#FVE(U;Giurufs)-7ebJBB-#K08$I+#x=tXJ?tk3+d7@^X}(dJjy5`8 zuP-gNK2jCk_YuE%Z7^lN={~SZe7SB&D2+((ICy_P_|IT`WY0|9`?AgM=zG*obZ5aj zv)D2vy z6M+-|w7aprv|H$IcY|}m+gZ{0dhH>QKw*WFmZCWZ7&&;`+Q$B_`gbN-6&?4RaT>G@ ztSJv6uzvl%@crio*c_~uq8oQof%XGrUAXVi%y`~_dtEA=xZxIIOn(>Ve6;D@HVZZ);>PdmHPN=2 z;>}xiyWt)26Khi?cfjJ6Q*|DeMD_H{pSS-2L8~T7F!3&>ED+EV#a*So1*98(gcmCle_F=N3GD zYDsN9BN?sUyc_>|T{vGi{{Q?xnvr%-CO~iVCPqJ`+>p+jYg%Q6M#@$FBvFd0dQXJ! z=}4>otQjIO4mLah`_f}n=t1e<8yYv@xm66Nvzmwo-PLCs%2Q9u#-`6+)$A-R_ogop zHK<%&cb0o+9_0D3p(KUPOU0N?b1aH!QWa=+8=G$3U%vUi10Z`FHQ97vEi!M7RwlqU z8`DHpHQkk^ZP~CRv$tK443)a+wPIl1XG&P6n?W}sPggI-3FLin{rZw>3hb()8Sv}( zh4=Z>_x(S(&xg@Kw&VRyuI1R*#nUBZXlX;`+!f&M0ZVSW^RiD zHH{B*R>{#0BH(VU$34CrM>Bb`v!|Ga8CSM7ZRzjqbKdhV*Jrg#th;J?Y>N%s4q!2& zQCQ>Yy{G;|jXF|?rz+sw;O1DU>qtJ_ffL_Y_osBiwegw_LbCfP%J%2L9r*pP7e4Q? zsJd%GM?;LMwxfh@Y~n;>UmKshWJz_yIo}we!su-R?2V@5J|aFP4le2oyjCOYR=JD- zBeBc{q#lLJ^WjvQs)<71rOIa(+LsCe)iS=WSptBD96&h6XV(BWh&9#g?1I}S>8PyE z${!4+yK|Xp$JK#nwSyA*%55o#c9c?a0;2X6ioh}=A|}?eP~AMCGQ@TzOS1Lq_u&pD z8m%HV4c5!GFt)W2agWCiT7z{Ws>PvghYi8pxw|`At$M6Udrvmum9RkLlt!OQ8S(zZ{zgQeOlQYC7-vpFmI0@hmM{90qXQ)>e6s@9@q zk@3VW96w(?9VkQL`YO=|XO=&Ix0FEDkWFs-Q&DGTJnDE+-=^C9+J^UikEhUx8iT~o z+30<&CNv%S4ct zG_+`RxQ`T;l(GmK4Rj?=9xM_xLG_)5y|+}Wl(MV3hUu+Q+H&Ky9EqdEW+oDes2DYt z9`Hp$ole$&utIFecXBq$O=oi&&?mP?Z16QEm3&HOzz@3j@}9(wc;Td$x145ab%OrF zzSguTa~K;+ynMbB)h@JWriwZ9d3hGzRgH6p?CRSAv8K^1MBSpceSbij6eR3wUkiWU zhsLEjlA+fE?$3dlKqc?b-M(JP6D&3^?-u1)OOA@f4Igt+Gb^z#M})xJ?z>S3gt1cZ z)S^#Y?exhvd^v&(Wlj{e1OU4-1hX_j@~Q^^6*@^hoY`*YYD4wuK#@%ts;$IJz1d1A zP>Q5wLQQ6CerNRnQnE>Kt-rNiQ73Co=>$uidh68r9DMq|}cRF|$I#}udAjYe5!-Fg;d)Y6EFrC2?(HKP+UO7lbVVEaWYL(l~FQOH=A zfOPz+y z)tr!IHOAOJCOiI-=!KhfW79bb zBt0Oq1J;de6J|+s89cgy`}39qacwYb=H`Xv_cttd7wzmV|^3*m4t_7RjD% zWP7u_VVM6+2A&GFzPv{Bnd4AVAe(vBGyS)+x&Ct$L4W^8IZT@?wq}>tKv7oC@YFl`+>s z0{~Mhh28K4WZfDi*f5G(JOUfincLE`VsCM6E5<1G0A*@UZ~?OgbC-O*1Y5GF!B`1q z{@g%%8i*ppO_OSfZd#P~PZQDkS3x9~;Zrs&M3$U^a~qy0n8NpS*tIsUNkZpnpFrT( zb&)Fd=!;4MSiNnr@}57Y=ru*HNXzCh(d3%;AB(LR(;zoP1`0RyZV73fPU~us+*%`Y zHttCA9Sn#wr{So{dfO8{C#j}Qb>Pl7Z2ha*{8Tmn&t-3fvAR&PD7 z_>P0P124N8mYq%10B~x!zO)`ARCjm64bpLCwp}l{3kjIWu1?g_-lMa6Vqlt(7J*fo z&$O1Q%LVVsD&0i}qpO&WYc5*}zg|M1hJ?jzEsd?fWriF)rdvHC2ddjilnuud_N*ev z76V%sVM3ZJR3ss}zj7QMH4mtq0 zhCs2>jEV6PQk}V>1GDgL+;Q+Zx8O$v*6-ghyx$*QTbzJD?;Cb~X+GFbK>!flt?=g^ z`1-GxW-b(BFHSr(iKP4zYd;K99Ls`w#s9 z+i_i6TXkPz6wL3lCZ=SzbuFFi`(DJ}7cw<_KOI%0jpI^a5tKxD-QK)QF}JJ zXnorKd59I<1Q61b7=2MdCNNWfRX|Pna!V+@|>cchL?T~N;N4HvDjl1{StJ%nrl8sHrFB5 zOu4tV?T=N)+H?`IMpn1^q8U2!Tl64Mg3WF?$h|izif1b6nP^^%)r~uXj)mV}zY!;> zWvQ|9;3=8s@G8zJmZ=keg1GOX&{PTE#;BaxVM|XoA2M=)H-p8Qaxp*m-T(Uc|3_ah zv^m{gU^c(+Z=5Vt$~XDN7v6WxjiQiUd=fzWdSUfK+<&;~DC&BA{v2e>xDqMTM0C>W z;4sQh2LJgST$cFt>jhur0w-PMD3Y#m9ipYH>NeaZJIHA8ZTRjJ8yD zEcA(hx%2xI-DdQCf$Yw16h%fWM0X^ovDFW?>n}8_8aDDwMJ)6HiNdKu2shsqWTJZ+ zn27~mkH^k!bm8IZ_+nM%0xqtO?sn@_pLOfjpP z{v=By5fwY)Cz6%35OKj^6{#}d&Ku3vEIkY=s=H$_To#J?7@ ziTiP?%Hj(qa+Z#3roJ|Hl%5v@9#PbjvS6p;m1b+wF9OJH-{K+j$HAugy?kl(%K;?o z#Dn+bU7~Awaw@|$d38nm6mH?<-gVoel^#0O_$Ml9EVSn5*lUj(%8*6ClyZ>gE^)fh zT3m?-JaB&eq)rUgfrP^=z)EHS?{|TCVeM&p-HDTpef?5m;sAw>XepImTQt9#QjnJ+ z+awR@#C>j*FTh@kC8nW3eEm{t%ie`SO zn!E|#`1{Ae@(YrhD!28b|i(sE@n=m|0*k8L01>^ej=buprt*&lfm-GH}VC!l#@c(>1 z`1kLxxdVi9ui0F_JF}z+GcjJ*+8CJ+Y2$G-lTDqA=jf`we05iFZF@RH!nTjj1Z@Lp zN&b3$X~vfN9aK}65asefCo2ml$BP!XX4|dPlrQH~jjU7biH>#1Jj*d!TZ0n9@aN6d zE`vvON#Qf<8*YJg$VMj_oq&<=4mhM<(4?woL8B8pOhp11ktYTy|4`5pmf~NyEmQ|0 zdXRh@-Nw8FHmV{g;Wjzg$^6bSLZbmwslZzW9X>XQGOV?LJaZB#xU0tN>lzxG;!~A3 zkdqTGInSOio<6WD{@@XkK8VAoHbV|S`f1zs*q-&zG*;13TYrYh3O{BLQdheV%+sfD~aAsGLxgazl&5?0fnE)08xcNKwT1=ccVCqeJTR z4~U^qlV3PhT!xn1_wfz}?nv4;hzc=1~3^$g)bSpCA4``R)_(^*yh z>-WVa7N;KM1*~m^Yu-C%Tt+G{eJ$&%B$DuJFgH6+ZWLCkn?FQb~YNwE-hxAL>u}%lybJwiMFn6qzT?Wy+<^YS=}d_%ZSSWADUhV zN3B(gj20CEH9|J$M6uc~16H%}hI!(8ZP0FH0a1o(7n%*gYcF1FcYT7#53YTU(P!%b zA~G!Y+E|9EtRiWyx#UaPH`Y1$@87@R1Max|3+LQS6zp1je{Ss8g`96ll(3n$_poer z#LQDz+^X@?CrC12=9K_$V}0ZWZ7?rgznhG)#7peZ(mAFA54ymZxg_ykM&T-Qn*S*kUwJSHQ?^&|sQUu@bB zx*630(}7#3Csz)*s&Gm+2wj<`E?$uIXvv1nSvvWcE}rfKTFoNZ1oF*zs+us^Ql7R; zn9t6hQ)YGMA$Ij^HKIT4P-eUalwOZIrwhwU;H+-YTrHor7DJ%9XdU%5q#snI<|xIc z5FUbD_B{S*Y?74SM&B(17#TVa_Jj`mfqARJVFV%?uq9QMzH4*xcbX9urSIt<6JSPP%ztcC#tKSJiW}y}wKl2~$>Ohn|HkL@Mt5nI)`3L8 z7xDh*&HHnDk^EYQvQ{IO#=X}xUz@LMx3yw%T;OXF&Z4=D+2{M<`%bLaMRqEMl*5f4 zV*E0WSXiSyH>E-6P;u}5mIX$CT{|F3vD2Pl5Qwav zpV+G^^9j0P8Tj?O@c;b#-?Ae#CK;_4`}^FGWMT>dT~bz8HGcgP&FZ`l_SY9WQ^$YP ziEl57MPWodZKb8WX+#SNM+lNVF_iXC(y8w=!GSO4?w%Ur!`?L?#29hPxyn8K2rm~COx}HqIL^EY| zNVr^V9}zg3ZrU7Mix{-bI_hb%8N1MT9J;YD7kjreC;UrhowfnQpeBrKA~>nMpa+uE zd(jE7GeP&=5#IzG*Y$!v2c*LWnq;)KkZL{lbVPKmA3vCJ#4jY;gZm<8);#)yH;wG?6`;<&#y9-QzE!DNT04$Ya zR?4huf%h#)eXA-vpOP7!8PRYQiWI(B4+%3=+n91xq!F#F0W0`rxGp(mu1k57D*bG) z{erEf?!j{_u5lE)KQTc%(Q4Bv@sio&&*T828ZA0uk2VIGXRJgz_?{KNdF(V z1AE(#+NR{_L_53cs9ccpitB_jl#0{>j1-BgvYsNsARil9q361pd~~PC0riMCP+A34 zQfNs1#Wyv=aCf3&_Woo0m<;swW#R>-WBZ~yev6+7oG!Y%WUN_uY$85^eYlD*slR+? zDyp=6%a(8?R5Szc3cw22{Ju3%8`)F~2q3tTzElPB@2mu8cN*KO$BHJQ@J=Nw$G7xaP^l94mf zblWI2;IeOEVseH;85vcm^|uLVt-NbP)mE7zgfTV6HT7q#`a#Fe<`l~v;zi52y-jHp zLV);)qp{fJ^--;x(pp-GSL6K&{OfDuWuPc)`hmT^HZl_CoA-G)p+k_nqfXG+ZFD3X z#sxQHyzgGi@p=LG|G9xmRu+<{{iUDw-iB-~U|+W2?(B%pN<@*Lh>j{9as(VG17ax|00?3w$}=VV*017&57n1${8#UoDx-8r3z4^WBE=ax<8dd-MUbMuF~1t_aW_eiid0g}9sH@`ca)jkPa)ef>s=KMm)lj70^^if!_0E-^*)r@BM7+lYN69e{qTFdT~%01Z>tl9 z7sVeHB;>6oSOS-8spY!W;vS@8bDqU?WELY5`}Ku8Zk(|j!-rYmIvUwFxNET@yGH8t zT7~5fmi=HbHT$LP5d({MGjLip`(=n0>TsKu8H+?HY$xDJJ~0`k|B5lXB0ca?1(A<+ zqgYOy1S%5SE|9=#!;v`~utGlCnOT_GPXkXvOKtkq_RAV9Cp2zgi+FYqvjKMLtTAAr z=o>X^OKn#t(>wmym_kSd`2%yTwm%AS+mE@Aa6vm{9;r(ctOLW=5AK+13fdFQ=LJ{RtY` zr6u7+zpA^z>$-4GbY9y5q!Ld2A&05dkAgo`)1+NU*Q zh(dq;+T8nrCo3}MBy4XMt+8Ir2%Ptgip1CJ)j)A=!&=e{*Pw546^_sY66!QBFbfi4E%cp+B<_xDnd-nH!xZ zeHj{iUn-8+FfI@{AMJ@Qca$~n6Jr*auz^NCn1T68LeKfBLHC)YMPq-x;C@ZQXcTKy zTy$?@z2k;$N2L1iUzh8R;5MCn#fG{IUzaNuWDCFc7e4nlx@T-r%GKR>=qnz!5WpyC|+xL!^R1s zEALpGXqK7cQ4eIgVqow-%-%w3&N<52dU|zJ`E~$Oy{{)BOY2i9O}*pXyS3MvXtK$W>CrG^ZAnriMp0# z|4<{Uw0AXQyXhgMDCNT-A~Q7y1e^E$evAg4akxzLv+ah@Nzmo@ntK7&>fx||e-L0w zYe+?dN0xJ z+UU~mA!lxF1Q9u{J|HrNkF0UfgDGtW(5-Y!i{nu)fq@uyvgJ||HvWBL2UPXZ`f_L{Yv+16~agUwxX5Q>_)j7Wr^md!I$Hl z(y7LJuGbF75)_UdAE^KUAOJ~3K~zbH9vEdv{@J_Ju%-%}rE0Yz#|B)EGbjc^KE0|y zcG9QVTj(E6RL{)Y#?uv%2qvy=c#UEAzUP{9$$F6~3?xbJUt0^fIzI{`8wRh9O}aW| z^}b9oxzJ)ID{(Di%?Zi?xIdAy;V4DIoj4unR8#Q2546lRW_odX#z_7!7es2x2IJUPO&bg5&+@K12Ues1 zsJF7sO1GmY`|O-5&CJf7SnfZ5D}BAX|Mjnb@!$XJ-#T$S+RTu*{??J`#YJD%=M2Jf zZ~}D)xfc8~+@HI%ZQ^9ZjDU4T@VfNkyh90%2%RuTgT-XR%DTGP_vtocWFj&HHJVbe7}ECy_NE#^y$yyCpb4d$}=7E?D^G*85wL?v)+CY+7^TI`WcmXT$n z+`=rpY3#=cLn<8QmtN3S_)j0V{XFb7K|2#!y|z}Z_a_K*?M+~s-GFcdt_5`6KSJI- z0vfrQxb+3b&;T94z83y@|AG1ci+yco9gRxGAQ;S^ZjQ2W&BHjVRTo47t=Z7~bECPC zG@S3ly*841JDM+Y%)M2Dk>pgO*X5MQN}FIlywovTR3z5YQK?f&gg7b$_%@*z>z)N! zplsoDZg@A)OLOGc1_y2=_mtzl6U~J_3TW4Seu)wma-wVY2m|KmIwSkdnp@-4v8TrNZPDV@0l~K|-Uohn?s&?}ev#%w&(OoWi&)#h%Gstn ze7mknV@_avpoO3|=p64BY=n~{g`tbMzFvq7M(J@_9a!syYnebh6{yOtEYe-8(#$#O z66{pKK9lC&8B=MtDU(gt7(JGhHqEUS@&Kz~Xl@u-;=#4WlaUsvNAps2mb6?1_G_WL z`_5v`9q>Vm>injcQJcC`Zl=VIobLL)+h%unWsp8CEQ-XH6`*ao_fT-(@LqhrATaV1 z_sp+_eSJPs)F`V3312dhFW?h_Y_Mp90#NxTDls;I9|MfLqdC>-DX;u~eNh#4#ZI9V zBfj$klDO7ImZ73~*$WwgeK~%ujdvW}=iv4A0(>#!gRI6U8vpyBH$EqcN?0m_c_MjA zMqcyjjwQft_^!j{K%As&@r&zqF>Y1OeKzM^&76g&>q~&>#KMDL1$^seBIu$IL@8m* zAzHbOD!Sq)8KD79-_8S^TFlNsJ7e_eJVVFRGk zg748kqQn*d`LFGg*D>{bRWo^t@ur3D`vfWpax1x2oH*m=sqQ-u+8S`#bJ(AZwo>C#!$U9>du38eF^<1HotOqrH9M4 zE<|W9t-SD|*`;`vEuf0->>Q;Ltgx1{kmnAV?Y2ru87ncSZt0Y=5(cNQr7)VnEz>O2yi|47X<9x1w~~`4 z)2Rf)QO5LEIZeBt#+{NZjJUDf$BSAlDAnLFcA0KdlaL@VbI|4!ZOi`qdm(`?Mb|hm zpsduaxG-ZSM>BCE(MT-ciatfmjCU>*J>{lzv_z^+Z%HiIo|j1-HB3$8hvINlW=BBN z?6FE_bU1MN8Y>O(`P|48=o9d-4K5WFa7`3P9Wi>K{0*+EZ5joivbqkaqH=28Q7R6+#ewff4W^pcg z?LjsBT;f_PrcN{Ob5dg9F6Id=>t2&=%7+oxFt)FLzYiCQWsC7CU_0&uBvyk&6lrVY zw8GLaGo1IC;wzeeA@D#K&-q9fKUjI?Sc_G|+ikmMPrsZ$KncPDE=FjEOy7tCzI@~LT6n+T^zHM4HpVK~~3ekmyE$hda%PWe? zKWLG2y%qp%@=s<*D6ZI9-I9&6k8nGf#qHyc+`h1uk3dS7sIPUkyR!{lIAU6y8;i~D z=*kb{bQ=rz{fB77`+a(Cvd!9>xI1|6X!eCpBkQduU>AjvR4Hbe7V;gb`H2a)#5Q_a zZ(lSobVqX;vKm<>fo$k|=qASCHe#8o&(Rxz z$`7w?I46)?Sl7k(eMIV_Ax~mmK5T$TYT11G#^(-Q?Iz3VdjV?8vAeLh(}V1A3x&LU%xKQ#7%5x9~*FQ;VMgFMS)Zj zD&VnmM5-F~$RNVD8TSmZu%|;Z#ukj}S8`TuJ)I6Gd+aO9j;TXKYww~SvU{rJur+im zqC1(VU}nv38c(~6ojnFl)vZ+`>S!`EVXlp&$XzfneQ1eH9E~4!a3hqwjou9rsbIhADvdQm?DJr;?hhJE`vl9%?+62 z_t%Se-0-D+xC5~AC(q2!`;GffZo81J-`}Z2;DyfOaGmkQfgTQq8~KS8)A$57jo8u$ za5RYRV*!qwB{@Za?(AAq-4HWzrTkMtC%x#INmGv*za1V(X!!=qaWs zW{>c|H}29I*xjI^qQS(!#@@Qg+~*d$AU}v|8FngQzVy<1b}hr6L58^5w7=Q;6mxwE zrVf1Vh0lGX`e0wW@?5@0`X@1Go&&e7)6)6Og6yDZFdfOb*Y4;TUt9h($}%(#v90m| zn~0eQkcI?szZ2J`t1s7!bZ=H8qhZ|m+=AJ>+#A)J#Z|z$8ddB%T_m=FiD;YCXtl^Y zz9_7Tfp=6#iGb$jO`VEio#;L@4+Ls1MJmpYpPeC4{>Eq#ASl^{SCHa}>y-b?I=DIeUqTSsSn~$DKhNnQG<1cFO#1 zhP-3Yq`+N)7hS;o&<*Z+STAd=b>Z?$DUBw$?3p0rYnh5*kG$8(%YmRivo1j!ScOg3 z4gm^=7l6A87IGrmBg<60@JF(lS;$jz{Rtq2ukH98{j7^RAZ3L(SEaFwZjm=4zH#5* zz|pAW{EMRqrA3&fNs(a~7Fu%>(beEc&Kdx`w!?u_pK zyaQjCtG<;5b`JivWE6p*VLAL?jf420O~!#Z0`__Ps^Z?=-2$GP%;~a#jFE@-!%T^| zan3aGY@-_Zj-Cf|!wo1TXVxMH$3y&kYkIw3-q$jG{T8O-#9@TM+h5hMZH#@r7b>r*nOIzGBWLK|iDUDi0ejgMUJG2?U zmbcUC3veqMAE=A)dG)Y;d$IzWb--x2^Wb$Yeg?Z`oB} zQtYu0E5fBK%S4Q%h8Lu0CfHepWsYTHMOPP{2Ju{DtRgbi?q%Grnx$E3o7*{aR7n7| znvfkNp&aCP$8|ZP528b30&3h+t_)PXGn+W0wzYJxPT!ULN3 zlC1ps*ZLr<*EY8y>7_{5d85?7&sNllGmUGGKhD&&yz|!1x`{k0%+M#(3Toc}*gXh5 zuIBp`_MB2+Ps0(Tozh(0EYU7KP*(T&?sW$0zuf9tL@na(n8x}>SAaHL=5BEc1}VFi zZiZyx+C*irqV-a4*;cAc8EP6(=mqkFP-1ZO!j?!Qn2#{v(oUq&o+bmH8=_xEA7 zH!$D5&{HEyp~k2KTJhZ3uj{|imgw=|ecx}s-*4RS=sLh^jgD*+{&L2haQE&7hJ|`L z3ydmw0o~PW863rn)&I4eZ~Xv)ng}4si;m@uy;n;fqmy`54XF@7v-eUthaFEf0?}-@ z&E${M9GzmJnis2MKvVpwD=XHmF+x?g5=*AXbrlv|$*(SOH*D*>nAPK}TwpuMfXR;s zaB=&>eJAcX=mM|hN+hl3y3i-yG$Y(v@UtkyNp`VaJqK0?mMs`BSR2qmc;gd?FMrAP z$&kh%6M1fQJ60vJ*J5PIb7qZ*!?i9EwwyCZDg3@vY4~$)a63{eD|9IWVr$`!qEqu+ zTN~^`*1>iC7w`Mlwso+PRnL{dXTdUW*Da(U+TgxH7BW9vz7+b+L{TG;wP$E9rm9Y~ zRd~7M?wTzt^utcnJp7Q|YY&GHM|8 zk6Ma|dThoc9i5Rw&z#i7$iRK)lkGq>;0U-usT1miB|Ku z0BkVB1kczi%zn1ZI+ZS*3Y^oROVHTDk^-6zJatzzlFc53pb?OosYHb?f_4)%@)y(jGi%$ zmGAYa`i?@mL$2cr78gP8(B^6VfMefC$GCA z+|2;Yhr*+Jh9VT9knF0=hM(DF13R192Qcf*#{Jyf zsq1z4#XK9m)f9DS%SfYer*?^jFVp}0S&qt$k2_zmJFB^$2hNKJIix_bCumy8odT=G zw&>oVCC+HC!WYd0?v2Jq^+6$EbR}@`?v-+64a$k1KBCyY`;2 zq8k0U*rCj>{-dJCO&$asbdFa$Np8!^P=Q&jB!lY*y^pcS*q@X#n zJ>#@^h;uPkW^ypR?bg+!;dcM^c2+gQ$Wa(cw6j)MCNhtbC8tp~e+13=CaYX5F%J4A zva?jbrPkKnVoZ>f($pP1IRTAsuuO3DIko@51eqc+d>Fnl;rPF+CvE^aI zH=u}rBIBVmL38XD*P~n|h;EGxR)o?4QVr{tW%aA9psOB__E9a7fB)zI;=2AH?A>@W zX}qMb|H&y?gvKNk0<=0NYHIjD|Nfq`j?`40g8f{dKqqmd5KeeFD;rlVaGJB12mbo= zFOBkM+38+zZ`>#G(~X*gOI2gDarsikdjUJ;R^%e0_M9FI%Vyzg6q_O5$l~PTn|SsO zn3nq>bXc1#uh0}qR&+Gia7M<_1>y1**K0><( zr)#%_91(D#Ztb+-0#mKv-1q~?DM^9A8S@F7jBa-#)$+Io{oI?^3IR>3dsoXW(2YFoqSHy_*=^G3aK#7bs4?VjZ3SMY@dUIm!70+s zXQtT5$|jtd+1Jv!;d$;h*Btosx%5MvEw8!$B0jBk)7y%r3TL?h^Q z2CAA&J#gC%cCB9!`pyk!;fiVGHL$Kr55yy&3|<2ZG_HDKhXzBRt!vwSF*(EJorzrs zVK%h1!G(fYwgw8nk@>(~ZOX0*61JAVnS-E&&HGVYkM4s?vI@;XBnmdxda>C?toMDY zy-GyP*yOcv2mbZvgB9~&GQ|P&NdQH6YkfC2`V@+s+INjuR}VL<)?)T^VegyB-I;qx zi-offzpf90Y@)C}3u}GRz+UDI%>f!ipi3im8_OL?QT=>B#&2_Oo zv^?xSbpN!l2}YxLr?S}Vy3j~G=SJ5HU{zfPFF$68h$vN|nH$+tgetKjI5A9&Cdka4_s%K|jC6*UDwGv)++3SBnou-U|()D}C;khwKiH^sm@#&amJ<*CZwN4 zlsb9*-1p2sRcCGL0X3nkiNy4O84CQD5|&~!qNw?zp|EL6XQbv*K~;O^HS1!YYIrgNAdI(bi$+ z9aXSpxzJAV3O%M8N>_@~jQM#|BHBD46A{!HpxOHr8EW#Wuddi)rI>o~oUG~W7%c%) ziJ++x?N*wCS6FKg+c0mKSNADck`V^Pg?+M>o1T)P;8tCVM^QySz@S@_Uax3owbT>d zRXHo95+roM{1{GPO#@`fgd!qZlQiq+e)v33yUB{3*{D6h8%w%7zHb4lP92&Xu4^?v zKFiGp^1%h*&szAu|Na|gq+JVDd*Da|UUrt!zWa4xq2QYt%$f2Qe z1`4}XRC^n`CbowRT}Z8a`zDv6SlFj{alsiAmlH6GnY0%^&ElGT@2(!l-sq9Mr<{fV z4|7=K1ubq>=#P;M8`lN&X)Ie@vF0I2Mat0V^Qa6Ii_e{Jfs1#iqHxm|w27=@n8ytz zF79Vf)Kf2yZsO#|nO5uP6Sywqt` z$=o{o0BsBb?z_wM!EftEajn&j2R|p_bcM<*5gup<;&Q-SYIL!Nb@EE<`$uzk!$DT| zT${yKmh!xb#^tW1TWR)-2JZ8Nrw{uVN+EWpw~Qk_IjedF&#h&h8IdWwNhgrc)&nY* zjL|hUb=PN4zZ>Ue(#tDt0rd5mzE=Pp(NU z0wvpdg{gL2iOPdsZ=Ho$W;{{wBz7goTcICEPpd1{4D)wYbsBU7;S}3~C=34m6uy6M zUdvDi2nMPPr^#@~evWiYvrGvBc} z?&k+zm+J7H4ZFlQkL!Z_!gJ=kk~vLy;wt?;RGCk;-nvlM_=K1+J+j~2sh67-%mwfI z^SSVx!aiqe>;o90X{L;$YLLw{Wv*U5p2{F19tV5fm%&`Fvr01<}=Q2X{VrssU=h)pdpo(opAM08=V(wNZh+ z-No$Fm&te(fHUN~YMWD`2zb_{fHyz)HxClmUw@&_QCvs+6J~eUWMOO8=$X|7c*Rmw z#Ee5L>UbknsyS0ggTe}H16U@4mC4S_Fz+CG*TJ*862I4}ttIz-Y z)@~MO(?4HZOmgECxRHoyHinTalyYDb&(F&5<&%-B)2mumt0RkvNkJuO`mc(jK!f2n%sJ&Wj-J$ug@&mPOE)9BZ%k zbP@~nQ8KY~P@v)CYi@RrU`e(FW*0(Q01Lw>zOce!t>xv} zH=M~1bd}>YaeY3jBiGgg)*WHWq@!geAy?}XB>>2K?llh}lLbhkV2XXcq@>QGA=(A( zm|SiO5$cz~uUvPLr#A3CepSv?EhnUS>hKC-4e=NQgLwr(1~QuHRW->Ot= zvP_bsDh(Wvd=7IQ-6s!CwRurq3%Hi+1tPCu9{|tugU`RdcwJu&k?mM+C=x%<-#lIL zWw2&v&SRzD7eh~-y~eJt!$SjtScSnBX|C}|d`v4vEk48vj`)M`owVHj=g&nm$}V7u zBRC>X8SV2geE&RhS_W|c{J_={)K30MnIaN6T9h$M5TR3rG!d&Dghj9>QubDn>ol^- zM7}IzG>JP?3T+3g_Q1%Eh{oBCy%W9yeg%-6dHwlC9X2VLySYX3x|6wqhA zpQJLO1;de5s?D12%xy}3?0gB!fSFM<$D=yu%(oIiMdy&XpsrEQ$hYUNZ^Gb;!S}(~jh!-SzqeszA&vNaE*OfZx)Z@-2}WuryTr~B z5o!KOH45Qy3b<38PlP(DO@?c`eLqK$i_ys6RsAw$s}r57)VhJ;a=GlB(u#Gju7R6V zbZ48Ly7@#JwN!I6@doJQlqoxtY{eV?1lLZ|Pokma;O;0)}iXqUl!Q8G}#gV_Dx zRO0Wyf9Pvz43-in1c}9f@fU zLKqOU^M_fBXwmaAO+K;ZTNaWT-;l3aE<)AxG54P|<0HLt^5FvrbeDT>DJ+zU^ zijL%YbXjBd;3Og@J~pN`xv(ZbOow&woYo1R)^FTQF)f2Ael-vKu?@D`8JhKCu2i!X zcXcz2XrnQ^I}<$nNDJ=K?t!2CR+L%MIIgwS*#|X~pT)sRv@;}Pn$pJ#B|gsCd@IRB z&z=Nic>_**|K@J9Ibb5r{=5}yQWGM2CvX}w&ugsirV@AW zgQ!|S?^tWbPczdkqf$C5!k#{GqatxsRPI#1S8f6(27oZAzm@B*cQiGqE^{Ogbxu)9 zK=h+x_}6?+6r(%OL5!@UdkA4&&^pE>FV+7M%e0TEOe%Sxq{TZrfy6do%~3B?$B|j? zg2m+yXJX9))6JMCMQ4i`Oktt&Ap!jP`r_G%Mfn*YYFk5;p@8QcH*jI6WDps zC1sdTRsAx}bPo>bilQFu8Dauw4hRk)tySQI9oSU*^MHI(~W!UWBzr0;V1w8r5$4C+;jtHicxbzE*34K zJ&b17*N7chL{@X}>iEfjK*(JUUwXJoy-n5xfcKMtlV;XggK^v&U1#u<=oQY|311hg ztQ)QiuNh(me)6VSb>U2<+tA&enM!Nf!a3D8P?lIko(=R7n}CYS93@DkWKyQD;d%(T z8@+7o%hI?fR1&eKQdeBU^R?bwVn2vW>@QPT-(%G2&P;|tI=>bJdhizssWvQVQ_b$e zp-#wV(b?qLg}59)S{SyOb3X-hN9M!->;w132yK>iniM-Z;sQbLb7O_$a~T!*Z)8_H zgT=;CtQMAlLvWX!$=9J4D?pj0*{OebRr7uZ-p+$=hvDE1WvyG?q+hk@n}pV5mV4S6 zG)EsTg9Umbi-wY3N|TIfsy4}DfxX!!b4nQD4t(GLnYpH}ki!eXd5Yp{IO^zk7ZIx8 zDqAUVy3f_qb>gqxziK9$VwafA=|SNuY}gNHW}EoUXy17zy!eh5dO$yhumF)bsXV&t zO{ex~4g0W4c*v5NvQKHwifOfyH~`|Mw{?z_?Js^VYiARgO}pR>EMCB#)D3}aT}tv~ z{(^?w4Hx1a=izgGun+j}yyrl&@pBI7Hu7B;pTxoIW7zv?jY|GPV`~}KY_G=h(WRC? zUo&6nZY_*Wu-7&?kbyi8LF3}%fO<_*@yne1r< z(WlT&y1($3agOAxPRlk)41Q0%Cr5Q9kBJgD91WC_498RGa}w?!q7%=4cm+F*T&kF0 zpMsZ8mU&3@g*rFxpWXLU!-8mbA7qmkFP)6lCM00^^Yt~C*v8o^H8lcJr+BSE<^5ZS ze4Yn}n1z@~SocX?;ZO6ru90?bd_IblppxFw0(D8ex2`3;-XQQ=r{m|m3H1j95bPRJf>d?B{*OrLJ)joSseQN2*hLF3*> z0Pz{+xPUJ2QDjOu6Xx}?Vyjj4W`@{c>j7VAf;GW{cRVi}g#9CZl+sxp)c60-3ZE<3 znLUwH9Vds(E;GAs87~|LKB}ox5cfLYq#%UTUEP^H=d=w2DNCG!F4ug~0H06Hi)SRL zy6xDj0X4WfQ#%CLa!Ak2l6a@P)zqy1SmU6OoSn5CSAuGhP4h{>1-eDY2y>qK`K_-H zs;3P{#q7fL?`jiEB~vHn6-$GnI&_b&0`Kp;*VjddYbR3R_bm-l3`@mf2q&r@?44M# zXxjhi2Kum{yI7}CcdM+@2_R7A$WEre)O<&q^G*&P^dr=PHg0rxeTGTIGL{uiCu34ej5G@w3brz8 z0Chl$za4>QYMf(1V|BGu>RkzgI6gC2fg+YoGrjCI+JT-YBJVO=d^aOeTdJceQ|raZ zw;nygC1nkCTA{OgC~@YKU@57RT-GS%iBkOL$%khS&lr%b|k>b8b~+DM1hZ^f452apxGlZyf-d5GwyrSTxiElGD+iVvQ-#mvUy z!Q485e-=n66kRNhHqb7t>krx*_s?KdXFcUt3~yT^OtZjqHa^R_-0<_<3WBVQ`E1Q^ zv*4y0GUmHTs0K{xyDw>~7L-4C!9Rf-nQy(sp~3aEu7aqZ@3<*(l||$<+O8FoVbTkJ z_r|q+STwRWYfkRsS!5{ba0Jsb_qWf9S5c)Kg%9(l#>6N};V-BB7wbBTs8-7r&}j8? zDyfq#87>$4v=UWIW7V?{JPe%=&LOx0*@kMzPJK82d|f#CAnU*_Bw^NKk@_Q;4kILK z-jz*sbXH?0(C2x{jh*KpXeJU^IG*#c(765;sAqQ!3zmw`FsrfX-ABu)YX#2p;93S) z^JMkY$wRbVzDzEHxEL`}n1f7aAjiJ*?lT#45#>P1!B3%u1Tvn7WdFy^b_b-`+A_dyJ z%$v&hZe^IentOlauUI(MI91X5%T4SJQ(|ME)=Su8PPBS9 zuO%W{gQ)!|E@h5$o~hCcbgo(8m|gVdt-qiTX-^3c&qt|%xfwtS0YQ9Xi77C@ ze^TSJ9!mzy`lJ@9^&**w5or$3!{7hCUg*{frZF9^>kmF(fBnvx|6GAt^E8b3^Vb)F z)6acSsy+Wg*srg^^)cMHN+fsQxc86h$F)U3tc{q=xUi7#7&@`f295pafBzTi7*7Fd z5C_k_rN^Zaka(_TUFgb0m(k-doH8)8t!s?rG3wZ(@c`9~O;kUrlc7z`M7(jELXSpe zda$Y~XTs-lVr|nkAGpDAM~y?x8(+_5&wqW?BZIkaZ>nQEy>wQc#-d zz0|Pt5~Pf{*C8&S|hpVEtF^Fi1>r{C6-(97l$k(lEduldKR&+}_UtCY_NgM+@k1`tP5c z|MTb5pXKb+?@O9_Hr&B?&P-Eb^2r0{yZX|L;U^C^3%soRM^|ox>Ew__4+Hc4yw0sN zTr(#HJ5>cg4R_+}3Vc6XYg+w_6-jFs4_J?NExf7xwhckeD}*&EKEP0VoqVmSfw*;+t`lWi}A$_7cWuvI?c%k6%b zhObC9G<*wb|*g91^GN5g#Iv% zdne3|mj(8dh+gP2bON7i;nW6vS|<~;I(rrqt*ZuHjy1D`DhE1#^O~@kL)jo7r<>%< zwVB6jbk*r2cfnG?12-93!yFcbxBUX-Z8rayPI;YT`0AhgMl6G`g1HuLBXFd>jxL>u8{MOQ@2Qf{+P+`Epn476VW7K$_(ZhZ z;7KzP9vqq{;##V+*5-S{elI82a<~%_x;noLR6_x0R4f$y365@a_Sxb{BPjMZ@yb*) z2Q=PVPwp(NsUTNt>2qCcx^*$>6`4-RoE94?T35oEG}je0Q;ROcl0>y1avGCes_zko zamP;6Gx6`AZ(d(tu())YZ==NpSmXJ=={5F~$!H5@5VALS;T+M+vWb&gI7!_=o^I^D zl^+=NK8JkxbN_(85Pl&dm_4}5c?90y51#M+o;T;kAXVIXl-+ihNklmm{n;EQi%bs) z>b0%AfIKLI$H0h*l8Q~k@Z(3NcxY()@1h5TLnElr%kv z5c1{8I5N453D3`Mfv>{#bOHIc(i+RCtKwt~PU|ycCXh_eEPR=~X+DeDvlE?4*|=Wt zdRa{uJCUU6f$Afnd_7w4XzrqJG*pxhS2z^$(+N@bWw|2sSP1P&mZ6vvhpS%_U2!AN zVdm~^2Ro!~YM@|9Vw^HMIM}?bQa3gtv;XIR{z$b&;Op}*B`$W)PNq@&;A_bPSNqUt zo%6z4u`us{SQ9_r8(w3a{@$nqR$F&9uD}r3d&V!?xzK`{*|iI6DX*S8X@dQCBejeg zra}#BW!LGZVqzqaR0c;Znr!o6Hc)x@U)QAtTqgc}{*W|eW>*{X0MC&cNilyF$Mx!{ zDWxes202JYa%;ScBK5Q29i~x=z4cjPXuDzDRZWdR8>aRoXgWkxq6<8ky{>pCA4*_V zb=qOpo=mYA)u*1$p3IHD=IsQRk*p0e&@Me!cH;iN$+`VjB^Mpx<~--%x)zojpPw^x zC1RVTU3YF=bkzePNo+g+Brp6QBS~zsQMGTn)M$ZJg z#vhZ@RSwuNbh8J}rB+`TtAMP7L^CWzmQxQ{3#o8rAhQW7DBd$#(%fopp4CX#l#g$e zX@mi@Xc}6WU^&P^l~M~h2{_4!K&6&RhV{#@jWKX{B|hQWXmfx(4Oq3{LNyP8Ao3|> zLQLtHv_u#%$U}k z;N5(A&6?`?>#b`vRRtPb(_4F1dmT+vCJ<=`ryeBQ2Wyn!CgpjXxl zW95tqC+2tx6fLm`ll{57aG3yC0~=J7QQ#?EoKh%DpNw^r%wa9>qg=n{)RV-p9APW) z0Lt~&+{MPBNdG4z0Ti1xFonbw#uj~!iI+r0j|kYjEJ96vu} zZVtUgLXIi?JR5&~eSvndAtKbt4Tjx1v_8+6AC%2S4b(Yots3vbO%Hq*cqVy9_v zc;__oQfn5STDo)tg5Is>LSnne%cVh)4HnCGzy7u4@L$zjfQvcbs3NU&UvFUV!nF*a z_=DM}bQsZ*H0$<5es{s`1FHGffM%I)jfR7r9W?j~#BABAK=oYf#BSdE0Tyws7&uMi z`}ywh)$ZVv=rZT2jW+f){uqj)b=A?hj)vXrD|GUHn`K=|y0+P=MFZSi;!%xU5%W^R zDC#@e`y{Htb;ST!l-B8A(JJ~-MI*D|k!*10z*4iFDzu4I=cZYDb@K((({wg>jjhLy z0Y3XoS%g54yApTiFDxo%$DkWUiwUv>%-VGT=sN)#c1b2WslDIjD@fjzIK#|90_iX3 zwnrIHW$t0vd*kvKWVK;_(LLrxmBagkYPofQESikl5R=^4*7(oA|As*amS=AzLb_!m zS(ge{m1>omZo1Y=L($&{u|B`csQ+vmPBzxMen$pMF{l#nlR(khVDiP?cuvEYaGy9D zr_hw3y6=taQrt18DlRmoO*I{a`7Hi`He;)d)xU3E*c{euNN5^?vUB|5E^B=nXo2#A zwU((U<)qMta?${tsx}9MrV|$(I}1T2aIO_%bCkpc78-jLh5B{K&1Ysfncb$5CJx4g zt-Zl~j`2K?o~d2pN}M9As+R-zNnUR4g3%)E!gB<0Hft#j30ev^b;dvEO+8eDSoC%| z*p!29AV6pvT4M=M-NWo1@xj1=uYJWyW5)aah%RJ&N66)AUoYHbBA@m_U1PP zF~(z&X8-oj>?*9p`)v)qUZ)M6+kQu)>Ep`Kelb|o-$;sTtNpe zYS|*IZPQ%g%zcvO`m=z|-iGT^fcE~|Y)Xe(x|MYQKGa#@ z&vQVtcGq0p!@H2Q(F)nP3=)Oi`rVN_J=Shk`}|CF&5z}1iY+tn7yWkHS~hdF<#rjf zs%`l@_JA4bj?S~uRWyrED0b6ErT|b~{OumeJqiT+?tVUhc+P{a2Trn1VOb!bBg~;YGC`QBew;-`jR3dMF9c(2RskQVX}bXU zgyVFgjsMhF`!#kfoO1vxS~xmo$^aYpDMkQmUC1JHAN8C^vC|3Gb8y9CmLMv{8BrL< zdaUlcRP)NgVtiNhRtcl?_if%e5SK~IqXm<05YMR1g92si3qZXDQb$}7hu?b|a7rye z{Q?_gYLYc`L{hoSX5+M@Pb*qPjcW`AbI!svr>j46>=2dg)W&Bm>;ddJTv@#u zIKVW}8tw<@2&2g`gq>NiX>|4)M3fNXDB8vG?Nhp*T6cBBx$vA#qFbOCl{tiLP>VA> zaBBZ9npVI#9Mm7avxXoCIQdyFOBK zw3)Ney=#-U;BJjJoaeBc_*$!%lh1RbidgH5?S;&zGY_?#cJ5MJQpwrmy*Dtwe<5Ur zw5?162Uie2`Cd&+>P-SMTa{(=i`k97Z-ysMCm(TQQI@Da8pLoZjqom6`96I0`>z({ zr#e|l)RX+z^%1OxAXcD2{^)suLXL!(zltQY!<_R}_uJ*s5K-4j`^~~v7sYyjMmMSJ z(0qFcYZ3W4qJU8kxI543ae#{Pm#M$mhKg^?h|e(3?^A#utmVI>s-OGe89_j0AsaYw z?4!n|I5nzn2Z1+6xA&vSo(Cdg&4V?eW}FI*_ihCB1-ifg#`<#sW&&&5+ZQ)>Rey!% zAJ2IZmou|F+pykd!tj9g7j+;TtRrK=K_fl@bdAZ{z)5^v7x$??bBb`k#63L;|GmZ> zyw6#q%S>#>gKRi)??VUr&zg#J9?ewg|Gy~W+mCx`U;x7jV_P=5e1IO~bS0Zk8J+dW zYSxPhs~&$RK+^}W1vK{v(yz|_AairAXyFaP2ndPU#iJBo3lc=?;Zr@P9-^z)*Mc=s zsoXTG+DAVg;pk)&t}C#$5Z$z{2C_-cKht6nm6N~hcQi0QyZ)UIHmk{hGO5NXw@}s< zmVt0ZEHGCl&h@+H&(lKo9qT1Jt8J)zvP$%C`FIFkv~?*=I4{|*0^J16X>vc3+gb$s z&Em-c2r!WOXaFz;jY_>lq{2!D8wnrK5=J!!7!nbeNOm)Vuxk9}MiKXti=mfs%VpTr zzm?+!&(^4i z)MpQpn8p&G&z0-twLVQZWIZyo5MW$*@(jYVku?iE7-0IHE5RS{)r|0LnUETnQvhY;*CfF&hNj!^#!uP*-!h|0$i9rr!!Bs zqu3|GSWT34HGi}W+MOD)06-SoyH|YJJJHQ{LgV_XKBtHVo=p0()|W&xLY%_E){L(K z^T56fP3tQHtfE14p8FJ>!B`7F_qQTvU380%C5Ez?`>w6MHFj-<{~aTiWS5*hBFDjA zu`_e#WN*aAkf391N{ZYWoJF7?;RQ8D*0t-fS__Dm;H;*buBIv}yA!~pBFUIP49)_? zMJ^!tB6tdP=R0?|!b^VQyLq2^AJM>)xj>5e2|BP#7{hQ*sGs{J_I@J&k-X4qRna)Xp`3#3!r96r(C}N^WjP~^ekr!TRHcJ1eT^EPc~4yP`Q=Y z*4$W*ze=K2+8|oKL8^)M{%pqUtz0o{9)hjhb2k=k@SOTWXxXHC>x)1HX7Mz(7Agaz z8KFK-KpU;A-DQ2q?JB<0V7kg;5-McfD0q= z%ly{pN^#!W52O2#9=O7BKS{HR5k;^wQP%kL=Y!`I?)`9C%;q{}9AClv9IT7@^X1r2 z<8xiizL8bjGvxGH;-CxW#_$hv>=(a0Ia67=CC z_2CDrSH!R;bkvKnhk%U;CF|`2cYkjv%xT7H9F#Bi;swKSvWO~< z1~uRA@l2Z&%!VDEFn96NxRp2?5z+3!I*n)VY5O%u>pYF38k7-1nwVpS*^^NFf=PdK zP^K!mv`zKev3Rv(VXXiGp30UC*J!T9%`SnG#6>zRWH0xA@(^&uA_?sma_idPZoJQK zIsi+?1$a9$n75?bg#PnOjxP$cqN|Ikh+O z_uv1<|NiTL#qMbBp-v|lhJ7B5XW0n0epur>8tyHi_|4I=-{dz_?8?B_xI#Y_;=VU5 z0?UD)oj9iBar?rPHKzxKr{A`kg~6nE;ePHm-2uSS0A+4ImAJ0xo=ReMF*7?Nc&dIC zKjVFc`}>@2VHXkoxh`$`Cu^KX#=z6nG4E6(n^Xj?IBWl58>0)$oOnO9v}OmY4vSQ_ zumFd*0kBd!piRf&?jpN8WWS|DQ%ja!95lo75d5cp1&qRuRd-lm`J083#pKCHML!F; zFYcY_wpKAzvreU;0d%$*$;x(W*;m89s8hftG=fd1Ub06vVPpO7HyNUY#M_6PMQ9VO zKB(DT_oPx@h`I_>P4rRH!GFgAbZ~0HA;_uz#KWB`&_K7Ct7s~oxRqeAr7TQ!!F&jQ zGgKtC*o*P^DLZBY-FvG|sY(j_9Mpm&0lH(NRPclaak|Ldu(5I<9Oa$eMW8E1BkPEV z*i+kW(@eM7gY=vVLkmh$H7^T^Wi^gwBOp+cyP+uVt!(dG%OW#w6dYO>^=O7p6Kg5y zbl700?9)Cuen{SV?^GMprBZWKDx zJtp;_7?dpoUJd25gN4gSsO-NDLM0l!&-=LyKjHEZK0E z1qz2|I*m5KJcR&xY3WBGH4`+zOeQZi=*SpXmttMAP`m=q?1X;=-&d$(6JmepL-VfM zK^Q`Dp(^Tuqp^xlDI@z)W_0WaqF8Au2MHte-|q{5Lh)~vnmu!IQlOw&uHb#JBVV?M zu$XP&Q6AL?yE*sQnFGEh!AXLQj%#ey=&8(yYZ3X>jZk6%2H;x6-Ve!Wqig;b(Hz@y zLABv$KL~d)1eVg!>Gcp6UJDMbemT~#H&voDad)DzUs)!)41Nv4?70C7nD5Fz^BnCp z&Uq*Up!a2gQ=9kwg9iGX8dAf-sf|K&x6I#v-&+p}cle6dSg?`!FZ3gUof{F>-PU^- z5f1Z(%%`=LOzccL9LoY%ME^XSjOee><1kE_`fL4Z>pizW<&b@uX6n6X*=QO^bgQ5emP&+4)l`u&7sJNvo5~-estm)?gIK70k5w^ge z^MiJyyBu8BtqmxMlZ|~2|NQmQyvBx--;lQExp9U4vV~JWK{UjaXafqxa6NB1&9&#} zNAV^nuC>re&_kxH?$L%i&i%mFSU`Nlp<}YBI{1VkE9q}_wi>L4mWs-4uCO_+^nh}n z-%Y!|DE*rpR~KC>@b|)7^F=pv*knY_95lyy4os~veZ{5(mYpwp{6+nN!!yX=?dih3 z56{nOTSUZ~jO4VkOs69Z^Y%4HzgO_4kdd_ORij{;zxEB}uO5jAzgXEFrpVZxiO>4d zT<;M3XmRmd?5OgzrRBV>3wQ4 zq74a71MIFA?d!KJgjBXcf0jjBK@U3ho8c~)clYZ*%DL>BQb46tHu>US=HUp#{qx}K z^U>n63hoyK;_H`4$UaXC3mM3sWQ@3&xR#^4`<%iN{fD}AHDK?UBsGsswKUv)EZ_&$ zn{EzMqLKH0ka_U+^%uI5|Nj0ru4TB^CH~S_Qt}K)8-=(onK3wF8NQ<~189BUn^M2I zmXW6M2E(w_s3S0i94AZ+j!{shl0{uqI8MS~eNGME&*A+Xe7>AvChuPZK_Gv=*+Fz8T4`Fo>*JSkY%8wQvfU@Vz8P98MJrbF3%mL2@4k3ORxf(#uMZ4{+&$FT>>@bU!$mh}{K`fYEX9jfjsN%~d$3=h(gQd^c7shOzh0&4@MGh%e;P z_3m=x!Il*iz~b1IrwXe{p@;>a>kG9T;Gw(snJY5-w_BDZIg&F~&DU?U7-ly{~dV4C3j^-$Q{lAGlKy^G=3WWQ*|=K-OTnvEwXV3K?B{@ z=VV5>o2hxGlFE*I?syLOO6^BCR3Gf+-Gf*}rY6Sy@ z%w5x*v{Bg#_7-Te+E<|&H(%)jNrn}S8JPMVlohB{Mlrf9QD9^_C$IFz5&>Hh(Vn6g zibx>VesPSSdtta?IQ4hlf{GXmE0$*Sw;PJezTUc8t*;cZOMw0oO=4D<3A}z(n6-O*yUS)|a zD>Sy5%BG_NR?^OEB*v?1s(Gk2SOneji~v$KY8YsxlNQ+Q5vPe%0^({?Z2_b( z#$R|~8W$F_cO)9tmr{ zYT!IKsy0>uxi-$7@QxTBcZpG-=TZc$;Zii+L=q(!mb16E2J@TB9YCXJfl(wqYmP&# zVXY_;Tel8B2G)8a2-GOl%5J1u?{o%t1j=XaEX4D~VTL)0+?x?qw{akfSZClkZeqS5 zQ8i)1052GCfbLf1!*RSFP}EP0gQ{IN$YF*v3YEKh4o4%U@Ku$uxh@(@>9YgCvxZAr z05ge`p@**!QmRGQTKb@wQ^Hq+8EfwiovW;yqrtrsd#y5n-rVM$S%v}3-nX#&%oprx zIAXJMon$)nt|2nL#(5@>+bCDOSsJ5`9HCNFFZX($L6{i6bE?g>x8dz}!;W3M7Sb+u zZ8G=9{U)W#Sy2(j;j?xIy_#D*M0`3|5Dy^nt4jl{bZW%!zbLY_KUvv-3R0x>(9cb)et6TrN{>RPZc z)WgZ%l4r=O!D>^nBSDVd+GlAg0{}h@=lO(l2yBh(mr;bd9C15QLnDprx*XRZAheLo z9hm*$_h#?w)R3J4SO0(5p*pD*%0jyUGmtVkWL-9A^?&1X+FjFkGgX26Mq=#xbY1Hd zL8XkNg#!T-^rY*e*4NM`w5bn{odE+l$5BYd$u1JOY?7S0uCGYeQd z#r5_uUp%YHi!?4=L>bIE2wA6RkX7*5UQh_wPq&4tzuV1Vw1T8YQw zZ00hNsjE{Kh<&yN_`=p{p6eWHnV|%?@g5zxs|pJ-8|0)jXkiAd6|gx30nbek_`HOZ z9CR!!eSx!J()e|>R4zE7^z;A;G1jqqMo9KzhSlkhz%=SXt~V~qLg>r}f@rHTm*Rpot)B961;_2{J<+l~VOJyIUdY;5v5{_Cgm=@DIWEL! z70I<%J>dY9mgOF&gU8BbKrI0E@2euiE{_b zyo}!P3-%+2*rkDcM6%?{(x1R7BZEr=NLuYI-i}#JHB%yXWhHl7F?9tP^I(<&Q=JC=Cr}Z} zw0?r?3Vt=4dBMmzRQWw)!F^WJcxHF>sf7g#m?jo+>{J1y&1+GL4tamr-ApBsOS;+N z!Rf@H7FNR#MCYK%3BVZol5yw8eI9xsL;k^)f%oU5g|t5aovNcox1kx_uBxhF<>iCZ z9$@e6QimZrf7{4^SlhiLim=i$hSv;m@ETt^t_NYe`~V7Nxy6>4hbB9jY=JH}R87uI zUQWD~2_Hv)hYCc{hQZ6ajvPuqpowuLYhNHJ$KIRAlxs?r~c3@27{qCT%FN{{;so!mEj4?1x|Cz1Q zifZ<;_d$q`oehJ!QZxwuMnV84(k zH^9L5tf0(bSbAx5)~=->V^i!BTc==VX1eH{KM_%wllbuAR$qK^ zzAp&q$??H1} znc=NP4ORv-0g_OLquVQ#Nsa9{R(q4+Xh;vpSH(JWE9Wu>DOpst_o?uMLOX zYiBHgj$pdiLBZ>Tp{Q=hTVC28MHG@$x}jTXqEwESCtg@~;{JAESYN-S zyJ75IFl$plft4KNRzAShTii2s)-JP3U1!O0R4#ED%)Aibn1(oaMTM3$4h|nxxlyIl z_Red*sb~<|C}Li9-B3%>!OHAiSy`1tdM`jsGn_cwaKMYa*taT6myD!(FtO@|%!IyV zf)+UludJe(Qpr)l3K!!y1@1nkk^tC-iWKynivKZHW-&?}OB%IA?9(q(r^+$-cDq;Z z#Vq1&-Y!uP?)QVw$HJK#DO4uraVTS(8rY~oDUaM0q=}WN3>pm;tBq9b1kNQYO@PG@ z_XEg~k;1^+ysMzFs#Uqb-hnyvp#SuEa&*8xYvXW7I`Jf#yIBmD$So%E7*olag1!@$ zFd7Lxq^skV=i0)%t`0c5<30?vRrgMGT|TrV^)XSQvDjsvK5i5L^5;Lom;d6CRDh4McJ}QOKY``tB99)O+*M~b6HbFvp6Z(Rq*kA zhmYAdTZc6klde;>2pFK5PIuODo@+rOoRv;6yde7kb%NJ2Ygp=wS~?M%PtbNJMs(Up z5kkRKZMadd{VyRwYG3LA7BkmtNtejK0MVOv%c;_WvNFHq8@;W5FPXi9}d0Bs6yZnDfLqRthOYDn(YSp0IVN4)0x zk-D)ST^_i&G}6NdhARfSda*j3h)SyF#LgJ^f{+yMF^O>>csmAe=13!%S;J(IdBz5( z%r3d*fxI7L9e5i{*7NLHTVg++T*PM{Ob4o{&RsG<$f?~)x{unf_t4!lhfz0n79pK2cU$Rfu$i|RLa@K*FixHj))2b zcN67EtKmaXi9}BwCigyz4lK2CuvaijH``-sK1({xtl~^M1`t+=Syjo1)z2xkbtEKN zb<;>noJh8y1_Mbu4DQKQfpTD&sa>&BT-05rsGEt~nlPNF=4B|<&Y(`SOGLNYeYyaK z`wv}pGsKP_sk@lRYXeBmIeIqAiXD6b7Kg5_qD88)w)WN)><0igbM-IG2tOSAp?1>S z)Mj1t%SQD9pviy`z2%KqjC1u#54@Busl}b5SqNoBue9tdH6Y>~(OUcL5(9zN-AD(K z<*!8{bVwUFAumWeQfk76B^jdjYO%gJ3_<;4pqnarZ5#@a%BZ`81_MNX8Io6XAeZXA_ z3e_)P|2w|)Ng{~k)`Kh~s+<=JvP=uLZv06TLKvoE9B>29{X~UMfM7M=5*^Wt%F?PP zax<%H<;E}*cYs+k7;8k8c};{I)(`7AqcG+1+hFsH^|g-(Hs3^p#CAv7r4dsy9NQx+&`=rCGli_$(ze0zmjHp~E%*eF@=NYv_ z;cs`v30cL+s#u$I4ms;s7={{dJjO)k3EJjf8@rZrmQDtv=kL6Tj5OC&<6r&ar}%gO z`@iIuU)#x7V@4ot$|M=@a;a9)@j^;NUw;KrZ`8-kB4dNOoiZo~h_o=;w zm&zY|rJhYadZdBT!Ur2aaKvd2I2mS0)2PLd$tIa!ECd`hU`)dt3b{lL04I(~pw4S4g^^9Knm!Q`G!9rf zY9)^;$n+T}hBoCKt}phmsYJoX3)G^}{tvLF5xt+9gNDl-w(c@&${q;JG4Y%H?%@W z*YXxcR0hpV5`~PWL=E1?fTYbj74xz+bkRWM1wn^ey>v+!OV`(l+wG3Emr#0k@QP%a z75rc^OCt|jJ$AB^$mbng{a5uDS?X-oiXFSVMy z3c2ZNFgvR9$RlD)h+4LLKX7${I3R};PT(};d&Lo48iL?}XA@!iXk{KBrdv9hcT{AgwR_GXe zy)Z>4M6S)131;Fpsqx1&aUuNbj2QMau}cY<;kx~OJ{OD=W86^&eE8t_xBvDR_&@&r z-{8j|jm%XQi7dnK{`hD7{V)H3U;p!;`R(^nxBFc&N(Rh9i&f?&#OFlAx+accc&6CW zT9I#DH{VO}(TY-(2hyFpvJPQwrBy1m_oSB%VR$87sN5S9l$oWJAV1gQ91}hXv#O{q zn3J>xuM~-ybd3yv?nvw1qHCN6npC`p^Y-C}E1H$H%gj*@-j7jsF791Qt+Kkk6o%o) z#cVD_5Rr8o#$*&g-h5O%7ms;VW~$PplUBvv4TpA}w1=0KIG$!zJ`DrTSXo;=;xgB% zA_9d9-j0bKAra}EQ0FHaofjqehk?$bw~r21!bj-gC-8=;G1oa`x^eA|0O8}Ngh%sv zK}S^L0>fwZ!Yi912F>0Coi}DBVvENhRSiH64iY^&lpn9UdQ4JgfW&z=y0Dbgq`+i0&7$^6pBhi-G~DGGov1JH42a<9 z1z{VO^bis^nN`i}A^Ie)TZ#3JDA5dvh6zy%?F*>?(oHG=03ZNKL_t)8DmId{=|8by zeUe(SY1lXpA}Q(T4$bQ;7mT5-aTR=s?VOd$oSI?yWMq$0=vu@_PIC|c7{>H+RQ-g#3Yz*H8hE~50=Gs0R%Fp@weQZ`9~jk0ISP#L{d+st!r=$pgg0a-c4$C!4SN?*a6}r< zwUoOKV9ulNH~sT(_rYOWstbvdC1uxwyXbpW1^0oygSnv|0*JC%W`jTb=?DC~fAjPD z#lQXuKfD>-HtsjW_up^+?yK+d|Ni&?iU0Qh{ZHKPA7C8XH+W&y6C`R(jnj;YkM{%N z#N*QwdjW$J@WSJ{J4VrSb^;jz(3qX0R|^T!lF?AXtNc;=+?*ITF?1jx50RX9CCk`s zXr){F)~02kX_pk4sN6cFX?7{-er}wxxhgTD%Qj_{MFn^~Lgh$rzzkHVTWfKxh1^dL zv=44??c>FR*Mlht9Jfj3iDeLGY^vh7nV}(dcl{fo(OWT@S~=RNQHon&7Z6$Osy&|O;NAP@xz(jBu3ujjE zguMan)qkaRPuc`a+fxqqd^j#pIYM@60pCL+FPVs0-S|L;~^;WecHm2VY zp-i^YDO2yj2%@5V8p=XSp1AyQQi$K(a0~$0Vn<|DMC)L(U_P5-rXON)!v|?Hb#@~J zmzNSOGFGVSLqXA{&?+4P`aI&+=LnW6(JBBiYinlH>6+fi=!tSwyEX18Yhr!%J#$y5 z8fe@djWZiU!4DK_tCeSZ5GgTpeJ`z{P6STv36iEDB?m)B6sf*WjX_@1!Ee{eEC)VCSa0W6&xySf%s3p~%s;mI~Nt<*kNiKn2~{!d+#xs}dW9 zw1Vr%)TlE745SR|;Aa5V$q*6L+u6F+#vN0YYq<4@qd8_5S~U$?&~_{DvS^byyN;bL zjaA`E;PlwpMQ6?C48<{t%pkArem_jg3^j-_YmP?1JL5a&p(;TY)_(Rapo=0@4m1F) z2sj54!HU4H#HxVxx&Q34PycZ=E{WZhYP>Ai6qZ$7RigR0Md!eMzQIcV$775Z76)#( zJCMLW6C(|72i~9WFf6!j%yv~hd(Yx#yv>Qq>@GnfPO&%qV%oM)b+v&SZon`aqayXN z-l>AawHTYnfePczj{4tz_9Ohq|MM64*MI#Z8lQy?_@SKfuYUb|{Fndw5BSxuzsKMK zAbA{B$H5n8V)`8?c76Bwgj&JlaMf(B*jWfV zU|CTQ`ZP68qLJ%KIs)bg%0=>WQp@*D<%A*fnP6t3osHr0UG>@5VCMV(yHJ*405A~#%&6vOv>WiA)QPH%n+%eVTHO-cCZ`CKQ5Ibm2I14S?z%YR} ztZ|JY$O1*l)LR;KWsjxIRp!=Zsn)z$m-tY|K+J`!Ur(}3qR7jxtJ9A#Y*nF^D6dnf zK6XW?k2Y}ZmynZVDDa;bKRGrJHyn2dD`eF`!AtF;$gR5Wb@F5(l3EufcxGZ)D)eyW zbgBF}t{ywP`X^Qtt^$lgRCw_sXj){t50LsCytuOp+5V7|HnBr8Q_37mNb1riMC%A* z1}?=_c04Mzti_PX6eufl18mcGs&1c`DR_9hee};SE7S(2D^tFzO*1wz%&ADQj%UWA zN!+GgKda`y`6l3n*d=uh0d62VN#5gz+ruStl}|`LUt5x2Y&X` zALD0#^#y(GG6d)Sj)j3={_3~*&;Qpi@tfa%0ywd&FqpW%-Dp$elFY#Uu>R=Z@Ksny`*%3n&V4I1}G0-d7upo|c5CP=Yf@Qel!!a=sVl^{bW!UAriuRM~>L%Tj_0`-iqsA-SwTmx@ z+qg{`0t6CzT}d;tn}P;QV4CCTig9Ti1Q8koiLJ8SC}u4c6cS(>S%Z5Ai-}kVv`_)5%Iv;#?{$p*c**xa+{p5!aH{NcBz2Auuuxa?+@4mr*`M>`OfA`BjVffS`qBh9DbDem9KV_dg z2+kA7hr-7n4IGm^hT-Fn-Y{zda+7YRth)BZ@z-(aHRGKACSH1>#?Q@|b84(yp9D|&0Fe3*G zw`1}c1H+wb?`Cp?YZV^P=uzx}5k13f_A%~LGE9W}=`JKAb5{+!F|(>VW|Wx-Bl5Ym zK}J&TO+~vBhUkY;25|EM8;0lFpcP$&tnyyIg{lB;aaM38vuf{vLnqK2qhc==MM_`e-@dyqFE6bYRpP8kvrZ@e&XT&TT2biHP zJVtNrtHDa$qtAe`YIJp03rOk%kOtFDfv75XV&%rR0XJd}sVOY2NJB={aZCcAv9km0;>peic1uKzv_QHzgI+g}ILp_wkK?viIBE1NN| zOZjd<%TA$tlDg(+T}+HCPu(Sskfr28oodQ9XbwaupPZMK8sy~%Lw`0cL0~C_+M}-0 z>kkoIHyG1>Vd#fTArBjW+EW7W+^%Lsf=pGG$_g#1?BO42RJ@Oph$4yI?Aa_msMZe5 zW5TVv(4>Nb*dVGTYezCr5I4ko36&Yx7#KECdvTwuG8fl=R9KN?);>?vsZqwbYTDFJ zPkdbw0TRHDkS)EJ!>nX+B51{-KhrUt)7m!}#m9aYXtXh_Dsap}cl75!5j%Ja4_Xn0 z!;6_w$K5e3X>zf1&WW%7@J;>K|L2$dU%&enw_{XQzgk_Sm;F3pUdX#%_I{Y=PD`KF zVT0d)^BLd$`MpqswWTf79we$NV7Ph;*>&Q2MS8p`qWlYr8(?K@^R>y)VK%ULpmMVy z*Jo%1&FaP|{6LlJ`UIhYqdEhz3Rur_U10Fc1TyGD>6)zIZMgIcT0nF7z*>uY2iynF zwHQ^Hob4dZMWh^b^SI$Wvk2pDI(F`&HDDv9*0pMW;ak^lGMJ8mBm2`BBfg?!nFwO>th??bjp4_Pu>rMyCI&UUL^~RotKlinxy77djRhkOjV?H$y738P;IS72POkM7j^|{6S(re9YwmB zzfiP~Ej$F=xc8Pue%LE9k$Flf3%H7;#H4QV_C-=c0)2uSZrA{+~UYCcORM5W< z{S`&7o!D7w&xf+67u2S#n3l!im}Jc{=yRgnS+%QbQ)iZFc+gOmUYy)QcV>6==m7)g zYI3?2a&OqMIzXOF753U2VI8kSLzGQ;0A#}LK<>bEojmRnXF$ti6N)|%Fe{E@BI1FF z2amhs@t*kA-+#ql|I^plD?vIV79tm%NsEM4!a-me{Ou0Xxwm13!{OK~@aI2$i}&Z* zFN7lDSo@)@u&bVL(c`72`6)(7I=hI{Xkbb0yo220rzln!uk=q{yQqc;kwy*yyQ=i_ zrfG!se7=kBCX_9Y;dttpi^0M(3S~{jBjG-AK2Kl|#)0yA$bzlTg@nc0T41~#j!X^8 znZPP=j)8^1&S0zsz%cBlO%}mu_0r)tJlYGE6&yCv`!F1X*n6?-OQ=db-xFgvrXM&{ zZ-va(!b8}*%ayic=_)dYPE*w%q%JwQ8Pr9uHox zWL_sdzZ7HvGS}+!o|dF1Ga7i(~L%!7p*QG&uD!*VJ)~A z<^?(4q-M)Rgqp=DvTB$6;CV(38zR%eF^1QEKER>H^NQrT1B?)yrUUI+R{fBy%HlBB z>AkP_g^h{AVUBaHB3vXvvcNz<3Z%$X%iH@RryCvX?eK1t%C}ag7jk4F^5iLf zBj!9_M7pdbGuqOk!+g=PR$*9Sz)(9GrhIr%%6n~rf@>}DT)V1!?oy#>TmTO}va>0G zX9DJh+x@1IS1d3J8wYj*=PuM`&aM(3(}*2gRcoOGnAx@T3V45ZXE!@VQ8dIpx#Ndx zzV>uln3@4Nn%leu0b=SUCTyeH z!w;;Lg%C4{phhW`aAQSn-tVKH&&7&o2>@TrWMv3D!!Zj;oUutb4sF0tnKj{9adMYv zQ7fggpYuTOBv1-Y2hr%aN*y_{cVgOZ+HT>wH(dpfq7P&wFRxqQf+-MmB5J`qDXL|F z^Rfzz>ok*>5=h^$>{yPr;sb+*wF)7}9ZBIcSG0!6bk!WDqC}w>;-+xi9By9eTA=8P zJ*Z|n>FzqXCAlvn3OagchOD*?H~%0|h`l(*fSJHTmsMw?I8e0B`tMXY_RHjM~rKX^<0aM~BsCg#_-NochGWmn9qOzBMeI3=h zPUC5F9LIqby7Cu`XLFJ#C?Hh{o?|}YRtz=YP_+@I6`mA8orI~9;GhaaHcy>2;iXer z^hqqm^{%Ka!KxyH4brcu4RgD$sye?l#gOdrQ>r1EvDw(7%61*ooIYl)^U0_xw=RTM z)Y)@KB+7=v{m{tC6KE(AEI?#kRqwqvVr}hGaH-^?rn!E8RoDT>BQPdvPRH|cGIoJ! zWt@T*aU!{ut=NXWz;D0*RR8^Ne~aIK^*yS~?dpIT1U*gMNc?27?suy{?$31IlpuN* z5eZ#7X2l|Mllz(Fqc}LYV(Sgp@cC5^j)iqhy&fK$vWkb2P$H;$<*NtJlx8i_eF zhuBXeXdS=ZArx%p7G@Khl@#Zkz%iycCbeI{D7t~6@3C}b{joKH&B`XyG}zx2Sebmg zO2sCdHtrc;c1`Yh-{JnmEK_veC_ z(M<6t7iJ%OC25M7Wc%REvguZ`5X4?Q?nnPn8s%jsJ61!mt!FhhbP7F=$;^%1C#FwW zL(w5Uw#FJs+K~Rds!v=mWSjD*O@0t8sd=!37A(imL)D!q?$)V<7#*s>_Hr$7JEp+w zB}}`x#IB`CpIWabT`_RK4H{4@62kcC+k!_Ni*D3(V42j>J}q{EkVG`DpMyMBek$goj5N4 zocCWdQ@TY0O1%mzrQ6C*E+!gm?Jm7nRynR(N-y-SR5dC$MoGw-&Ebf(xYx$p?M*FNv9IW3U?uQ( z|M&;~E+`j~fXzD|kA=+QF(&@%uYQbA-#u|VZhW2_$im0t zjnSaI^?X#U4by%SNm5EO(e{-5(cHiKq^zHbDIs~mtwNb|asmacSR7R~hW1?Ch1_}F zm67p8l9*#6b4jXf$}v{~$$`BSXE!XPmGr=s3Ik*v1i?(?BHOp0SnGprT0&P}VT?9-e3K-X~T&dOA~ompjW@P=t!9L~(B zOf}MmJ4($AjX=8mab4>h1;hYq=Vp|{6WIGKA5OF-d)NdmOX{IE5WEyPIuxliO>Ajm z6`2Yl8+{Dylpi@(79x1XyDDTCkiJ)v%Nzj5Aa^1YD;Wjn=)UA7@NnhDb7xyk{4(9NJz3Klr#ATNjF1(puN6r;YMQ_PFIUd}m@FSor!~7IYiAIsj)Ss>8TUSA zBVl4gFR61aoYeypHyj5Uv1^!Pnqe3@hI&m^g^DFf!5nz5CxN)4R9fI=kU=Zdgim8J zOTT{ zH0Rv;tYZvr{X8(o0FAZQ(({g;YoZlhyaknz7T#_~_)SHC0(TcZjyb!QT9vyPojPcH zkWM9{C<;xG0{Y0#p@@pmo&mmQUeWn|2XR1Lsk7^n0JxOjM6&a**MmUHv>`C{&dptk zy@A6Wb2gNot|rlru3L)>Drvo;vNh(apCh3w))nrp0?*CH@{qAZKr7L@zRrV>ZrGLzKOvw2-+zAR=g$kb z+Z~ZXqHw0>2Rn$L4GrNeBNY9t1Yb69ZzWx?TImTZ-dF+!U=vVoNp-Sc)BhUw2p05%*B zeQ9N?(dJ2lOg-$)wUFGgIjF=$YMxf!gLf}tMPd%a@M2<>rl6XNhNaeoyN*n;LzE;P!3{~n|7AGqg%28tu zBm!2Q^|cA67kd!z8d9+I9#?B~Ck+$R9B4p{%Rz;`tIYN_*q7ur>x#_Pg@KA922FgS zwmoYTxUsW{pvF#RRpkICVTR*SIin)G(yy%oD{(&@RR^Lrt3sReonV~ut=SMBwZD+E zE2lEtlmjhDn4?jSM^wHG=B`t z;xJiJ*AC6547C~R!Gnx4WDrTOWLtY%9pmP#vSRe$5X3PjS8T0Pb^M{O^Ba1Mb>{$NERJ|30Cp7TG0TQ(m{q38ImORawpYq_b7xueFEY_998^`U3NT33 zm4)9CHMxL(L7a%XPB_D+>eCV2Rq(0GF>*_*PJ_8#e#%0tttUW#b~d=@tq?qE@5LzK zj4f@`5D#N@FaH&VKyyOWO%R4N6T>?+fsjTa^kU5{EK^#dBWxNqUF-qzkYT0=AgXvR z`Ha+w1gmTHmzQj5#-z3%v#6ZtRJA08)}#AuHyJT#U3OE*J{xxPg5qx>Ek}M;$P(MzB}mdm8TK|83i+xc@mzLd$GOC$kNRuE`(`MFM9by05$H1 z6jQ0uo6Yj2}BNk@uK z9}xb7MkJ1!MTfG_5#sV9X`klTvKQ{zo7d&HIOzVkvy=YPcfaIu&j!EJ!bGQy{g>eh z%Q)*Yc}@>NJV1Cc6tUQ6WA{Nd(G0e?+VEb&tAz<3%$%qY%k$2sj!P3v(Cj%}8Q6OU zIgWYF*JbEx9Kqu(evQ$T}@<767O(mXH`4#K}Ig4z$(T38UE2Qh5cy~kG< zZn<6We9<|Lf%^hJtvmY_lLZ0&l6xr;En4C`zgcU?ecHe;X5UT5Q^n@dWl5U5`LdEI z(jolxO%y8vJ$pZ?nZvTM#jn|Qgnu6dHTEx9V z`xL7`?j`iWMH&p(H9MgNiYgp#JMXCZ85%-g{?g?v0+qH*o50jan%1!hF*U zC5s^>bRYA!a}c>Lo>|-(iD|h4yRiscuSa$arq-40V*;NAt__wiJrXF{>Uhqf>caKM z;&mA)8wT)01A$k!#Q=i@F<}b8XEzQSkpoop48$`sXiUtnY!XPdD~8L#qY4?^J{psA z3hPQ_=HzaP>yPC;<^EvhjqY$MnbOn1Vt7U+G8a($Wi%~FhtIS1bxka!OBuxK_$BJL z#4|B&o>pG#J&af=h%n4nq%pv!}Q5ax92j)qb#C%90(7e z0wYrXeOvrT2AHWpu=~7_K4zpr;w2PemTWA5p>Z0}0=V0i~;>b;cXIpzmw=4QXg zG2~EVW14xTo~z|-`}~?FVtMXol`@lwgbZ-i8sFma#FM@m2pr-cnE{;Mcs?7MiG}tI z{`TTBTPT<|rg=y37n>Q5wgumMu)`lJFcUWdq5Vq`SnI-Z(AC>(7`TP@%Tj7w^uiCb z5cPvlNW3MZ8=;)IC2+6Byq6d65Yye8A>Y(&>4YCz}oi@SyIf3_FSwB!Xh_c%`?NmK<}ME*)TKIbSw@x`wLH!a^U1r~{8 z%%>^E%$|hTHlk_|v+*jahd7=9p6Wp4O*2X^G4`p6h5OKCm z16+)_(IuSIdTK^l5!hO&md-izIWOq67Qhv`xa%l$fg)lcD?J+4eHvgW^RVPhWR;M# zgW?K;+LVN~LLa;G2wqYbyBfiPD(?r^`a-F-ax5Di`0LrgW$(G8HygbV5Y$>G#Z>+6 zpn}BSvl{7gem2uZ{2!obP+_QZ}{B1kX5 zLO7?{O=K*R3wv*5yrZXM-^Z^f#Jt&LfbyF$^j4`o6Ub3h4KWS|`)fuRbSa0xKE-bP z^;}GF@YbsszvJkj%I#&bb2Ndyzrl)p+R{@NahaPHw~{)Yf@ z`R}0{r#8R7zTW|&;It@m!nM_nb>Dbxl*#075B;rOPt^NHa+}snHkBW;Z6x8Te_2sl zHNRJr*j8v9JK;vF-h&QA*u{fite$y>orP>dFetvNM`3-n6 z4dj=O&(N$AdY8I_Ks}Da zXPdXKSOE5`cS6&g5(}0tWD>>Z=WOV@*ht_xKnKsBB8gKXyfU%Azi<5af1hFB0HNh| zPI_*-cVXShwuT8R&JWV1guD{X#@U4k^3EFvG1=G)bv{@;Oj=jHpN;Orm0##-z~#S6 zO4z5zAGT1ZIdL%%jqAR^EvP@Z?=Sz{!O_KpF@HS&a;PcsJa$n<1V5)y1J<*BcFi(k zoR9)C$5j!(LLf6I?D>8pMh-AbznNZ+bGl8ui^)evfuT_aRn=?-RxB^k__wMz z=IE;7n#)BU(+-l>sID1d(5%ZT!FZ!bM_rs`aLN-A{B>(vuM}E*_3q7b<%?vEDY->j zZPfi+@_}fngb2x3l*wO6d=CRUz-i>Y4;zycQRXdL3YxW+&3mLeF{;z{mbN zzF)Q&>Ezfio!JLr1<|H@V=c#fsA7gkAdLg0COANzTeJ}eA%MG(h zk)zH7tOR2Xq<*2{CwZYzQE>RH=>~92Q^_N?SQpI2Gm-H(rSLrdxy@-EaLrp1{@%sU zu8DwRnEL&e%}}M^W&8XTaLt^$G0d42WJul3xNhZj`&J80i4CBG)ey;Ks9NxGhawX) z48)_Cppf9MRtY#QHZT;o%jJG)s@Ch39cELm>}i`VW9lr0*BR1R{1)_4w8%F{5eO&Nr=zh_{Ts0 z=I2v>3i)C%w{=U88sCJglt`jIz0i{EsjpJr$i-HfEP zp~aA(65ln9&4L~W7{zJ);2GIou3sFHN2X}*uBjjQJEuop%M#qF`7_oFHDVf%Nv54@ zySC$+^K0y1Kch`6k;%LkPWiha_{bRL)7s34v8&y1t5+_|Ukkb49!~c_jeq~QFZ}0! z{J}_ze9sxYY$P}jk~fxB7!F9T0Us6mY+UiW;vSxsuip{)oX?m(4z6qA9*kyJ@s003 zdvh&mUM|C$kNgaJUNKeUiXkky5O|3PYYYY2JHfFm8U z`&8lQ*?e|$CaR2>{*h;Av*wfxY@l%nILlFRie_0Ts1jnB2HnO! zWh{#|haF(dg>M(GNP|+_z*cVtony#ep1J+D<7%j39`yHdS8C;DAk#b~*0K_c5o7gk zTzNC&!YfY9wRqnb;o7>TQzV|x!T~7a57}B3kU~0Tjb_?I3GA zM{?hmDL+*_NI_vKH^`0|4rWt3=q7o#co$A9jQ*%pc>X41J?1&uS)!UHqU9J zHLcR3m0gR3oq?H)0eNpC=WX9`aI1V)nKVXBVn+f)VdG7VeWbB*xS31$i}tChnnQ~b>aK#!uK6aCZ3;-FE>S*cVPE}pZ#DpfTs_T=^4)u z9%~SX93Nb8{ty82_Hxp(EG*Ts#~hcloOT$xbjd93 zn0dJmL4`uGXSwvAsNJYCqSWz5C(_uS-)8t^*wwzscFl=6{X&%(ZUowPLLpM`)(k5X zrFkxhjtXMA=uw+>9t#Y@WdeprPc7n9aW}9}duNbIwfwV9BG|Zcxzw9plm-cunHUvb zQWD{;GQtx0aa0__$abaj8hA}$^tJ2J(s38MJaD=JA*S#o&6EKEA z@g{NKm-gpC%OLk2Z0p%=LYoe9Ev^h*;kxwEq<|Q@^2-ghAVL9E;Z)(2Yt1g}xceWo z0?tS}@9(?TYrPNS@@MchG{A`I%qEYsVE#VE`E@&%3Y3k{ilsCd%Y13~0L0rM`Q6Xx z%Q#pDGCdH$(4mkjG#kleri=@nln|4qFmmf_1uh*Lwh%11ob{DAc5kj&xDr@k;`2FJ zX$M{2%i8x$tXO!S2iF}4O3&G3*yuWSA*}TU7^bdB^2jjf-6bV>*oyF%Wp%pJN8sn# z{@`g*@8u`GG0=F@x{k$Ba+D_X0&?-}N3oJs!hHt{^B3XpG^z?`KZbz^tb*DPp0j<$ zkbxpWA$V~Q7ung{jU=faM{@w(B}8)NL-o~EKmwIJjMerGLjoGPCzEmRN zHMQG6M!$(&uyDNWJpOQgt>p)VH+<;cJTQ#sO=vT%*D2NTfiJMF5hCp^o30w}D?Iz_ z;|FL6E7F>D74GZe&oQCRmG1s6_5iQ@D~4D1rZ{IJ(UW2$Ouh4FduHk}3n*K;BLX@f zoZ7grh2>=N0CW7g(m2YB4V_>OywOXS3ydX3Fe7x%Vc1RqGMECik9_!WTr3xjJe7X{ zeBa}zhGhUm&qD^UUA(b|*j2k=n9W2DElE(0aajzW(*hT2W?(`vl45Lh??KJ+|4>Ae zu9(BjF0~EnTF4GV9UIImogF^rh*w$9M3q#BN88sg5p}}*VmnJvwed96OjK`DC8wfD ztW-(9+0AYv!f$fPqaz0J$93cRy7~7%{*t@^(3QdZIoRju^K3r5P##AQlHGt zg^BCNG^<#RO2@Gj>Gl^vY0rmXzO)exU3ilN>V?86RqiiOHmdORb9~RXp9D)o--7J& zlTWhmah|a!Q#y;tu73#*BXHr%;|bbKV99D)8$Tyb9Gk7@QH5ml&D{VOo+?VAOndpH zrXk=&u7x^>;L+|Lvv!~usD1c#-MGI(XKI;KmyjQvYYG@S5sQUfAr7g|qxOXmSVo&_ zW#H7~)8Li7eIUe@Zbe2kgjD|Z0-G=j8&^ertqkd%myQiY937JU&`}>jMCP*2zQ#Z> zv^hkeMLEE4*LdcaGA~ZAI*nIQ ziH+e$*t0-ReBZZO)sGcC0u&ki{ti3hf~b1l0s>>Cn!f3Xy8|I&W0F21 zrNZ1`+|c%zP@Jp`HF%Y*IM{m@oNM(>a7uL@r)DC`x9@#|L%hyYGC|7 zWBjWbbj|2$sC`D+I$B30{W%uIGmFzepTkVE9UL+ZXw(CMOHKjfQeQh|id?^!HTn04 zkV_!-JM*{R3|!Yjv{3SVw7TrhTo;n&=dS!hX0nD;p?RH}C(>Z|Sa}F4yu?3&LlR$? zX?L@S-rJw6D}pOR)iI{&#nnYy1|)nf6TqH6=(@1WSxu_Y1>7r{w94>>gQ*(#YLS6$pe;b z>xG%QOzU^dc3l^$58ERel)Zqi5;LGP1%jZ+cSa}@t?I%Rg|*Upr_+!gMJ!N>J~cBu z-v;Kf0b^A4MoN^!rU(oKl|-(bQozREB}ll|;yFik3^ZD6jdg`OpATBw6gk+h)^gae z`@Crw?1A7XF4)qg!QK{wbRO5Wd#zkvnysa;Wzrr%);VhR7;uCxSB`&ez)df+CF~i> zO65HLayEUwmEMfcm?78lIxgC6hk00gP8`!GnBj5KFSjl=ES^BD=@9#cz$#!LMqbWa z96woD;!eF$J*(}P!}lqOeu;QfKB=5sQ+R0t z8&oO;6QzS(ynb6aJrYm|>}rYaEXw>}NlbT#rA?BzbVz@vBr0&<=`Ybac+OTbfwVT* zckO{ejWexJY2r;R9=D<9``l%V$+~kKoM7!%;ow>UokI-mZ`n(W#5L9TQnH!pEyQ_m zUFK4_$n(Y}-`4$*@ve2rODdtUC0=Y5em+hS83C(bvvfB2*EzVyY|Kooyz$hJ`Pv|M zfzN3?dmHAo0?*lgpRJq`oVYTf2CiKE_dmX|E}^*z6fOvg1Tp#ZVZSgg{$1PUsFCfy zO~bBs3MGVf4fh(wNsam@FQaYQ&Ac#f?ZS!%FXz$UE4&8@Q{q&?yBU~~;@m5`rfK)u zz}vIid)+1s;&G;ZGTY6t3(v+F*UtJybUFb8CYhm4!{3QfMdAEDAO3!fLYNYYF}Vy} zDQ2|PcHRLOsD(ei7pg5jKJKsJ%Eae6Sc}Jo-F2bMmB8yZPS5pG1G0^~bUwFFqdR<> zb7-1iLN)x_Va8tf&3!&*{GxCQaMmkj5Sra@GqdB*-y5kIuukLohq097ByKnm)5 zxyRzVmQf8oTXcE8msp-7nqH>UJ-Ou^sJzU;h=q*c#@1S7uyLL;ENYs4-N3FgZOlJf zKGk;fWxDg8Yd8mjw0$^oJO@Xz#G-og!87F1%YaC|NdSLA&iioWQM(Jk#WnL6Msux{ zE4pJg7_3*OR~lnVLyNrDjeq;|-}u*Ge@Rtdirn76BTP5)hn}O5de0da8m~xt+NW9Y zm8VJRK~3-S`7ZDamiJ<9a@1(X8^rP-)TI!Rkv`!!3VvP?>q_=+X9H04awM;7d8t!1 zbyrJvyh1h3@qLNB8WI9i$A9-O!s!oJjCDhe=QNYcGh`iHGs|atDXJIpM-jO!sGO(L zf|oTjH)F&`)x)*iTC5sy6>?s7J!84ymc)euP+dId0r95~3m(DXslxqzyJS$4g^$3q zKlr*9?ynoqQ`pbJehx|pU*CxW_?$=Q5Le##JbSXzj=jYgY3`M{m#u#*3F$$`H7}Gx z2>kr~04;^LDMmK2Depq&1>%-rkaQXs9utOUu^z&2S%Wh#_p6fKS^-|Uz-a824jk)) z$hDSe1%RWd8S^u@gh@K|qX^(7kku1PZ%7T5~MpU?utey>NvY=smagy$@`hCnJ|wW+1PD+qn7+ zBi(F3hAL{5Ho!UUH@6*MzAn;Bpi^x&>b5R?Zz%@t_#BMX)B3d}u&%}0$H`jHogfi+ zUPuYavahOv=jU*JnMcIV(xJd9>iGro(zrJK`EHhtOMa zu!pr_@@9C8Dnp}@!Mql_Ijmh*ApG8LRBvD<7BR?5|N8ZEkwsjys7OOk$aJ%B@55^? z-1mh(ACD4}*d9)?9h`+C&~P@l@HUb#n}5gc?g*HOS2)MBx=6ErmkFGRWpdM}9$&3U zeCn52HCy!QmbNBZ=mIimeT`6@gt@otZ|e{-`~cT`ebw}dJJ;lD&q1UgesBG_`oX<& z2x>A*WX4HHtz;Ty8q)Pkq=zgl#Led zAnqW(zV2aR2#P{X+4?yLd-v~11}mU=mwRL;Z7-YGcgZtipJf|u2=#b^CN7$m4XkB; zM<6)HX1GUmXsD9mTfzBJ4^U0*T~1Cw&QXis9Sa>e^H0C=5L^H+f1gXt%k_@W=Yv0hKKQ8iGUWTEvGHZXZz4kR|A z<9`mzZ!YI-L-ZBT0F;552dz3m&j>-pa}2GYld5Au-h1Gsid}0lw9vg#o%2AF@(xCY zs*XnF_eESbn0l_o*Ms%WpE*}L z{Qn4EMB{94Wg}Bm;F`B5rg`K$dy-9UiKN*Z<+i;?O=?MFo+B0ag+~p2{z9a1EueZ+ zk!I40Z$Qf_gZo!YYa;QCebkYkayJNsoON-1|IICpTMwSwob!e(m7$Z=5}?s;==M) z%l}LcM;Hfw6iCrS0*j!IM@Vj2&1eS1(NxCJbHK337ktg(-eI^~X{NR8EJqOdS{HD{ z=Tkrk$MsG0Fh^Q5A4QaS001BWNklUm0&WJ@xF=oa@({>Y0ihc+|ocBbt@|pZkC`-<`PyR?X?$@*vlvHIdA;pUPs1 z^zFMIeD>zer9iVJtw@h)c@Yh)gswT5?D|)7qYOOL?&3M6`zwJAL=Jj>luzeuRf!g@ z7v%`9m(+0e`tvi9z^@zYsnI5h${;^yOF=3wj5va5DX(h`zx8`P$g~9m8JumV_I~V( z%Y~nx58@9e?Z2-t1jKWW_K#E5)f?C48l_J2)JEhDi8{a0Rx=guuf>?}D}ihssoQYpOf(K{dTk%*)o)qi9f2wM_IxC!)xM_+nKl7L%)-leMU(P0dX@>* z${=NbQAMnAr};Fz#sa|s_AK*PtJQrtaiW2h&@Qg975nsTYo3a{9?<2Cj~N>Mu$l%^tEmT1N$kguNxxx&;R~gv4lVW{ASgL638o5b$DH0 zB8Z=V{>AkR`ROS?Ij5I7Wv&W660QWV6Wf#ABQ8qPf&PI%NJI z3r1gExRPy{yblGlGeZEGU(CEMaOy^*aerSkw(^Ls?!a#0>BfqStbOpczI?US;r0D( zKB_4Kz%1PYpdN z&~8$LuEpwu(}mFTqc-PD{)@9R3%5^s{8Dlrn93lAZp$+DrcJg6LnmDUsyAa1y9$xPONkZ!dj^Cv z*v+R3Ta6}}KB*Jkc%H-4$ElVpaQE%+Xe7n5ZDvlU%f&)R4rhcxE}X7#Cxhr+2!-t- zY}|J;6Ijvs&;R@rb%g)^YY#i5m>xL+@Cb)oc+f1+8JZ^0hFS@Yj-Hg!RQ)C7a9o5p zawn*p@>WS~*p#EA>c&xWf408AJc8ZrDs#;8x>fkP6CnAIpC9>Z`K2oFup&~eKy{$g zYUB2FK^e=r_7Xl-%#~2;s5)pFzP(Gh?=PI6 zZ6!VF-vDTg=4G%+tkC)F@TqelN$j>uq#8QaSjHCe_=^H&qHut4VCJ0dVK+diGpaIQ^KW~Q)a)~9~db83Zxk$5YotDJuo3G zvnwQLH$g(CK6#-RF)qWyWTN-MQG4@02J19m11;fEVZq?>6nXl19v(zqiQP_DNfTA9 z0q@LNnrfsURiGMIUaGlfOTf?bp!Ge`J#yu(Fh&ikCRoOx(rJ&M&kuqZSEjkfEZysJ zOdy@p|9OrZb|mj~lN2F5y@8q?hGGoK)G0%oq*6?R=d&MHS(%0LWJEZT@Rn7EGmTvy zJvg!^xf2D^d1u6@-Q&ZsqMW=ERrm&AijpNlkg4p>(Au+um8Yb z|NLNYuscvn6fW%=i~^FO!1LMDcUbuA=Yb*(wI{LIGqT0u{e59~o-hK310xNCOW_$_aJz=rRVu@1bRE1Zi?0yyM@p3C4XIC zY(5|l)DIAbbC;SL-0AlUE5q>%xI>kRxoGkHe6)i2zP<+jE}U631ORnFiob<`Pd^c0 zDWHzYj*fE>6N5kxl>o2Z1u=E{(7zhy`*jS?U$eK!p2tlzfrgkA*7)c9w2+IxLwqa* zm&ZsR(CgF&u-JlpkhMj@;G00^rKcNb64@{PQVK_6-hZ<{i_A!cEYV#nd~8PZYkA)N z>!*jqhe3)&6AjnW$U;LPrTN`%D|n(pMPHX z{<^WQH+4aS^RJ{H8&z8Gv&K@`ecG%BB)Sd|WAGauargYUrXt$uZSIWi1aIn_#FZCC zq5ESRADy+{D11e8g%pusexc@ju-3ALWqb7ab$wyQ!vFjq{{;#7U;pd>8FYm0Fe`)m z3?VNrAk%g1cTSNMDSV}2_J%YN+*KalS0mCVqrE*V^Bk~8XYV=U?m|i6@%6Q4OAz!C z?{MgBTvlK&x_S0mBPM6|m*R{#I9dBpQc5Q%UU!2GdU?0Cx!_N+nV8Jb^NT5GYj)GZdIJ^G^t(M%f}u$#$IHnC_YX5YiDff&YchIvo{ zXhmR=*v^(t;-c9I9rKTw>vj%<&Bmkd18OroA~LE{E|4rWS{s@AzjP0F;+5F}Xf<Q8qs9g_95YU zHpLv&X`s7xK3)07faz*>RmrerT;t_x`KDIkZ$$29x-^f5=`T8K1^>FkY&8X_>KG8q3I+zV6H5BS(X@tH3TSIyupsc%CwmiNE;; z^LtOTMD0FyhI?eAQ9hCG6f;(e1g|^w$9?hZqW=88@%_C9j%wuPXK$;b)C02|w5cy- z?>k&mupr{-sAyh{X?PiFw#9k8PtkmFB%C^m3bs)URi6;7d`k6J+>6u2OP+i!KCH+?G-GZUu^&uOfN7epno zKLrG|t^lj?buZu4x@JQ!tZQN1hs=@g=>=hm*!$7FZZH-B+l1A?-doZ^USnv;WiSZ) zw{lxL%n+cZ)85{%AXKlzM?h~d0zKGHh4`GKUhmcUAYDO5m32FR+;*Y;eGY01Yh7bJ zuyfqQcV8(xoWWyi91`!y0?3vAVh!D@V07e~YfB7-yz#(N=-@}h|NEEc-i{I4JUxCP zCW*W+^NW8^*yq($vHkv-tp7WDSd1{wHs^y2g-Lhs<87F|=1LSqac?1FnKhy^_L0r+ zEAV$ZtbW3w4Zhl|Uw56j(#yxv9x@w{Q#v>^r^`upya+e{h4DA;LnK%al$xgA%cUS~ zeGZ^E`dEFWYAi00V5#S=`4#}Sqc%CDt+~1<*X%U>Qm_#ur~U`6SYQ(`nm-7nmr-u~ z0V)-39hf{T7xv@XGcwTW7jCH7DZ-_buaz=7_O6%j4On3r>uL4EnF-4eSL$U2JfRIqIbNfWA5hxc_Bfim)m13 zch-L&3rADLmiT!No(iaM?b^KWeq9K%1^NAg#H54*jUr-ZGI*`PAK%IU_~XVO z-`^yF@9&w*)&q(B`nvJ;b>W{sHU2*1$=4lhw4q4>)-j(tsTZk@i8&iHikPTcdp9r% z`OHPG%W=r^JpGEaZmR?PG|vIR8)q=RG#J!30^!#=EeYzvsm5Rb_~Bna4?aH|*R}Ay zfYfGc%`AP)=P{eXGg0CoIN4_EV4Y)D=UNvAHp3kC!(!mrP)S35p)ur)z1pXUNletc!u^e3 zd0F(ErRDq{#mHcZY7|c$*I%#1Q;y*kKWe>P64t)9axAVxS8ubpoQ@q0fprr~@2-Wd-9dUb86v?&1 z+o3W)<{pnE*~kQ2rE@ku8~E&prw^6_IVqJ4M=wr4jP<4a8k=K&5xxIaj2hO~B9p;z z2y(Yx%K!U-A)7JTq+M`}ZeS;J-Ofa*Y6gHm|NPSPIVd!%N^CJBltI7S1m(E2R0hLDrmp*I-uUG+gydydn6=v7 zYFQ2MMNyEfi8fD@d(`fkH`V}%gclkkbhU)$wAMUM2%zUfp56xnj_i6aoEOBBN^BW; zBnGZr>N*YxG3j}u+w%9a98wB!1ylzr2rEIwMB^|u(jI7bOsu9* zfF7)BWZ=G&=WIh^!QoK25I{qo$WBmxNqSJ@t!|aknXV*zq~aGi!6Zt>Rw-Wh-kCY# zbt6c#mi=0t3W&>HWFnR)JgUN(%zb3w04NoNe&bv~Si*UFYYIv46~~(sZBQ3hUKF6O zB>w!mARa$Fcj3M-$MK$n#KO83*79?FVM;0HjBxkX;)Uz`Pl^xN3#s{xwjW%e`1DqP z4)2u+hPs-&O0g1sHqy5)9vzQN0?3tKW-HXSy&ZVf_U0$)ili^X&A67n?=S0wj5W}G zU&uAl&mgMbeEbdQ(dYB=OKrX@jyAoF5r<<;OMJr;V;-MG2gB)`&+s-^+6)uF5@|90 zzd@Ka&fY+$<2&*n(I)uof*fNY;HI&K1{-I}RxKl39iOu!w7T(g9h(W9ig+h)Y?(^Bx#(9|m#-&{A@?WS)@TQD0QU1!9SDSDmp(oR;^0?X7W-s>2 z?Y@|JO=NPYd#q^`N&yp-O%m(&%jH^M#+b@TM`U83W`xYn#fCkc=?{iagDm5h%(>tQ zK{@0)Cg|u7_U8b1ye3(jG0veR#j>b0hi}oUx5)SdL0TTak74r~Ju-c{nxrzoGr=^n24iHdw&`~;C-s<2=v#wo&qntYt*fmrd z_l{-l(k}?!c@2@#!$5vByZC+R)-e+zepTIv>vD?5CD7897r)jQ`YDt-8|< z-hTrux7WmJDGI8hM*bJNEDJ6%kU;yv9qAKZM#9UvKrSg$R125Fi^m20oC0%^d4Ww- zHTHgRwol2X-KOndqwS4ZwmVfWwK+}MucO^GCTgj@f zF}IKHWp4Q8g<>o>OngxK0uk^h{0uY1&$Bv>QW?S7rsCBdXi3!vRd9<=f;7yTN!mSV z6nqE`CXz`Nv=F4i7HUEz!<2#{%bS-MDqLqjHG zaStM_1>Y!0WrkmHK~)=yj^Pt~Heb2|+?^^lw@ZFr%*NpRZ974DECnjaUY@DyOb)&w zY7nQ(u%Vezm}l&LLf60$!+`SB!W}W}3*Qh{`bsD@Rl=4zyH{}L(mu8)7Mv}ox773l zXBN=TM^6%&5LT0Gg5BsoK) zpjEao%nDZ|P6%ZlF(aVNz?C^(!x_VMB09mES^4+()X}HVq{4lFbIc%!_AVeI6q!6* zQWB>dKfCeIzd!ide&BW6$kr-cnF123#!;B%vVzeiYl)is6nIg&62T(66cQtx=RfDY z{+J{eAX3nkiTnFP1@V0a?iC=*DIJCC2chEs6T8%6rdVb4G+4Bi2c|dL**));(wMwdRZ%6OD5YpKNvxMpCu(f$bRCnXOu`B86nLT`w0EPN*1Rj@%Uk zE9yqoMww={fcL5SUDH@b)l4!4of)34E|rbt2J|55K|HyljIr)>0O)Homcyy**h}Envxll)T~(wx?F!_6!<|?r zX34zmVO_{`kWa)^j;?2Fg?k_PP|$R!n44FpE@kxllaFI&jr$2^u=CzK?`rC%Ye8^bp+8epKR+r4wC%m9Uo2TX?~+ zEQVFyux_5LrW0Kp3vuH+C%mQeuIi;Gf=aMpD zQ|=qboLSc?6qZPIE81yN3H2Q4b!yTzE_;R==B>?qV-FeU^K8aP~ zic8#-Dwu`7pmmff9YZ=$>>xt)6zp!A4>Gei_CE8XG}Q2^69St*5?PB249CaMS_hceuHb=AWwng5vByR^10M4PC3?M()%$-PgLp#^XkQ3vLZuH97|;SO)( zhX?L=BG0?m6@xl4o^x8t#2GW8advm56IhejJhbrkkT$O8ChBOtMBG3IUh9RtH|o|1 z<@5doNyK{-9yXO>ApBA@O*K(7qR&1omfoV8aq~$Tkq#=J%eA7bw1x?im&~qT4`I+1 zs{wd9Q4F|s*D2<1tYz(VRwlxhaEEivy!VC-ZO_Sab%b+&?h(WrGIM5+=+5G@1vL83 z)W~Eql0CGnaH)U`j$OAhls=?`=QrK#@C7rMbs`UI@P;+yMoAlWEr0n^+=j}|mNHb* ztw8e9a8-m7;F{aRa8=;uT<$pMoIxu1ylG>f?#nPY?sMOqpq(&PT;#$l; zs6433DM*01fuN(~V%VoPt2%z{RCF%jkz{-Y$Yay<#c*dbiWd=4Z|2ya4C*sk2Hj_y9-B4b^>5AeQ^ z(E46df3jgk!W>oI9i+w8XDhedMVmEWF=Bm_Ax7z?ceeN~q-4Mj(Q) zh!L$nLZM=op%?@l7Y#dao|6c(Hf#3aXHBOCIs#S^Wst0j#Jjzc)@cDjRY^ z0*0oWzq6xBs*{GlR= z4u7YMNySUyju-=G_Q{P;xJ zf|>KJ^2M~uN_4A!%)o{4AUd&CWB@X`?@xTJ3pQB&mV6Tjx(-_CT5B|h1$cn{c_(hgo0Qy3+6cs_WRw}tSp4|5P z6kGo_{PSyQ`TzhR07*naROA60iR3Pznph;Qx_1NJ0p^Xhfa_YiN#s+^VOJ&!&6AUQ z0K2#mu42Q>rw~%vRVil3)A!eoXsmK<`Vx>ZkK#tk{tX^fm!?SxXz^1=IB>0`hIMjJ z?93RkT8w0yIjY_!65*mjW1hxk&OzVLx1V|$mAq)3z_QhthL#3sMl&0j6(@_D`r>yF zLh>L&@=AlzdPKSVFi0t%Sc(UtnVr%Zos>j16wjP%H}epAlFdR~7uu6&zjf`NI9T`d z!Ue(_YfkG`O764#VaNy22&wk_czPaCt`_@vM zES_ELK4T?$Qd6SHos;0w3a5@L?Zp0PDkDdAhG&N`9 zC|2){lN)O-xI6d#*~>MM$aByV*=q5`hv}h*XnQdy@-YFf5eYuCVL@k+Ph4!`wE(U) z*;b09TxcrdlYMIAnb)(3YlL2zMGHfsa89>-@UCiab*A&A&nkcfvfh2}HGl ztb^_{x?4l7J#p{41nn~Ep0aL$Dm(SD?gV%m=Wd=vpObBFEGUK*%O1fug8)yWw5;v0 zU}|>W?m>^MvyzR*^}0ZwzW0Gp;MSD`GBqD?J|`eQujrDxZP@TnmSzHk+4nizm3@~O z$~}_BaMz8idOowNVbl>GRecpIP4Prgec{JlG)G^{83xdlj(`@%$PSg4%<;$wsP6?+ z_*N}prH#^Agy8#5yzHBH0lV-%a$BD<57i@2;M44Hja*bbVU?aYNX@@98@mt78&ODJ zAFG{2p3U`gWaaR86}4IpAf**oVM8&fI}7fC(*=!Zg*t2iwl1X{++n_0b-wtcs;ibB zuqpa~Az^;aEC*{8YE|1t(+b%5hAU~kJruBeAkdOJ5q;>HDl>l`TS2(PI`=pwN zR#=M@K-V=+xm4}(ru>gP3t(1#U@Y)yY(O+$-}_#$1>NB zCi1ii5YI-pxe9zVn@7(a7_w*<4H&!fnVcyeEmjT8^?T{D@n#dLR4uTmTc8R^%m&K3 z9WIIClq>4t6O%|}e`Q)Jz;P8=aL|MO1*ft`C$qOU_v~&KEgVqjMD5Lzx6tP!y4;Yv ziL?&Hd_I(=W$Fm-t*T*{+=txxc18F?D7d4=Y^;UBN(1_p&*0kf}k3fOvn^l4_jVQyH-SZsPn#8{0~cKPXd3qJw)n}2oVVjyNy>&wusW$9(s zWbjB=#*N)w2c=7AM-#Dg!_8T$_iC)r^K5BtgK;Ds4OjlMr{-y`sq(4pjnt_mb;1%D zD{(-W79WZo4fk9#?V2zd=!`}ct2G8N2Jd_~J#cy8J_q5Bpy7S=9AFFo-_iueNOw~Eg0RIfs(ICkpz_GQjCJ{woPQcVvEpftUwbqx;m@*o|Z5R_=G00s{k zHh!~qYAIyMv*E5KWStFp2+333_sM5b*CxUe+w@sbc+V6qqzV<6fcC?7p2n9uK;b`a zPW@AaR#im*QEX1JKb*M+c!1$U#JhVSF)hIlYqHst?yMAXA&uuwsh1vKu#7dN8LR{- zs?vh=)X^h*@iA1Xu+4+^(SbE)F(-Djl=k9G_g8PA(QpBq4^M7*T)o`cxdDq_9xz2tvCYl_y0 zgk1qJdFr#x15RyeIyc&vJcf-n3Y4={q9Sj}YDy(tUPH3=!w$5sX z8P>W`l`It6f!zmT#udsbcdJjjt`Wlycer8963LV`hpQ&M4QMB;@oi01Q)4*9dNJH_ z(s~*A@BaE<;(z)l{|Nu!@BbP8m;d>H#b5sAU*nH{`U!T;!8jAV09r zkBH659a4yVUF8+*9Y<_8vl^!x*VKGz`W9D+YS4o0k7!hd2TXMoHMk*~pe0PS6^Heu z7Eu|t&Q7{!)2H<)mhO>(mRG!BlrHO*_Nes$nZ985=E8)6YWfYXLM`aGLAbR2Jq=FdL&mQIk z33DY)y3kp@e9fEQo~hfA@efu6m5L~aKp*$z~QL|GC-G&yn3VU^#1-yoW#Bp_a^RL6EU1@{yc3s zVU;Qw#jh~9s2S)wNFJrP*bpN6Fl)EDz)F2;7{RUY%uV%i9|1$l9TtGv&FTAm=zDg4FX`@8rb{`>z1`G@cL z%fI|a&SA<=xyRR)*-3hg%Y{X|I53u> zt4Ur>so_K2@!lL){n!T-^43hxpOXL#iIZpEel>o&>Fp~>z|*G(NIVs3Wf7H@{8F944=_Ip7Jy1VqCx{YAehHXnh<=R)Psn+?sm_z z!lG6AZhY05N=>*TadzU>Hr`aSO3s;T;&dW7dDcchV*u)O$2tj`Av_u(&`E?6No*qb zk%)zYyeu~u3S>QpvU#y4g8?&ZW$TUkc_Y(6FIMJPpzZY7duiz00E0$Dm5S1m`3w@Z zW|`m3fwD*rFyv))GxI1dQw=xbwU+E3)qPI0Mg&<_6FpPy*x2;e-1$p+G((`SFIy4o>c@!lJWZh^22h6zc}tlpu|t_E-#{jjDN zRVmp*dwUyKEQI;jFJ6g==sXXUqPzEg1m);Dh!E+&yEr-hh6M{tzvDTqq7J&9=9l(Q z0DrPq|CfLA$Nb0t=r8b3{>T3v|L6bp3xE6V8v9AGO1D6Bb%D{&aL0XXH=_~gLY%W< z-FRKs7Xg2i>vBS|DON^NCk+4=NEFoH5tYhKSE?Ae8t0T~Vz#4^3=4rb>U!;@k286{AU8nLg=~=8U6T`$7RVnB3>}DvA=4S4q~6FBG}j@Cw4`Ks87?F z>W7j>U@gVQmg|dFN23b#qev(EG_JMgXNBP<6bR=s#RgA~Cvg6IXke|-+~TA*>~5$! zhzORJTre|S*CoXhfkmZRa{gI2r@88QYPuB?2k%tD<>f`MDXuk0I)2;h6CoQLShxgf& zQfL}oO47!ER=IYp*~noQhI*t$gBYCRX`5=Uk4UnbxU)JgR|3${t-}D3Y!vAs>LAh} zhF(AF0z`nPvn!{(&>BitZqDgh4$$GOxI0k|6Y=hehp{SKDyn2y$yqW<0e5e6=UOqS z)^6(p47hVRbY0w^r_WBFW>a542ewT_A-h6!v zxM}Rt-6%7dEwEbuJ{g$V0;Xx#17Jfyhp2;v=4(kFOa?5TMjUiA9F*vKz1Vd_fFQ%& z1~A}u7(NHKaj}ycZp8+1X&;Iz z2Wkt0;0x!-Rj3B|Se+>|{IGiH?&wdodf&hQBzEEN{n?-3AOClM&VTXG|7o9d@- z*c@uK_B?9(nR*+sNO$RUxR;4fXF+zCKD{8^ zFToA*EGsz_(l4Sv-Ca!ePQ4D>DBJdfYZ7i!>2YHh^=AlJ&Ip}=1*XSyGAFGN(Lf)T zhW2nXxz%8(mJ##hnc0Sf2_8%5rJOm~gd{;ZEBfB#y_@&mxX;n= z%jNHzSPt*pOwB;yG%WKmGm+VeYHjK(_2Km78E`*W_;4OSGqiB_#o|U=>+qEE;wePYNg#7Besx-%&_0A5t!99-=L>B}1)4;~+X&Y!s{O z%T~bFN$+HV=JP=+xHZjMhy*lS&sxOm(owt=BJ2iF7Z^Ip7|H9pzE0&ng$kull@2(k z_{)!*`;-U_n$XOjtq0{?^c5Cp;ePBvc(iboL5G0Q{IVz03g-1p+-C&RfY*?@MB8#b zjGu+<*J(LtCaz+O`us|N!`sN?yR&_J%&rQj6`%ZTL(+@4#>pa$=!ti=665+LxQXVU)LpYx+W$%b(lV6bTU%_ z00U_4w06zY&GDS(6tWkr-iLmrlYl@jok=&)f~-ztYN=9PSm9J3e2|k>*!y4&|Mcu> zv-wvGey%=_u3(NJv7E@}#BB6{IVA_$w5u7u zWOFTj?#|wW?AL{C2+nNR*r!o6D-y|Y+35D2?AAlds20HUbLMyq-NcpG7Z~#yRpczD zS(teUBw>dpyazH5^Bn3R)?czOWAj=LH&Ma30>At1Z~6LoA?9cOe!p>2?XkT#p^7`+ zpKqSibPr~#2^dr+cjw{GheJ8@SCh6V+~hOFAZQ&t{brk5p@dR7>k1wDN#6V5RPlY% zy5$4RZvNP3tmjHJunNmB#=4~Pt%f@_Ki0t{$|W z#%4YMo}7jF^AvYF^q`*ym;oOvM2Q2r<_2OkuuNzM`qy{4QZG2MGn((=jPP;mS?NtI zG9qO@Z3KeG;I5{(^ACS0{HOo$Z}4CJ-T#7r{Kr3W=iy)di@(O+#@~E27}v+)&uekgWlYV zA{iU;n(AY|g-ph)ML89ymM% zQ-4Z>mtE6(YPA#<#$cIVENsHLusqn=G&5eN45%A%eGA^1gc;2i%%2OcGmla#H1P6x z!h8q>!;Jgf$S$q{4=v;TeH05w241I`akd;2vYQaZw~TL$kS5NoCF0z(Hi*fKor>#!-mU z%t$AeGEQ2+xdtM4<$z;kH(p}IB4|@XpPh|brXXM^^>Pn)It<D zL-Vy>c%>~@xdbclA9MU9jCs_OaRy1J<`gyt z5hWM!Wr|j_&?p387#S>Wv(1MUyLs}!4PTKV-I@!SUTAbV`2!RJoVVjY(@lh$Q769mw6aw zQ=oA+jJs3ER5N0(cc|tomdfUp>aAAuGHIKhkb)X3M$nlF?#J!uriG^~rx)v@mOxt4 z7!+yKUq141yt%xY`;8#D+@y8Z!;@8oed^Jkr~#|!pCDG6ZxLOH zAgD<&ewHGHekhKQVD=x_XW?wZZ=@dRJVQHkffREV!xAO`2sBG@t# zod>{<4eLx1Yc!&ba{?vRbuZ zm6hj1Q|K;z+vmht)i~M^!z;k5+F5)OjTL$v(@yXvtUoThLu`U z7K`+zn_Q(LTi7lE`cMU1#&`Tc^qq9k>{uG!#M$qnSCAokh2TSu^uyo?@Pwm-rCgXvor)d!HNB zf_e_D{@5=x@1>l5?u!};YDQ^BW*u}VbK^w5Fh6&L*HKl=6;(>t6u zcj@FsA;LH}>$QUKa|@qIV^AXn5oJite2tlhRU={Zn5{IJP2MMI7F_Pyj`u-0d1@oA zxYlcQCZvR>&CbK0K3;?sQo~iP)})gstXRTo(o97vAdx3gmE^=SpOygU*)Zg=uhX`$ zh&{&Mdb|)^PP*$!VQ#~tQ1OK}T#<<_Woz4ypc(q zf+@~cpw}#oIJT2HaPmwZ7M5-EpnDA4t(W#J$`mLk!q!&=Q8r?SQTEqUh52=NG$6qyiiOlF_T+`0F6mFzxfhWnXP0@!?;WBIo(>6bV`;n?YB5Z)VmqnAbGDl(aE3uFLqktes$Ha=n7DYXN3l z?v%B;<}++qSHQ!1uJ*e6ldP<-QPAiaY0?*?J9(;9k8Z+)w0<(r4O=lQ&7#j}kVsq$ zV+3!U(|EsAhkfdpPz|0eWF>(^v!_($FfK`F3y(Zeqd{9@b-~AsGfFon8p(4+So{6= z8~c

NV_fQDliKp>lh;$i%#?iVgV;%?j?+4W@|J_M95?=;r`y6~%y=b-Q(zJa#Fw zklRxh*8}_HnHVT|`XF(z&&E0WncVjqUBvtI5B%GI`*-;H+Xw&V-~FDS?*)s5IRF44 z07*naR8s3tza|)Upbd9a6A7RyX_~zo&V6&OkN`1L=Y`3QoGM)I*!PV^V7-F953U$n z?p*91SD3C~5}nqKhSmafl%f_ z!-E#l2R#++>e^a-xb>s@!#)RQugCb%?hbbJ3UZ&_dv8rr9MiuzmC z;3V~M6a7ka{)q%?ETOwdna;O0i$IHcC<|x${Bz=2h&7#C+yyOCrZp~}$8e2-YR&J= z)aGn6`W1p#Md03>wG(TRq0bapsnLn{2zo$RV5n?#5}{cvzus~+sK!p}h1fuEDc-O3 zb-M3)aARiXT}g!xZBi^+aO%o4;qSQ>$l>J-I?&+WsfJ&7N2rj~-DoQu3c6%%jY?hr zr+S6!!jI35>eTz%z3uhFxeq_@!p91{B9vC3;%T7u`8=YYSmUln*XDiiMg`ricY#fB z{T@?hmrfa4J4viIzep@G>@`{M_|=WXCFsw%lhEcGJykZ&sXoH&5`A}35UChz3;JL> zjzaF}m^?d$C$8Qd3Loh-VAP(}lES_)k@ zS$KV1{QmyYh^8F@@Dm1K3;+5*e8)fgfBr4a0*ebP4$(f++na^P6(1-A&|A>8Dx5s< zKl<&@e}UHQ6J0dd+jglAEg-dOVh9H-ll}N}EGS>Bt`J(#7=10CY9_$zTFfd|gRx@h zONZ!G5)1%i5jJnH=T1yW$VsDK{<@;8BrJCw3S5^rU8meEp)-v|2^&e4q2W;BMi108 zLd)OA|=QlZK(2 zDY$49Rmi@YSwv^?np{qvnlJE?WKXX)s?h`Pu9@ArUQ|=M@j1;`DP4j|@%lWh2lT`D zUHJZE&%fi#Bsw{IJ#U>ll`pqPO{8P;%D^zgy&mztFT+KqJME?Khmk_Frvx!+W`$T^pii9=x)yvo^& zc#j#M+3Z}Mmo1&CYtGu840n=_y}?S*eUWsWE@|f){o__*h|gbAIwvk)3=<;LY!Pkz zc)j@XT3E|?twr-dOE1K(-7B0E^Acb&4+-PtORN)?mUz~5Gtd_AU9582{Jp|`sCFYd z$FIEMexh57m0~StK`iZ9m$JaA&vMVQ8a-|~E;>SN4HP^KPH@qXFcg0G+n+%I_bGhd2bs#V zy9Elwy%o82U)TlScfx=E&9}e!xSVc-&}f}%*}5i&1=)oa{WW6&96O5wtZ?!c)^e^D zYUmjX4&(FZD`U*3d8U<}2vBEJC6C6=qqrT49--wymCUjNL`tYyU_4QnKALG-KraQG z4|?&gBrIn1qD8+%#dD8nKxD6H^Cjk{`!l1~V_fYdqUp>w7Qx*Ij9^dL`dY7Xx7GYn zM*5Op%`c*h5ls&=vv|t*KE*%$a`T+82K&U)S|E9IqD}KN4R{zX(064sAMqCexr%kCu z`?8C48DhQgbVb4!+#DaT3$M%h^Un*h9KU>O4jpb_C9fb|{8O;oR6RDFEJHVJ5sBiF zUTQR0DTiP60K8l;=d#f}IgUnj%3ROBNBkMbKFRlwd!mW+xt&Cf{@uhWevLE9Mwt!| z%bYRw@^JYuIg1KkfrmD<6a>cmPJI7y3t!SxZmD57vA^Ka6GNx?DUXax!GTzpQXI3# zRp~>^QGIjBE|sfdIb$p@b@ZK0CLX;H3XFB>a8|_?WZR9zQ6;Fn>wxdi8z&D5a;*iU z@wY!;v~YgEZ+_m**A@Kvq_F$cY*``UX%!7NtPL3o%JijC(xB%AK3pn^7imq@K19T1c7du?Y<0SB zrqCqbpW+r=TyRV%c_v)&(pJ#L38`$jrVQxXSUQk*_2$Xy?lmJDPSf$>0F%#LT>pbO z=+R&ClJ+o-v!#}AQ?z0);(*i}q z7ON64Elp5`)A~i~Md+hj)+j8MyKQw01Kq9{fIVm!nM4xZpXV^1SrD?j^q{Go2u6=V zrcaT3C)T=J5zX%N%1gc2jgeN9L`ZaV!WxWk5DK zdHJe6)*isyG5&4ZE6WFV&9ZgKgwBgZA#0;M zaPE6{SY*x->-AdL)wtg|qS~DCok}h1^%MT%A2xPx{P^*SI)*aG&6`!H&6;a`dV7l= z6a=GL+`I5{N4LqLYWg2-M%;PC&Y7qOhZSLMq%C+*u%K{eswiRVP*bo$0f7X7UVPsh zzLaSO=Zj$8s--3b*^G~a9FbQiig z@Xjjg6dt;&S0@VDZN)y~2D{myJw?QFGyOhh*I1d)YEi?2)Qqnm*9io6Vooi5Ao+S0 zS{qA*2X}dV^T;si4{0pv9iS5jM=h*sG!7q?iZM`gOBqM1#w<>Xb?|KQM5jB-+l~ZO zOWUf3hapD1ko@)ib7~7xB$Lk6*q=X3xBN=5P6<7$6CAn|3(ha>+mtMNu-9gVpk5U2 zdf_x0z5;HGdn@_i42^Dv4Pui-sa=Y}L$@~f;Ms?F7Q4OK&iDD$EL(3+thKPKx$Cr> zD*4r9Wuj*$XC#~|xkNbJnh3{_R8vfu8IZ6>ak>XBmibV%=tfrcC7U>_tIY)oUT$*@ zOrWfdr2|L4pH478rb7|?y=h>-uI1fzxil) zA76Ok$NekaPfTkdt9bN>BD{g!Krwiq>ZVHu+=;GxLPZoN7S?s9J>@n)cuB3ji98!| zy%^S=drpRiJ|(x+Jz?oCw)=X7+d@zZ`qLqs@+gE#Yx6D!*gs!^C;fFwkdNh8n~e*Z zUnLYatoQpct_vQHeJALF$G`5HB?%%kWF69k>{N!EM(#fNcwMM-I;$YlkQS0n(@Tbl>WwOc&C<_w z_d->{-LYKgOFXjHnZF#hB3Nh3N7x%?OPCpU=d-o9#2#C3kf^#PfGXD%#SEy@%f+

zq!3wHCv*Ak&aQrH!=~I>#x7u`CO`1nq&UJI{Q&UA*kc`x_gl4!d-_ zRT@wYI5M8L2n%oaD$>R&fbZMDao z2spZZ6mrI_ghya&u#6nmnw~(7bGBMIVaRhZAQ?Pgz*mTVZ>9kCh>F;TnWKos+tWDm z^B}xKH79(i*t$!=)KE15(8V9_rYT$OPztJp~V#9_rN~WPSh*=D{is zf{f^n27vcY?21_o9CjDX-MYK)e3B*pt5b?ODFAC$5wNzhuV%eW&{BKr)rV9|JL_fD}Ds#KeLUD4f%?o9$X8vvAG={`WLCW(FO87MrFXNVrHo?}gc zTi1S_?S>dNR5Ts%3zEvh)JtzMB)XBz&ZcpCaQQV3(y-GJZQS=k^-*NYG(vdadz#_W z9(9ds+9#Mhc1l@q1bj`#*9~_a$unEocb^#J zS~`(tB|5iIMn1`!PQVOKr=3J5IZq|FDR9*|;%k_pYE$WN9X^6CI$Be_TrWDS9R=h; zo#eG%Dirq6F6IDqPRfEFigH)a1;`BRx{Qqe@uTtm^E;XW$M_jsVT4?bZU_?W`7K7Yfm&a;ti;Br(-&E_nW>GFkAQSFM=-Gw`o z4xeykk8$Ravz)F5DxHm(=*H=C;C|o8GH!ivh%wXGfznn0_Wm5QySG0fPDf{!#&lG4 zE~;Q=-UrDxAkQ0_Z{4TLbu1rt?8KRv*`0Z4*7)(`tu_$Hw46;Cx>)Q+yQzx0_u~=M zjG+4xPKqkZjBgFHP&uGhvGKGq)x=l ze41yM;=I|eGo7xMo~uog@BpTx7 zn6MSMsZtT?f3oEfixi9?MqF6S|Jm-s7@o_vfGds}A>a#P;FL4GoK&1vpM;iQPCEI` zLk|bg%p(>InMOAlsKbsXn^nM8V7+h58GMZ+T!*l9(+@fwG@(x$Gd)u~_B)tyon~fK z`6LNo*V(m$+${{+m{;duQLWG}$3OF=p3ux=nz+LA^u6D`nLj3k&cJgES|H;MAuo2j zn^m_k=m%pABkAO-R@YV>9Od2{FRCEUPVf%FDE^5iXiQ<9nkHl~b_as)F=OAEW3eHh<| zx1z}8FV8}u6f^Mr^p59qL!8HU-hT1>D$dA6?He&KWdtJ=_gcEUd5sI~WTPNi@Y?=E zJ2}PH)mhIkh_lo_xQ!So4@?B@OVrxlLN%s z1NUCYp;NYaMXnP5h8r@Z(mEyLWl&P(wGpa(K)1hjCqd5-Uu@Ap^IEcw0 zwAH8C4-3WGMiZZ&0}+-Cbr)56peaP5HBP~<&wNEH2uu1*l@F@=*d{?#Yh=FuWr6~# z(&{E-%8C$2l}dd^2L8f{Hj%|)MmvXVR>>pY1Q7RqV~&sl+$iVEULYKu{s@A5_rWh4 z9(j!cioDnRSybxqv%Sc2psPG(@23Akf2*|nUK1J|hW^9Nzq_8}i63<%ruqN}p&&5S=OZh{xv5gBVpki* zBC^-vB*Iz$u1$oCSbq9Z!-o4tCMcB@z!=v7hm&_n*D-r{zPMw}kry(ARmEz^T?Qbp z!QERi5}~vWxxA!ON}@?@DsbkM>r2qyi{wy;(YLQYmN@iWW%7RzTTo=8<$0fpn=g*Gj z-k_f(hR+eb&L(_tn~}uK3+lp5@ooC2GT9g>jNdyb)#*Qb;U#&|5U&KqX)FSOjx-d* z56;YK1n8luW#q|BI3+PIN2~6=IMc9m`+mbl3;-RD67tN`ENp0ud^lFwO(>}VL?fUc!PUIh4XZN5!%Q<2WGg+Vl!hDoNJJglQk(Aa3JLC(@1_n6-TF+wm zP037XRa5(kIRiONSmS~I&-Cr78rZ!*YuSu`@c5ys@WqD**4q5*Uw^?`pFlRWy~v9O zh8Z?cc&r&owgReG351@JBalH|!$}OLSEj#pEt%Ixz+)sb`Gu-31 zVR>NhwkKFXWMd9u@6Fx;#J~$Lv9<8}5V{@eFd_)lesZL-m!FTYEQFc`=%&ed$FDUdiB>4-(j~c%DD+C+DeG{K@LI!-hVSK3f9-MVt?{ zO)~izOmjAXaeP~ck82!BsYRDtV2HaNbM8|5gmLNhWogPYXlIl$I8OSn5ggiU0o51} zmo6&X3w{;y@Q{;4jzCwO&m#mSRYnrKN^MI`RjK+Ep3Lb!fH=QsBxllHj5(vJs*?&T zbZ*AFoY9XQCkiydk-{N#o{6oFa)7FOIw#KaId}HhM>vZEBE}^e2jBp^q!GbV z$=G=xSsW{ZZy)l5nwh>uB9ID|Q#}G`X*i%@(jG)>-w?spwk8#19eozhd;5KtGTpEx zzycK`vG&3(H&7*Nw8{(gmyW_s#n1Zh%;dV;!{2Hpk{*!X$b7uSym+0Iy2&{oy33im zrhR8!mU{xg+lO=(RwcC&OCv(erkc9qoK7XV5$g2*-TOes&vUCAF@hXvb8Y}RCP(D? z#gpA04rWqa&IPKQEuU1>a)jbMO)^M~#O)0wCE|LRNm{jB9tmH2ljDdz{m+$v#Brzv zk@NM7IoVqVBw|~+geFjZHjETFY`w7NDe&Bd!NKZ6Y2z^`x}lbQa%(|dxYyzwakjD( zy*H~GkH>g{=x|+=rDZ^nJUV!P3ZE9RL2f_jR2-zKf$Zcsoa%On zu^NX_Y=>Wxugoz(^mbAs=VdO!F^_vi7+Af|n?JR8aV9l0xX{?!QKvrRgfTKgP~Ghl z$k|EeA;XnbRsJ1#<%EJ5kqDmOO$gOKiFP*zPQ$W^!Ni=2buVa(W4ZyhrQ?A-ERmx; zFVh1VY4ucBftZ*>2Ub-I2D@7X`Qb5D%i6_3s#iIVd4ALk>Uuo<*{bclyySr17dn`Ox)Pe1s z8dW|5Gl6>xo5XY5@LVO1{2*(X3VZvs{uq-Z@FMkkULLS?G}B8ho(CSpOan~b*G8tN z&Clg_MUtwm*K)#}Y))(m!}VmUN^93?v=QR4Vm^{_rS7|+E?zScTdD$fgHG2F^SUrb z+lj`PPS;p8x@1WO{GbWx=YgFp})5^YF_D zNJ$zm5*}@d$VkN~ij>=(K%A|7(g(N~q6j!3AP5{#W}|jk(0krmc>AYs$efk4JJiScaIv%_;ut^4Ue86*wEMZ_OYOtQd zeG4%Hl&kCOxaJ-iqzaMbeK*$q4v%35b`|cs-6TVy3W!V&=aNyi@!XAWaEx<9d)2o4 z<(4cyGC^#N7+&E@SZn>woP2zeajdNO62WFG6`g<_8`D7#0z{rUt#;AUTNm~Ay_6To zSQ4I&-+wl52M#8T$4Ky(1!!jtZ~= z>9iFGZ0c1(L(uP zq*cyHk0hR}Um58{??6OymwWHSSy7ruwlQO1sp-CV=-&G*C4{$YqG}&LY#(j?!j&gp zqy|`=V`4MdyV1uL=7+pyPLW+gx&~U?fT~y92jP=p!&kZVt4XTz zha!_s>ggpOvf;Cv)org%I2&6n*K~bgLne;ZXZuYJA;y5l;QL+jHGJzD$%w>0b`v61 z0#%K=$>(m2Ii!-0@ZlM)cF_++FG%8L95Gk>Z1;7DcD|@FP8+PlCz1WijRrT{Gx%e) zIPG*VwYuo@ytB`H7Zl*zobL3`f$HM&mnce(z=6SgZ(PQ<;562)VXuyi6lbDdQdhhz z&9JZ)her?|7t{;Int-s`r#zzu5`(XkSRb*iiCT#qz`ZsUiWvinP|FYGwHL*W97mXo zmoW9kHE^#d#+6bM^@>;f7|AjG=S6_cercdE#;_Km!S}m#9TxCDSNP{z=q4_Y z;!HKF{rP8XltDwj5&IjBIAp%ix;G!=O&JgFUeE>@!kmMHl)7=9N?_l8#_vu}n1|w= zvd(0|&j1T2fshXP=mpaz+TT|av#2lg%IcGAOu#Ms1+rsZ3ssMnvGBE ziMQ+GBL>%!o0N7Cu|QqsCy6j?Mx>#Y|t1)yLB8Ho@Vg_<)h=X_PkS z71+;Pp=}3T0EGnem1>50v4?;axK9022&7Ix*6f56oEpP*)T%-gygb9eKHPUdpB$q? zhBx@~FKo^P=-CZ*;?*8LCz==o zs{mHQSld>xkx2HIl*R$B_svYtC;dncB8GY$jXfQeVgxi2f%yD^7}n+-AEEG=!F5jI z*4r=v)O}J00y18~FJvZAr7o-5;qKq_6P}xA`9P#4-eok+ROI zHO@bOJl$f5F^K&NSa!c|>MvIviJp&_xk zw+kf^HtAFgcZ;bOISiaS^Xhvoyo3%wVAn=4c^XECw(61D2#*8eBo|=$C57{%1>)4@ z>8_C<#3g@^)WU8MqoH)r_~jBao})gG8okPk6Y;XgafLV-7%|V%lycyp)aP32Ac_x` zNN_~z-W!V7+tUXr3j&J+g>lA(&u1f|z4P#mPb{a$MxKC{qXHTuUwa>w^Xg(3_wzo@ zFKDc19cVjnT|TAky>aElh;ytgPbpjFfYtG1OXc#%NMkX{kXlz>=my^Rrx-J|x5MC9 zs$hAvz91wRO8X4LrM7BKYIH&5y=gqY*gkVZo`^IBVwtIxH0jOZs z8P_f`nudTLTs=z97Z^yKd(T{eg_f9&d)QtxG*JW!pJ6B_5l?T;0sKYOYz zirhMio&mML_U8jYb%Cg36`@w+#nI$Aq_~+$1sYy1)N00%4zbKZjoO~K*XDDTb|slZyVtq7 zETGD_89|TI*qM#;M#& z?A~TIL?Do;Ra^i@PCzAQkTPq0y9aJ(-f=@#HT;S74$9xC!xDFcmG|Bl3|@2khuh_> zb`V&Ny&Jua^k)~o_%QI{i;HV-+!9ukSwyydptXf{EHLi27+pLb!&>_Lx%7Cu*xedo zbjpaZo*v~mN2a_{HArOFhQbXN<3batvZ&lQN_cTQ4g^OK+RZVh)!+i&Yom`Hx$fqi zKDkzz?dGLe0~9?vZItOd=nXfYGSvO#9D$64mowhroz@;z)~BP4sE9N?+&9$(+Q9qF z1p6!mUhC+Vf${x1K@z1R);mro95NWgaGnUt*Chmm!9>cX2_DjPavmuD%kfdT&Q&*< z2TPjDlQysR;vW0e+yPMKYhCK%R96y`Tl;XMck|L<1aVgpQT@ZDI1~t1$r_A)3n~g(gLqg&4%r1GkMS6s=1#q0KzvP2aDvvu&C21EVF}$_ouF~$tBQK7# zgNz7NdyAe{x?nA1V`C=Yk}At?1>3r1ajlL~HXU%>WX^%d@Q~U#V;7z7wNW|*rL<+b z-pd%06PYP(7J!fQjX4sf7F8gGyFTF(aOH!mJhqEhA;!sew%S~7f}i${tRl40Ev)rK zMBy=q2QLhHnGag^0kan+$4>0V?ob&VP?298PEQzHiJqnR8%2 z-?4p>!-&AM3QB9bLz|C5j7;q?q)H(6E?ybh`$mq*504A07lg(Ub_(*C!1<>lK&^FS zZSe7!$j8*}+m^>dOr-*G(h@U*clY^=O^oTEi-D3GM|h9jg$V!POX7AP8u=RZA1r6c z*IOF#fXs2GA)fKf9O&Jg*FbdY(^~9uTx$-`8x0|%UWovn4NfYcE*FMEaJ z{c8eyNvnCRx&HH`q&Y4Z1aP>^G5sb1p-vqNKDrx`g|EK6@T*^af$zTkQos52SNP#q zANj?H#0(*a^nO3NtMK#BKjFu}PQAY`Y6WUbeFyv5Y_FT?qAu~_@d1d<(i64h6b0au zNH^?_cR7RM=$3U@hRFL#-DiAh{&1dpZoF#MUi0I1Ym7)>nKL`W1%%x|J}!?9su2H^ zg)iU|MV{03IO7m;gF$Z9x#k`%*ak)nj-y-6k*Kp+B$8dg+qnEv>0p|TgTz5}wy^;X zsYPN;6mY(fF4esb-Tr(2jnTcjIGhafh$@J!g?oq9zxa6RewvLUG^+QZ4!K+tRzaT# zs=>6rXC#B>b_hC5a-p=9@PoZiWVqYf1OJZCXX8NdTWz3J28ZLypGW-eTzSUzJRqR? z_CeK)buV03xLC8Ay@U@R2j0F&l%DPhaB!qOW4(oI8Yz75vUci}j3NYQvm!ZX;%H~2 zUF4YBT?o8LfUX|Xq;ZslU=q~`o-duCWIEu|&TCeeNcY=4U~7#z*%DScwLNEQ_VK6~ zGB3}7ovrO^X29D~*$!dzuV)p}z{~-*+bOq7vxhXY)0Jkn^-ISGa~+O<7Z=1-Ioq@&Tt8ZbXb@K`MiPUatlDP34Zf|9;5nEmZp2WgvX86lUhy zS%b`^kf`z|EYks3OD@T^f$I_Y`0;`7zWoy4fBz-E`}PCA{_?{2-+j%uw}HnXuaQzW z)_TU>OV6Kw#$W#YBYynx=AZxg#81DxQpu1a_`aT)!?D2Kjd?~~)po}P zfa`j2tz`;X*c9C^-WloyA$HUI;!}}H&wz2(6H~3qg7P- zia8$>yTE%FuIXIr90vnAoR4cdf2lrc0TY=%%iE149Nsz-CyrLwTgVuQ2<~lkOe4rH zU75`JQm6aYq+LF-OWa)q+CR7#P@skT`NZRzjG$_l7e_ua%3>I(+fBLCn9x$-8W&aN zjr0h_1gg&E1#(98@KVnJ9{2mw-cL`tQR)Ww5)?M%p4ObujbQMRA@rugarmx27q9lk zwEGCDspBqTg7~yr;|jVdEbet<;DNWtLtwLNV=Hyd3qSnuB|d&J`PG*LfB)OB@xu>a z;a6Y1;qCGZBr;HI{M0YM+-L!-j4fQdkrOBsR92}}`xI3KCL@^EO5Ix= z3}zBrjd5n4I+;|2EAz1ouyT8&&F+ZEKtw7d*dkUH+@Nd>5E)K^1sYe_ z88>1^$Y8=4DWEA-VyuK1W0*mX;0$7)Zb@$W^gaW9dN*Y7vZln%K ztWaGXb0|{2DXiOvC6wXn61TSDNG%x@^D=Yu5-Osox`cH?_xX>!p818OHDhvEP(+Po|8TIso)wx z2w$*xhWm%wR4=agx&H44Teu=UpFfSv)=3<=500XvWeOA5HhdD#Nl@EMouHRrX!dDb z>MW0VY|)-KogUgTZp;kawNE#|YIF)%&y6`R8&T>6&ySjU3`Xx3PZRRJ7Sm$@eEY?h z{PvrV{JYwM>bCNVN1O9?AFu+gTj47WqwIVLOgZZ?pJJ42IGRQ&|uIoJ%JI5 zqwi_?RwN!ouU^hVppN-T4K$nP4%fl24(#2C@>k2HBFkspa1&NFy2w(i8n3(MYn_Hr zX=HvDi9zKiX*Y4-co~E4wU9FrSr|0*W0mvfpWbhLcwBglfxSKf!BfM(-CzqL<2Wei z_#2w`)ClL}c)s7tH=6#PQuU_F-Hf}Q@&qk0uInRKHFlG%#F^lMY(8SB zcQG6xGCuG;fT&Yx2;yD~^Kl`AeExC+IK%&4U_~gs{d6vua?6P16xm2H%268kjss1%R3RA2MLbektsRGV;y=VbU)vX z?@VVo?bU8jTX`6%WOMiOHd|BZqe^-K0&Rfia~A?Ygp(6VD8g}_^R)#z{ov{p6+qM6l`=*P}Q01xF~^=OOG?r)a6@ zu5B4@dM3wfM{@a#kM9X6eVXeYQoUo#WoeVF5Pt{H#uWG;g@B!cb@D={_ zr$6G;Pd73GS0vV!y2Q?tOBz&W;Tpz*-ra~n3`*L~DPc-tyAJ-#bE5#>Rah-aiQ{Wk zITuIM3aMaF@PSPbw#|=gsuwo~D)V;) zFF~su7tB+M8s`9(Y<~N7;2-|(3;g|Wzv7q!KmY07SpX4Gq8W@jASx8oDv@S?jvS5QRuqu*hy3Qpw+kQM0)PJ>zQcd`;ahz7%}0L!t1t1@mk(Um0NJ>oPrU#9 z&UJ76;g3J#fBe&*@Vh_!f`9+>#*aTORJUcKqqz2VT7cvHy@f&Yb6ih3E6eVQcvG+RX^30t_nIM3{}S{?CmdckXZA%#)6og#>mNA8bdNSD zSfB1fuvrE3O_bQx+7Ng3(T0aX@Cc1aZaA8i%yXJ7e*67b_|O0Gd;Rv;U-6r7KH}T2 zzQmUw-!QTPExf;fk`VmquTT8-Pe0<1fBYH$^}qiC|KC6TgsrK0y)p8Eku7qw_Vd`H zT`#Yqsy82FxR|bukppE?49>!X$5suMPmjt(8V4wJIf!y{q5b;i7+;B#=SBBcCO_Ms z{mV*>OdK0GTL=Ds^gs0Q2#xeow2f=eQ-1M!0FG3`?nTkmt-b4@)`W=jweGUpZSt_J zNe=(}YZuAskrU%6mVCA9(%-BkC*p-{<|sf??~Oc$+c_>ZHn8d}y`3Vll4`&V6LNPb z=YZm5klCnO7z22lM@Zkq>QnVjlIbe$y-VF9q7`ReS`ZZB8FM7M{E)i~95b9fPDaL| zm9VW?&Q#Y;n`ic6y#^jvsv_{qyKuj6{6(Mm+%MN)vimk?c@kBdBLXq_IXqLI=qp9+ zHzxnky_|u<$ z#6SJ+PuP2!6XQI+Nk(y+t()q0*$a&W7lqw;1oLc*Bl3%Gu4ek?>(xi(Cs=a$@DI@RPC!29T5UJ|#A z^oNZ))5S(8U5CuHtP#E%7wKR+4DcS290P~Cb(TabFkC19_~F5Czx|-^zMJ^Z|LJ>t z|ILG6ees45Zx`lFjPTFp(=Qu;{PWNJ(~k>(_?MsX`+xZ>e))9cm%EAaroEb38>F~; zF`eG+CZEcE(!Lj z?j}rD={fl6`v6zbTQj+nKNcol}ByWi>uud82pI~#O~{CO>qL(Q~@u7J#;j1xbL zmp1RUTubaqm)0Nz8y~I*-mc`J_Zwi~{VqJWFe4EX$|puVW>Ps2C_YBo6KJt2=CR>) z7d8T%m#3d?xR0w-rj+HRt;Vi~Lk+$?9(asIt9h^W8B+58Z1k%RuX#AC>-GD<2$Sxr z+-=JUM5go9`@osT@W|jgMwu3{`_)}XhD|L5;m6qPhC&~n+%bnb&iMOe9XiP2QcL9I zxI(?3K+8Q{zAQw=6Fxg0d@Z~v};{2zbi_uv2E#a=l(GA%ZHO~@t~CnVBUQU!{B>M&V37D(o6joD7%xRGU5ORA359TtNlDlzCko-@ z6Aj|&Zuwy*6^$#r9+zDRy)j0z(CmiD;dWRb$B1z`iVSS&WD)%!T6^R5rHZEP3~^_} zmLZE$M}|?82iD-weX$_rH4cD%;mYZIi&|um<|4BtbuDfI#KugTVAoPtac1f|-pcU^ zeD&oU{{FY$;J3f|hTnbnrXRllf{$s~&~SMOwF`g#g4YX8mN4FYtV$q>QeTLC~ve}rpHQ0C@lBuDtB1qiMVI7(C$OWV`eutnGsS))fY zh;j1xdu?ySJ%sQx`B2Mzk+Hb*KpZ18RZT2Cp)tWGRpL;Ia}thj;+n7gxEHn(5M#Kk zBS)C#Fb|_i#`RG3CfNA&TKjI(%`=4V~>bcq@ z#0*rgzqLc*B961Ufpsr-ms4f{Mo1VEsYdPFg3wbT)`^hCX}!-!(lEJ0OplWd*z$wf z>=g>YV?2(zpg!9Uc5N^cBW-+8d&bsv^ArYf5j+)poHU23O@L{YG6S{5TEvGB6WN6q zl&Nr_xn6M}9*=2OIsyBjv|BE(j^R&-Z5ezS5pXu{RjxM2@EeWrqDSjKZoK_!yLwyR zK{ZfSlw(-z_KV6;1pkjDK5}5r$tx4z{OU`5_4OC{?Qg!qZ-4V8e)aVm<^!Cwa9tBA z8&v-C*LVE;AAiC>|L!mN-M{|CfBwTy`1u*1TS=duOI6DnV{V_`BhX!VZUau%`^Kuo za}{cP|8$LE?sO!onqwvcK&hN3hrG#ed+GcyJf*nvx;pfA`T-i|83TwTt3@|MLd1{@ zZuHql8?4f*jgBBpQUiLUp2aazy^DnTyL)eva8>xEY9gWAm2!rC6ToNLX-KsRNcZuc z)mfyKf&ALtyp~Ll>!n^NKcb{Gy{vm~#0U+LdzW5+<5xLBVPH+dhX(ymZbcohA=O|8 z)XOD|IaRf>wr^)|*TfhXKw#~nU|5uggFt~CzLx+1AOJ~3K~y9;B#Z%t0+ZpP`F5lA z-Z$Q#zxaFS+WlEtHm`xB-gV-o?u~8RJ5Kl$8G+}$SqVoS8+cY@30(J$R^x39%rUv1 z8;pq&387-|a_S?d&~3oH2&y^L#Vl!~b_L_oI0Dg9QB$fFEGEXdcz5CDt36dZqyk?k z(KOl4JDYI~#5$9)t+&w(-STrQy#m?3(7iD+4A;lnZPQBz5oXfzoXQ751vNqp*?e<~ z`SQs+!JPc!i#IjIfByZS^xyv9-{GHs|D(SB;nx%c+c8El#OM7~Ooty1fe;atQ)h+~ zDX0OEZ{vZIu-0uYINgRSHu6QpMoZyHnlFIn>i7v}Ia`|53bHYW<7(w44j2h|wj{@U z`eZYl(O`QPkt0qn*DbZGBGOu+?Evucicj>mvD_8IVt`WMwD0PCgsuDw-w8C_Bsd5t zLo?50pAnYm`qEnfLXqi=DgTCi3em<%*BC#cgGigBV{8()9? zz+Zp=1^(eb{-E!^`-b0q^AT?kH>q-Z9I)SoAAkM@|Nd`(!N33M6aL3P{RRL2mv`I+ zEQMCx+|?ipQ3s4JBIuTS^**ONFIDz#`F3cQM2Ns;SoXuKQS+18;7D8{jgg2ZYd2Oe zlz`_pF>{W@db$ps8J<|s#X!@^oc5UKVGe->VC_ai7~zP|h{0xIA0%H~ms@rR7tCWB zUb~Jl;OAAk{7~eMd}! zTN?;}%0>oVg1Q6-KJBNSiK|f6xSv~FY5Ptl9uFgHSA9YX7-NR|)Nk6H2w-ScF@n10 z^d-+=du5#G0?sXAgmMJe3TXtF_wwG&i&UFjm}x9$+7S4e$1`Gj$D<7>Q2oSsm;<)e z+-1CO#({nv;L$f<4SYEgKmPR-{_TFMOic#Q8t>dzcm)w%wrX&mlok|Bux{g4*M`R? zwx_7wwaCL7+;`&&3k=rYFO)Zs*cp*ZJRPREExf_G6h~c-MXE~A|Q@|j^ zqN-5aO%t`a_Bvr_s=K`*o{7OcTJ>=#UqtPYcJpwA5F^j#JAfUyyLiosMB`pJ^9m*R z!7CC=;@^15ec)k@?!Yw$k16`(N^Ko~8`E3Oy$xmw*o{YTS#u0nLRkc8F=)rJIyZd2 z;)$}oPDuw*m=7l7Y$yY}z;D0(5c*<&SJ23KMM#8& z1Is+mNsoxOfE+|l>TM*ik=W189f4h;-pyAv^95Dfbsp|P^CirB)X2dRKF2ieZ&vg0 zry6W>N4S?pJCL1neEH^p2x<&)867cvL$+SLEg z)Vp*`b{toldz-nRh?_TG01{7;qKZWpxt3~Bt83b`s^8r`=^nId^(u91l}Zvtkpu|h zk$C1SB96P6^y55pedUEm|LJ1klAKotZEs%r}};kd-6Y zn(iM&=a>OjRqN87NZsT_v5I6G>nNva2P{yFj4_4@nO&onBCe7KVonxq(t^9^c`^Pu}CZPwwj3d-r_zoeih6PRbD^+_CSoe)#S+|NO=G^~IMj z_~~cg*X5dQ*2>&DZxd+}m%6taxic9sMCJ0KjU>ly;o=NnHq070-ET#2xV?O%Yw!B7 zBdFWR=IEP)EwF9isS)R`;msIzi@|;7QqBmAcx-c>zVt>!U@}&nwiH{EP*SHt5!I|q zJG8uiWkhpZAYPCfeaXZzCufPmt0Qt&clki}sTZzz2FK)59z_8Lmww%xD4kLbjWc%r z$wOeE)Dnr*m<3seNDa#>OOOdOIrFM8f*Lu9UP#g^xBw+<`@f78tjaagQTz%>G=pZ; zsgu;%4Bdj(tY!rFyop0-S+NiCtj!nQ)2raT-X?By!kV#(Oi&rC3u{SpRA1p1lC?*` z?W9p!hL%Z7)6}SEkd=uy!inU>tQ|5r7F|MTojRBpdq6fJB8&RT_Qp92xuE>b8k(ID zGhi_88L+K^kl5D&%sp#dbb#;!W~whH8VxxLuV3xh!pSID1uGWg*!7)FI#PLf>81$S z0t=yaOw6+NlrOR8VNBhI-B_uJZ!XNK`k4*DfVp-pW`aFePQ+#6XCJ+T-~RF=+{TXN zM8br1FLH(;WU-d$Y+dlEnusdQz)GJb3&p6a)_UXRw!^*GK36l2qRF}kFm)~KYC0W^ zPT0!f#y-XAb>kenC`}}y5;X$N8@sovb%GHW*C{i$q4`_gIC4x7QDvACJ~|3^%~3avRX zf_ud>5*Z5XH@{M;kySD`^))jE9z59a!2pUtb-%O6{N*n`#yd~%@$P$%@ZhfT?%c3# zg~E>34VSs&$M4_Z%P(K@_kVnjzkKzAx1HGcqQPNooO5DwV53Y1yGFVT5FWgSGT1T6 zF%=WD1uueLmSj#6QCtD*%^FUo7Zc3j9eDisgzf>3fgC$#4N5$37-M3L6iA5cDpxEs z*uoqZO|vnf@n^N;fLTAWL2$&Cp!5Nt+@%*w4`%)DX$=Pql>l_IUAk;!xpxhLQ zk{OW3x$l@66-Nwv*^P*Ds8b=%?u06al&L7DPYc{ zxw=l}y&?7hOpdz6b)eaXSpx2~wgHRr?afg!*$*zo9PkcUCJ+;qyR`CjX3SM^nzDJP zCjSkcbTN_X5cv_n9Kq&}EZsD$Z^)br@#T*(-Ol1qz$JrjKS`dX(vfpF5P zmyR;!O6ry1p=N3t>iavnN1?CNl29Ca4sF|3vdjnJ;<*FK#4?eS%X<-MC3e}*?QHw6y#E;10+=m{%<~4O-hxbib z@KWPA1DKh5yP`;|vQCy~EkYOsww?r|)Rz*kp$Z49pk@|M-kAjMwuXoITYdDwBmC+Y zAJvB+zKe$sI(u)R6WgYwL4mklcYOW)HU99&AMl4yf53M?yuszV9v0S%o|rM17-+4~ zmM!Bpr?RY;l}NyeeH7=MS}f8qrx>tRh1=yy-w4)Zm4VekCPK?dnw_z24d<>5&UFvm zZh`Aa>?1K(tgb>2idviDLUGp64o|!uQNJrmBZGww6ELP6VM-KgM3}4V`kn(3 zJCTOIZh4&=`KY3A%ji-n)Hc%%LKHZfIf%j-SDbp+ac31w^w891X50qI#OdUvU|5+(+RWy3On{m^ra6rYen)O4E^P zz|_Iams;w2y&!v%CkHGTmgVehwV|e?CUDvsUVXpg|N1|Fui^>LU}`zvn!Z=J+l^kP z*&CIgzH_s3$1P^XTX>X4r>*8BT}uRWzNKev%`4|5XfUUQ-RrF=7u4c-qOnLVDy-8@ zfqxaQ!I`1jp@5y3$eMXLTMUun2TKI#i?V4l-PV$iN6~09Cgd`oLmxI>C2YZJ)Ty_H z^9+&JQLBE4Oeupvad|6Q>l(_X-*FmbT_L+0wr=#kwBiNL0!x1gtORQ=C3riZIY(fh zf%o5kjGuq>6d!+Z&kx>z#1Ef6t<$Naw}#Ap&E+<{dVR&q*RSy9*FWN){^cut@zn*d zZz~|4kYC!0Gj~i3L@3#iS-6cMxwsd&1*-+j8}g!s9i|p#u;Tp_;-ilna0h(%^@Z2( zP-Ci_HY(A4^1NA{w?s!^f1@bkWuk5~I3i2RB5*D0Ff%Z7tS2wl?L|<}wld&COdP^U zqKb9w$)Z*^m~x)z_dw8G^JLo6BpRx$0?9HF(Of6~RT)CD0#?R?muAgH-KSD1 zla@;D3q%Cxj5@WpaGq<)Y09;ZEOy_}%yHc>8uP7%tdtSEg7P4|oZTJ6igOIm8s;j8 zC?-GI;c#ETZWNyH7OT~C1xGmV;P|} zM|St)kc4Jr-?jq6;t1Q5`W#upTSG>fLkc04B2;~TIc{jDPQUBr*Axs$gf3w<1IW3? zl|Y@lV~2EHYb8O@s#u(vdejsbZI2Zpj>`R62m%^0vMNVmC<;~1WEQIRjyVgTes)8| zK&fxc)B4%%3tHu-%zgKU7^B)s`s&J+teV9#Hgh!hLSQnNHYUnA$HaiM%8>J>i!;ye8D z&)?wFKYx$s&)*>F03EbMb5zyjJ_mwHPwrjUgsXC`u`lvvXY$~&6_GX~fjF$+;;G!wQ6#U?r@ zGgc?Bk}_Ca|>*ATcwT zrK>TLXa%%p*bUgDI9Dw(kDo7`YRO@773z2ttl|VwLERL&M7_)Jc0M~;iU3xKewF}Q zZ^D%(Id@d$@pBGlOm60d<`^T@W^F81FcLKiY)y#I%^k})RZ$5y<4xnJl@C`e)6$BO zoLLo%_hOdIvQ2h7fJv(SJLMv@ehd}tZRd7I5IFWT^|lr{1)mUiBB#tkZkSeh|JfZ{ z>-_A~Z?W%zTKcRqIkvNaIkHauM5G*kRfeq@Cguvvh#gWOK;0px8_I@%n39&CXx|>()?%fIrO5)RFr9@prQEC1|WDk2mk#qKB(XP@~`mD z(>pwR@&LVqR%0!@CT1pP0$+ap0-t^U0-t^H1HSn7C4YQzE3UdMF;F=$bYd5Tda=v0 zqDJ1>?hO5@gAa;!2k|Gis&elZ zfqL_1pgFmZtg$OS>(EPh>{EP>6ghmwFH3GtzD=me`nG{UVgb09HG6tTA8 z`Aub8fI`oqE^~CR_?M`TK<$U9;zX`8%~`ZQMip8 z#_YIFV2;FX2DbYR+twfexl%F5zhgw{T5fGYiq>gv8|}+Qd)r) zndRZ;-s-@glF7FDsx-$TLRFpD^h>67%(<`OgQlr-4((`2n4dHQg~X%5y`VWRO}89) zceK7?zuuS`*tQcgE}T<9_5-dYjg^4EGZW_rn_eIukgT<7Ot(S-pb1=`gOOQg#U+qL zP1yn4$qvd7MyjniO6C?W3_{j?yVr1h|+)>+r7 z87-?`-Y!IEb?@@`rE=ijwkqm**&;#j4qN=!e%|1lU_WKz;b#@-;3QCU9^@&Sc^x%j zq=cldbZwP&R%OiqTQg2Hgnm^pE!))AYlhqP4Gcp1-69D~H1~>;tQs)6-NZnyWL9F1 zM3xZ59n03emT zm0D%)Fk02VPs~|7b+6Lte6c7T8OO0%hKZb-=y%=zG`ospj_pg&W!y8W!8k)x)d^sa zl+W6{pzN#}6D(UAt*UB@w7s5JyxKdmk=NU({kr36cRqTsl@&Q>U>{R?SxnW4wT~%x zJDyhJ9!FxIv08G)7_)K&dRNwPhA52gUbSrPQANKyW3HPnw^q07o423Ktf2vmHNqN7 zdqaZ0!C2J_0Oly}Q}njB9Bjxbpf&{k zE~oLf@7Q{y8EVheEp!R_Vo5w}Rh`ssTS&u9Y1z#gB}Q$89&GHW%vg&bN9-fRQZ~b!DH)=?$JA1uFgTAdejUMBZ&;Kr0a`NARGC%f zTa!sPSJu!>er5xZG2j}6!08s5_4vt#UwrZo{`zOn@WDGz`Si(C_TErT+-^79%*xgx z>W3E>{OR)-_}!nr$LC+Xz;zcJLi)v#u+8ewIjxysu=bG0q!Zx8!t)QGrU{|tt zp){j(@+F&IovO@1-}6!?7g;3(137(&(XrV-~b)^`aZ2gdVLNikqRZSAtn&3MU;)Sz&nG)tI(yXO7+rfYM75(#dMfxCVx{SFQn z@T9e-v_mGE)YLFHWo>msfItZjbE}A;!_mA|RUokI)>bSTxU(t)tjUdAIh6KDvB)(n zFR!XxJCX&ulCr2GftCWA%MRV!q2MNv=xWL#0c*|bpcg3=tZ7ZeUQS#2MOCjdchPbW zCQpdGW)94fI=l>w7=<9+yG+kRiuBAOVWbnSwJMM^M`;;gI0lbZQDe-Nc?}RrXJhGG z!c-RyZ96f>sDXg{2Cst~rt6AXE?7^NdC@|19(PAZ6`O!X9NjeL`sqcARsy0-PwBH=8@8DIYiGH&m-oN=}o zEyv6l^q=sNY|YWBX+%UJZUb`$`qmILL~_frTv)RxiCCAv5XX}))nz1Lkby-w^44@R zn-#USRg;iq9A#-)RWntl&=n@pyklfwF0+QwkQvOJH1jHGEYNjwW6tn zAC5(bTOwhg+_}uvi?F#y&4sEM0R)(ltfu@zE-u2H;QgsfbyTw&6P^h*tG!Sm=NFS% zqguN|w}w5Zoi|oPqC0qh*EHV-Fh*1r(YB3-c#Gu(s$6hoR?J$B$EqUD4G7temWGPO z!dzCO?#8ysU05h=&9To}YMoZioMg^2ik;G}al8TE{osWE`d|JN?jKnF@BiE1@gM%- zdA0UHH@Z?$r7{_F%FGOK=8_YvgPH}akmRC+wQig_;U-8JA{Q`dl`CbU($CbK%^P4t zng2{w3E5auHKQ`r%5%lS-844I%%y2ti4Zn`j--f#u|BUdjq3$r6cqpHNzFOXwi8-w z+^+*}1E`70Mkg>U&5W?RRp-XD8{h1+ymxAchT66}%Z!>cc)&9DK!Kf0oz*$_sBSuK z&N&3&a9z*#RFjS=C3R~JwPt~Z(1=QdSL}P>bS7F`P^VO#dT5}iAI43yn(ltcMAW+R z1*<2~`$=xIF?2JGT*fY9?uz0yZ%93TAeoV3X08>M9VTEa$7SDTel~-p0`zOC`BoOG zrgbn^#>sqWPCAp#9PS%nhQ5JM?;TH`-0^2Wd%~Z8^0b~lxdSk>Ge7<6Rek-#AZg{&&KnSwoNtL&4nuS8t0SidJJl-oK(tABgZBU%83fQ+ z7R8Lh9-vv&X#+1ci`JPF$O)eBI#^jrVLHo(3WP8?Tu}8&L}ZyeW+t^8GK>+tU2b*V zCncpK3ZcES<&qA9aycx3sA57TN8obbRWYeYO_s_X&6L1T%Es!8WJVQ1^nm5TYwI;e zF_LJ$i5)Bu| zTh#Wkn7qe9Mv~QrsvU0n_wpuyduB32X(cX>Laz2^Ka6YZG}bm_%>yyoDD$&!ikYd0 zbC)cz(@?f?){Y1;WL#O}8gPisF302X?Mh=aE;&n;8PHuskcgo=8*(+9jNLk3z7GEF zyYJQC{`;TtgOBd<;``_Lmw);rGdA3vHbf}xaPD0T0V&&;UPvXa(`hTFetacT1sI8( zyIQdkHOB-(bh#36hGeYCq9X~!NNsPbiGE=UcNGILC22JKHd>WxU8`_b+5`|Z?4cW8 zQXWjYmwH2nkqIZ+2*7eZBfJt*=58yTH-}Z?b^|Um%a&!OGNo@d*|*I!-it~`${*6V zM#QX$VvFED_X3=a(O_jpxJadD0!J@`1CNGQf(@*(547GuH;#Q&u_3T=h6to2Xx12! zHBx-shK8|EK%^*SgxJCB?y&Ep+!~q_5rf`X@{>BKGDdBETO0QyZYoH4xf)F*ZA$)G zhAcB(H<4I8(pIeXQr6*macK=I^CX-dm_r8*Ys(z~L^-Ai`h0MI#s}{|#>XE%#>XGt z*Xi8YS}(Sy>*ei+cG~I$@^-m)J`v>r03ZNKL_t*I(?98_&9<1LNVn=$AjCnXXC=w(PIcNK_uMDg^-c33Okof|R( zuV3sx<#PE`oz&>8)M@WFiZK!+fa_k2ki{hT5RW4TW*6gfwJhqVlu9l1n*iqE%n4iL z-ArJQu}U1BRzg4Oi$TzwSys|rtyU$RbB3_k%dulkLmn!VUbM85e4u#z@0n#VMrfha zTdSGD3RZ8<$|O>s$pSd^$w1#Wk;Y=KF&62~FeB@TOPWs3h$`HqWfH9~jg?kaGN@?J zB5bEy)39@yBUxahSA>>8%e!?VW^_}gFq75>AoKEi+he}1U@ z^O?&fjO&~@wG*?J7*^I&4McJ^R!1Oav7a~bL3+pa%@tWeckzc~{&dI_FDNi$Upd~? ztbXwm>L*bp3|QkM1ppK>D3ZA>-E!$g0cp0hKNFRyDstI!CMVO@MyiAokQhMYMrN?V z>eNq|`^16qEffy6hHw-?gA-mzSj{PgdO!_Pm;yG9W@f!w6EeB>eQ@i}ZnkvUQDrNx z9YA00q?%(HAqelCV+0}$&c^e3LscL`sR0@}VqYsZ>D}AfpUp7^&;g)Q)Ie(|sba=p zkvR1eymH|?^km$&jhTT|@LmL}sgw1xJR9l7gPK($!xfEFzaYj!3Mj7gHtz{50f{mV zGl&_*)A>~99g*byUE^PW@~l4j=qaDQbFL>(&UV{xg@Ac$l{w*bZchC0;uSvq)7SXN zfBqDI`RWZ48>+NZZ!AdizUY(Xs8l(^o7mPUgIfnPDn(7(4jHQLFkeVX z?<*l7;E6V#32ll)nr9}WB7(g+n#;;CR#`7*E_|x4v~Efe(1;mB^t4%^^T;40wPC{) z4icH6MU6QVhItz}xzXG(V%MD3J7yLuCtB0hQepF0^|UolTy=v0aWbMo`-izSO%;JC zL8%T}p9~iQT#X{e42~e?>VX&uTOv|Jv3udvM1hd-6Buda2zWoE`w8w1F(ffv54n$3W%bdE}MMIP= z7+tx(nwaCJ=8zdIr$$&VhGE1kGgGn6vJ4@JeXx#JqQP|H-1WnZJ&SrpV&*{ijm`9@ z_XUuTIhXlXW&kVUjQaZDVTIN^a}3P6>-2A^vFDm=CM*r2V6Wu|lkYuyh@XA@gzr9m zjME0rP!%_4*1X*SD|+vE@#B^M{JSseU;phnzWDOWEXQ@<(amw%9GOE47L6s*ye*ZB z)Z)xQPg}LliMy7(KXEL*b7CvDdAQ)%0#QZoq>c` zRPnxdw8phZ;4+^d%ge#$4Ko6BU9UBTFSff4*XtFDtmX|P<~pNQW#zg_jmji5O{&-> zMm>6Gn$j$kW+vUmgeY%tYq+~>`2P7TeDRkb`J3NVJ$dj1zy9T4^Vk331AOt98|Rc= z#Mn{0o*CQe#K~C07QLuCK(j*chO~)-It}o|b|UhPgp#c}Dhle9h^ww5+0>P&B(*4r zpKads*ru7V2-+;pj4~(pNMuo60TxS<7!r<+M42OFihbZ}i5g<{q4^V^n@y*81DiP? z-fy*?I-Y;~Qo#lz!wR}tCAO_|j6oNqco}NIh#ln$C#=1Va>fH-MXWFWI^O48gKjJ> zxh76XLoAq#zTf+yPtYmMg%+QCptX&41mYKOg$$T4%%(1BjCflk<@FkL-^$&Y3N#~* ze|FPsA!e|3Rcb0~afNAwl`WWeE(?cjwd<~2CDFyobI*N{8RaYC4Qm`2>y%LI#HdzH zW}DmvWuGp}ci|``s)2`Sa)XZ-02s=ij`-7((Zp37|9PURpS% z&`zw{*U8_&%2_mcodBE&_TJdLRS|r-4~!nw-Ixe)PR=N zr0Dw9v!q^+b$(tC*TWD>xGM8HrOK}sp)u1MAh2?o22JfmQ%NKb%61g3<1lc%rO*cS zCzLh zR{3K@0b>HzR9Yzg{LF|>6{ZZ1?uvEA+z~Nx0Qfa3nM`xa_%N#07f@8f#K<6WVpDD2 z0<&5>3FnwZ)ht`2?T7-b2}2BDNx>DtgA5`+zC``&KYfM&_?uUJ_Q@lB^3g~5+u!~Y zpZ)po345?A*0y*LgN3H}Td6(E&{18%h0vr?Rr9Ja(2OxloSG#}TUl>AzDPSz5R`h9Zd8*5nu%^Ty+Q&GKqxtQE;!_Y{o*^t#gCV3e%(tRhhZ>q7^fSG?Bfl##vQO_EMcZw-X|(Mof6$ z&`?}NFwD6=#)UO60x}HEPx_KB-`ZR<$voz$-WQT)htp~93+H2MB37-)ljd(`z*wr8 zAQeP{w(?@9>nt&IR?CgFrZ0$1fXN@ee}zB%;W>W)r?2?UkFW9S&93@1Rrml@_aq&2 zPab^8oVsP4S|>A66}-2OPfi^V9C(?*ug4YBh)nruw|*=hiMiSoB3M1=Yg4z_P0_qJt1;L|txLD&+kg|J#52 z7yS0uzrcTf^ea4k@EE`N`6qbq-QVMz=ZR{Dh{3z9p>2i{JIN*xd;R}y;JWr2U4<%Z z%rS6Nvl}rd1*}gLLx9UAr>Kw@a5=0BOP)~cg%?#Ai-S%pxF>}#F}Rn!b091Y8O1Rt zXo*pQe%fFLX0c`_lc+{j5~+s;Dzmn`vjoDe=$>UG$(+atG=ISJcDL;AYL!G0<8~|C zPBde=6Yd=`F2X7V76YAV%{!yiC@ZCSaj=9*pqqne(lCk3%Kf?*o6}kck?2rW*fL?w zxNhC73VE>1FhVBWITKY)z0EbFm8@@FA$5+2ii&{cJyAM7T#F^Y7o_&2=nubd_>@lW<92Ck|N2lB2b)oIq0ou`rAGR`sl%aBAeZUcqc- z9!psW-ubym$L;m3QyLqrwtm9H#}9Bl@B9{T>cwsH@+RxW90aNwowN=2cdQ2w8XrGy z_2lt}eGso+>>ME-Rwi-1+;F|knnT=<)*Oz62x3N~!y%5_Tq+u=!=#nc3dfOC!hmL4 zFokW@$ynd4qdgXRD2-h97@cQOS=hQ0<`ofSIh?7Oq;}>a2qg~%f}(V`;9o^_8bd7r zWUN677s3z@dSgVc(t>O2Ys$Q1<z4K_KJ!K+@J1nOR+5uku93T*P9L+Z7M9mZu*xhSJGD2fJM53>m_7WVR;EdSODgy=Z7FmtX zv99b?Nr=eu^`!$G6)u7pCJRb$(4DuL z*k^*)O1~;SU@OI09*`ErOrG8v59%+?sLfBfv z)X7JBrqH*T28@_xa9V41OYr+w7bFYK6=5kluY2Ls&%VX)|MU%CyxyVldQ%0vrf}U0 zTa-vv0^T;AwBQ;HfzuogW~LxMd;Ax%Crzo1i6q0`;bmX4tM9p534E$tREa zpq;Q^3SVAc;=9{aZapT31f6W%@#x`+?>_G6ZNgh}zYV;4GcaZ{OC+zEfy;H`cH0?Q z*jihw2ZNKy7$U6bZ3$6COR?f+z)VK2hOxP*4>Q%+bFaC0Q;@FYPsWGu{8!@jO5l&sF}zaU=iKBB1aX7HF|6meE(3@13_OI)DeYk zOBg4%Ceqpr8P0DNC^%@Hb?*3o|L33a@y8GOzdrn1+~1w?$@@=nzd5srt#_b`xvy57 zIhu8Jb{@4%Rn}LTWYN}U=*Blkq0*Kz57aGE3%s}Esl|@KI<(fprs&^EmhUiS?0aCb zPip1LT@U#xSTp$IT8H*Z6nsI<>PG387@}{Rd9jk$>rFO~^SOHO-1i%r_i|2-TOfD9 zwhdUg)T!P&NyC^^i@V z_8lp*$eQCO*p928$YCb$CpHtYimO^>YPM+pIP0x(Kq36)xLS_2+nA{CY~57?pv06} zL-8!t7N}V;xC#d`#DHrCC;0N! z1rHydu$_bFr5w6k17Cdk9sl`vU*N@?QS*4xAlMEWWzC~s!J>igB7h?5)JSuY8L6`; z!ib9{z8*Uw60c&`zBQVi3N`7qRlW>-^ubep_`!qv@W~@QI(5E!b*)do_>SLvdBLj} z18**Yh~$I&6CT`ec=YgGj~_L#CicBJZ-wj2SGexL?OJF`O!4~qg4=aRWXZlQu+b`& zDl=ZiRhJeVa@EHXBbMI|pc~KU6Of7h7UcXRlq5tf~u!* z(`_tPYc$u%Xo>JFL$^HF(%Zzgz?^eIhtXDr(e=wz8|@n}YP z>ta&u14^3K8VeS>leaOUQ*wt1{9g(UIVz)?0V9$bQP!RGEHW{(IC7$4tFccsbTo5X z5V0PFjKZFQR#q=AI3}M&mZyG(!A1H+Ip;1FE-_Y-?EzP|fg~83`=Ty{!3L}=J%DrJS#bRcnFOc?a zPK;%nSLjMFCSOwI$b|cfEKjg|gDWHa_J&M~WwE(5Va*$8fib|4(n{{=Dv;O{euoe+J3#&)RGs|3t#8Wwx}9K z+!VEhO>pGE$9GTpH-G&ee*V$BxU;m{1KMDm(pfQV|0lujMs?(ZF+^01xF- zw^l5}xCsVjX5ua(7xqvOTN+j_^Em93Y9ggGP_9HwW)&GUw~8Tb=J|9-61dH4mGVY4 zkSs%auK9AUzlWI^GA1vcILZXpo*YP&C7U$U>gLgpYbH=d_a+9mH_jNS5LioD;p9dK zX6kxNfysrJU&iWMO~0~ox=snDVA=*x??Tk;qc+LOu zkAJ|UNB<6wA3wzVA3nwxU;UYGch&nDk;O4aZQF^FJDd%zuNJGsTL9I-#GGgqJXxVP zV$OKGz>OKO?l^dSVqhpuQCJv(C9Mb+ny<(vC#`wSEbLRY?hz}dOwriuI4rtpUy)$U zS+r(!KO`F!tJ8Ee^b|QHGNU4$S%uqeFP5XV#(cYkUQT(#V#-`8zhG&kB0l%pLRjsi z*wmC;&d~LcnwjWr(>fTjwB>~nGJsgOL*|J&hl22_y6W6-EIN(7jwrNZTSn1u$mPtV zrDM*)t?8F<7L;#K(nt}8rK!(lB`{y{tvT5B2IihoeMNsr$GJCL#=Z=AM6-^Ziz;r4 z%e7`K7$SDmrI&qEg(GieRImgD5k! z-m&k&DD5XCzEFUoXhJ*&)sJJ0xkWk*bHIc^{#pWB# z^m%m>eLI1Xs5#f5TW9tZ@CCCHbL@g1wY7F!72j^H=FGR6Q)HqoFy+XFp*5l+b=6+L z5i!pLR>i({Hf9d7vy#T9mq*Sb*BCIt!nyWz{N3OE3qSef2|oDb3Ep|~0KHe8PbXFp zk+(uG!e{C4iFJL2%0dJpvX1a$<-|S*GN)*8hLs#qxgeqzFGVRZhr#lvcKC5vGy++J ztvis^ek`;YR4lhCFaQM=#<*d|K<^vf9pgGU891FzNE9<%X|mE^zc3Q08kjl7-yzUW z8|!x1MG}EvT2-(}gAC^xsJOv&uLmsP<}%l35DByhupqwa*81WV)Pnkh`kWQFlVH_V zN!6u^n6V;cI$zWRV`!{1X|T!yn_E>TF8lR>&M+eYw`#qi2<{O8Sl&9b^gyW8kX*?& zV#SWY3bY2a#+u?GXoDKM@}hvvwO!paD?rWRAja+iXcAY{3z@vdRBk50?gejvyDdW0 z4!4eoq+8*%ZMa-^eD%$D`2NS2xa?PGET~rC$jO|tI&^Dm#!Q?xqj#gbY0H#N%9|?N zXVwfucSp=bn!}sftgJFA%p(WxPj|#feDlQ%e)IhM`t*-q^N)Z05tk}#cV~Y1)baG4 zj;D_ur*B5B|FUzClDvD*Ik~9}I1?x3g z2t*E*CRR+(MUA9YRAX0OHKg%o7W*0!hq$Ub?b55TYOZT*o{@?cE{2n~S)rRwIf@Mt z1F_)t)*JyP2Ux_+Sw^)Yqcn_YuDN`(bz~8=XsMu*3rSyZtNg8F-v^9MCwL~hSzYH& z-K?4tB2#Px0eK4MKxu7>wRiTm1QJED%Mx{#Hrjuk} zil*2v?B3y~S$fSv6Qy4xAFO@iEHrDhW{}O8HkbLcwT3D&g-x4wU10I!UM8HusG(aEDmuy!vVqR?s97{o$j%#Q9>-8XU$_?91Xl0rW9 zjC3j@3CA9zP?SjLxOEfN&BErKX$q6G&yWXi8E7pnJb8gZVG3N10q{6w|ELGzy|+H* zL|5@$H|8}3k+mIlK1U)Ak~xF*tsfk0L7Bl`PO3Eqoa$}_2S-i~1z$sm(dgXx_g{X| zzy905+$RF-|_psv76Yv&#d0K_3J!jGeQ|Q0Php0)hKj0*iwR% zp1Uv-7@3Ur7{nAC!-N>*<6+&kIA$0+M{+;MrjtiKvy?C*Aa;OTVTE-);y!t~daNcC>4 zExdB#U4_>6B1?h2iEYsk?B=|*otaIV?dxjmu$9}@K64JM3%XEjnhI(!PhJ4Ckx0xh zU+{nZ-~XzA{;z+>ye3{>hkpL<@!aSn>58^DIOkzYquISN2a#6-dtmJrvY0t3eS;1G zPneW^(MOKxvX(8v74jw?kQM^rs3rxY1e0uxGs*0uITyAHlhz~eE~w5<@?VF{f1MhE) znZbnv;{b47(gwW& zlPTQyeJD{U8p;@0R25&m;MUbturV%NAJDh^JOAy^zv1Vfzhl)n(KVa9gk6tCCJ$y` zG}|l9^WDJRjkULfkjo<=9v;Bzjl3qb3srB9ywpX$-jqRv_0dMmABW45DM@-9{_qI!v}tKgP9})yEaB9v^St-E{8G0j`M(x zN5SA-7U^G+o~gz(kbEt$h~T3P-4KN;v8r(bE2wU>qrGBb6X^WGQvg%gyxC18enQ%< z#odKzY8cQ&ts4rW6?m6t`hmdiCwbZru_P8Cj0??z+S~`oe~U4!9x~8BK_+G}8q&Kq zXHW|AZsBv%lgR}D03ZNKL_t&+_6Z$b);?27Z3_SMmrwr7|M-Rf<-h)&=J>+IcS^<+ zWQK#+B-DQ6`g(aj&PM4LHR4_i_u80q@V9^Yb{M#zPN25jRBFrk6doTkCLZNkmE5ePG=)6lmsQ8Guv{i^bOl zA_Ld;1-(B}Xp9(Wy-7;foYpC;1SaqDl93?_^+Oid-Po%z=RCH@gygKS!x7L{9og9t zE62d9H)2fez4-IL{slk(`|l8gYv0%a(!et597TA-ePn5%2>kwgDGtmUhmN_+{&^i+ zbBw|;*jlR&cOmje>-5u4U-)1C^f&nXzyHu5f4Y<@?%jBQ`^4wk`t{dO{Px=?KUZT{ zI}Nyl=r{@MB4tCt+8b|6q)<+CF-YM6bK>ZBtMs(e+(!=e`%%jDgHx z_03Ewa~xAcaIJ-sH_E#k1C7%G>aJo*$_&n&Ka4qS&z`NuA%X4aCN*MACSh|4Y^o8% zs)@G28bN=*UC!}~M0d&0d~$|&C24`Ndn1NSEi{&K-y6YX#K3qkp#k0ZRwQvnVkDd~ z=a@1?hWfzBGeZ&0Ij9jqA(R0!tW+5}weO80F|PzO7!GDKr)H#i&;jl$sOv1zLm_CF zxVxToTs&&lCtu_^1fBlwh31i$8S0-TKlj3CEi#TK-)s@=-Mlakrd*gGlY2}5=l}Ds zczyYxdLThWj>i>8=LtG=wrc}HjC7)U@4}SB40oCVY!&u7iO7U=5(+T`z=qTuOt5{J7wOKIq)@uBOi2Up!$LI8LLU3Nu;Or&7?sa9Rv?~Dl=i}OS5{z zK@>QyD0+Va_-1opxtfixw%5UeeGT72)NW*4mKL#{i*<(LPALdn;jORnvx2&Lx6_ju z;lricORxe%&5>@OR{^_)RmIgCuWN8iu%Wt$pyGhaKR$-d4R~WrC$l>0$$#i3Fs=cz z5vo|bB?-NSKmXfb_{+CXeEYV57Uo$@fOdv^-s!e(%uC&U0N}!X@0cUSNbCZuZaGdW zpO=G4!yBPyI+Yx#TR(mIg1`U!ulUb@`WyZ)|L{eB_-XR{=O_O1`y1ar-~9R4Pkp`_ z-@ljc<(x_?l%*3Nvjo}3zSP|J8@o2j%tUkdgD0Hwyr?=R&$IcxyNHB#ml+UA)=H@9 zpP4==k1`XHp7q&}P}Z8V4-9;o%d!^=#W{u&Ce77}LkczhycpXFB%{2P8!-VkZq-q# zr5)XBbcCTU3eFJ-6_2U`h(NVNDm^ptauo!7?SpdlMyOECp~J_m6Fd;Ae(--@WtJLC zG!8Qxg96i9R#ZJ>8CDfJh6X{8-pxcbY}ez435>8rv-=hpnAeEC zzXM2&m|OsU|F-$(KmUpWVn%51I-Jl4@K3D0@cF(mKQ8Zt>Xs9nLJaX+ozcaR>bvEW zV;mN?8o)T0un_Lf_*lbjxN*n_Myd{u-f_1!S!OsAwzO=6PYUgYa2`H3GgR&H+B{n5 z)y0&69OpZ>QTG_A0_XUGYczr1{j-fkPGXe{98`0Be4uNgMDD#kb{WYk1FB%K9mW_K zyUPsGAm+R*laqMYwxu(5N_LMQ7|=Q&R;$=0t@n-VHBV%wo?uUJuQOPX)2Fpeuo{WG z%qj&#!>uaQqe$NOV&+gY*dn%98z(jJi9^{2lpo7!gue$tzOEO@M%QK|Af&p5-OX!+ zEM(oFidQDqD%@yo;T$P$ubn4x=0+lZ{r$#T3*X)g?{##FDG~##PvY?2Mkn)t-9g2F zKp56u?DB+}afoRozRdX~L>Noy=LlcEO#JO1e&V10@hkrMpZ*Si`1*3va&P?d%WwFX z|NdwE@|PRmZnF9U6nw&{0B{U%SJh&nPztR3w&*_WoP4&@&(`*29G%L@si22e0g}8% z91Z0|C<>!zJzPCAd8!*6uSteb?`3a)Kq%o}n@{?4j$xOpZ~*bPQiD>Y<9!68%2|zb zOpw6mdb7fxZL~3z*L*oSyKds(E#0ITBu<7h2T7=UVejVdtvs2CRc$LhOGVgC*XI3_ zQiOg$?*mPVh)iW(1cAMma-6!nY@v>0`?q4jV+2dMh(aimR0Wj8#~cF5`+XnsP>>ba zWxx)j`T6-N(r(1MO~RNtSw&pqaDRKl2cs~~(lnAV*WHTomM}TsCqoA+8^{R`1Af>=2>AT=iR-#>O%oMKa_`1{-?*;8^_r+7iBt)L2F2G}?B33y>~iG& z45+LQaWR@E|GC3NYuUQsg4PA6F}V1=H$QgbV_r@;+3ml9WZGl-`{c=-w(?Y1{UG@W zWMHYG1Onn+Z;iYnnKCuR747SKp;zO63%!HgCkVhnbp)V~*To>P??y#}W2m(4*c(ZJ ztb2R31ad?ii$WEmZ@^UrcBd4{^tb`+MuvHuH{1#Z6CabbFkQ}^gSfY6MJmBxVUSVK z-pH7?#?nLX+GUHTq`kJ|!}G%OKnqGC8faArt&edr(&~+du*w_w)km|e0Tj;i$L+lu z93xI*ZCi11@G(D5-bgwY$8Gq1FB-wIJq~T)mv6$Z3qYs}^ml3P{T<>whN^M={jI8n zaO#d)&61FyBAO%95kGEt8KzM@BJhcLk}Z_Wl@(m*{}>MVj#jJqP-fAvWm6O zK0$~)@lrAV&MiBMy5&P+qJ@^T;6`86GEB#s{{o>@kTsiR&6*xbyDbqQE&rP%$$O zr0OJ(Ca}A(yKDxt3!K7Vg&mCM-fv-Chz$A?F1su7WG9w@Vxpni7-4BXAnf}S$TUvB zi{qRchlZ_=V7pkt$Rri5oWpLP85kPC)`?9CB*a83VFFgfIAp3oj8H(Rbt8`k$;0d7 z$Hx~iBzL#t(HEolMk`p7c7q=tS1?SpK2t6)K@PuG1C22!fYQF-c+KlrVhd3Q0v^0G zsCX=#Xnb>gQ>HQwpDT{vy`kFeC0P{i<2uZkM_FsF>)AVFE#X^lljm@}@-A@CV|CJT zgV^lD-^Edtm;%KNFIw6$;C-6scULFLm;>22{`TvO|NM`Cz@PrpS6)}(x4(SDZ+|KL z{FlNnzc+sQWpV99^Mwu^W*Se;;0h=+xbGW$L>xgV!N`Qg5U;#fjrlDgr#6La# zS9x4(;uO2#m2ki#jvz~Q1}xxz{--}768QIDekb`UGT2KhkTIyG=Ja=A)H(z)a2(w2 zYN2r(0r~kxc$SNs#VRlK&bXj!49juFv9l@(D(Td7SUPpr8^KqUTFHsYz`oz7 ziYy9SAFp}Pp#4;8X4&#bWWYhGyUi(pzkXl%`ZqseOrrBP^DHNL=#Sm>L9-f`4S7uB zPg^Jjw}^WIt8A{&lTIREp#igTN`*Fc!*U4&&KOM06oQ5%gOGMJ=d`@h5v@idAbj7U zv5lfV|8x*(nABt50C22H&P$L`%Lb`0uZh=q>pFkypg7r@W9pN_E~5}KhxRHmPCykc zLG-wbiU?NOf{m8Q!$+ywXLf3-zjHdgV%*ibOTd_jvn<=SIAA=bS3enZhTh$P3i%)U z2}hnJ_G57aBiQJZ*kvpth-kaJ1WQpe!WFJdxEVts>l7sc8Lq%mM*MytHJWKw4qfvd-7D zP()IX(6U;`N^F80!>%sK0x_IeobHyeagB)q(3CGP5l8YUVtiRI2j`wyJC4O!m?Mtb z{kXKB+2Tot8P4h9F0yFYIUr}79$HjHs^vp0Y&c@Ol6I36VkEhju=keVvK_%8RASfW zdT(@{)N(#zCDNVYne&)%kLraOFXzV9#+XEHalPNl*<=jlX{CAG+^cSmA&m@Fd()02 zl1Z6EC1<0E)P{EBqQqzmU7E-k0+Q1JFkBoCCd%OgB%m>fwZ#z=$vCj7RO7s?I>{yg z@4cSfINf{k>kOowBgz=$u!AuP=1eVtd*5E9$MCz##Omc^cvy*}4Ax1cK@07+6lk4g zVHmf%7qmkQR-!yR7s(yKJTn)Q7Cm~gR4Qt?FGW6a&V${X}1IaUO90NJv9r} z*7t^pY26^ggHa?yyI_~z7~DOCyTOsH(@B1chq7k;XZWQ?d*uIKcJ)l)WYYmUpWzHZ#HI7-Pm#pW|*{xW0qbzx1E$T?KA}Fz4Kk!s1?R_%3 zx8V31L2}i^(B5Udqn+HefP!ezgNw7^ii`uQuqvPSl0o6vBeoB<-d;gyT%mZmo2uTt z#?ZaNT?^yHu1kTv{cC&fZhl7lU?4+Si@0L)fBg5KvAXbiKdq9GL4?k|RYnkxD|j88 zDp_c4PclQGlHE@_tS_!OTYno77A9%TY%h#?`AVz;kJN47j(hS14mwIjYHwV)PFhdL zb%pl6eQ;$$ZPmlQ7k>Np$-NDItfG=NO*xx_xNWG@^yO3j^~U_IVRx7+-F4i?kE+WTeF;(rP=)LDVyJbm8wlZJ1d_pYYS4pQHlJh+VtEg=Aw`*2 zP6n_ys}_dqKdvftfL&WW@g0ybuZv^wGJLfTGgHA3@Cpk$Rs)&oYJ)skQroR&1knSn z_P#p@GOdvwNp>wPh&eA&;=Vsc(M&s&PCzgwp^no$7|`rVa|Xh)19GIsMWV^QO9>14 zgTv78-XMmhKoJ;}-Y7oIQ!>P~;I5jgb*NCb(dyYf83SqO&f&F4VPlM+_yuY_NeU*H zW-vGe1x=D2u*F8m^hMSrST@DnwJocmFwR?YU{nO1-22<~o5jE^cGE(~nK zW{i_nKn}Qp_20c}0f)Mm^q&};2$HWk;Y(kLX>+wT6CZksQhkfD>!VwFtAmZ43>?gXom3F1d_0>udGZu4PwLA^A> zmw-#2Lne-5%s6L(5C|GK8yxd2=+syZ&NNR)-O!fQO&1SFX7bpKtKyhGc#_)73Yeh! z_U=b*o8ytb;is=(xcA2W-p5RR*gMlU`{ct$4mzC9OrFf?U93`x(=ms4O%Z|QfV#2Q z4NAn9%fZY^+~q~%n2B*kq=9v))x54Lme6F3q}JXRbOTaf=XyEnvxouZ)a+h@cFsXPE39}W)6-u}Nf zkP&=+{d!zj;_G!_KHJrLw{TqsqV!RL1q0&56V%yi+_jh)n4PG-Q8m1rIw`r9ub9F_ zczM^gPOB7;1jwN=w8W~q)JhDJk!PXM0@`cN_kL^4i^Ii^@`xdE(25c1>ZBS^CD;k3 z?1IwaZ+5~Ypr-{1K7m=F)5y2aIn z5eamGYR>7P(rzi|@MGuYI6Q2{kZC#c+o`2DJ9V+WQ&San6Bj1|&y$ zRW00V4h(b^w#bPDy4e`Or0%}4cT;?0^j{Y?nj=p@r@vu!BVS2vuTMAYR3UCs3lxL6 zUdifW=|&Y1aVbFBaZ$LJQIyxXPBLvM=fLVkqBVkWIxnzy@yROF@z+$9c9;3YfL0ZT zTp1q+fCJADNMyT5elW&x)#~kKRZ+0**f((_%|{_mRl4``O*{PIKO`oc^y7PPT@O9V z<~CP^Nxr^@kfr45b#KnZ4;Uw9sSYp{ zXja|W>o!cBPb9bpi=vkbW-gq$Fc}e{V4zyOPpId~6FA_-I9YaNj$zkUxYIF68pkfp z$NhC^Ezh~^rPGXX6TV9`@>!IyTzQABkB#oOE7QgzQ^t-Bda&8uwh#0cf;5%Zj-k>* z1fyF&yfzU79JXMqH&LyU_+BTOgt9-A1Tv&$KIq+GHNYH1nLV8_DUR4Efu*6sKJ)Eh zA+<^z(RjUvRGZp`5viMYZWbFI(uirjY5xEc8MM@m`*!S=2V1URYL(0Lk#3xf9spW& z$S#oMgI0w!L*K{I#?jK zyCyZ1C&M)3U}n7e3`{UySUZtEd58*U8AiB+Fh*6cc||+h(Wk zsIJ0zeK1hi?>AFos@3gmMYdsLPhnUpak$V$2DVzCck?4BE~9=~OL)c0d>0hQ_aecB zy7<%ULKmd&b3l88IwBbyb}XsAolWBNUVM#^Aa=-fq&PYR5bDh_1Ih{2^8ydYRqsB@ zB7X7WMD;Y=hh!wy*{QLUQZYt~XBp?(+9o5zfd@N@1)(#I)$2MimV9QTN4n*u&yPjd zv!Oo5mK^C0IT|=hg`CdAipLC5$!kn8$`3{W*uwq&lLpjHUJRT(TenP(D&jQ;U{1LW zCa+7{R<-JAxIF`G4;aIHy)5`eTSE6@_4!)~Tn&ruBhXQnUpZ9|rvf|*fRK~ZAz`qP zXqnSyE&17$D2|EaLH?P|wzb{%dVk@~H=f)(N^Rt5I7t_o36)1Ss|$GI-`N;Btn1}z z+4B(OJr6`e7&Ec%?KTxw*qCL=;}_bNhylz8Q+f<6aTc|Wpz)+mSe66A4y88qU%~qqOny zy0CTuA&vxcW_N{YpYK~BV~%jz)kxD&wjoX#lar63XglVM`XQq7g48Yg z!LcF2siy652+JwRnsc!0HlN(QaOdO()G9C-cEM43h?8pmuz=5bnYqQn*Pkxjd!tlp z73byD^4&boGElp)-wWp#!pw^u#IDlp32c8c1TP zytG>j$yD%2qtLo{5jnu1Y71AI3+aT=!wlGO#SkORP`f4f~VM(d9wR?FxpN=}qjFW>@yizEg071pMMJ-7h zw2R5RVt9^qLN_Clt{&T4*hswV%n!{)#pGpdd*QGG$osZs7$m;EZ!iM4bG;EUao_ie z)UlqnydjR@Srx%;r}G?LvN}|v&xe_hs@^{v$h1ofr~nvG)D%}2ikpBiGmsEWt8chtl-qrXrQXEa)_YbyXC=i{>AWigg?%%i)YIiU>1CfG)`dk|VImbjCi1#&U zrA1Cs#J%1!+>&6)S&zC2UJh98QjTCNOr8s3#C39`&B#j*O5!z!MkKl;K}?qo2+<=u zg{zLkiYS!F9+{Zw%)s*uAjlwF)|(g7L3z+a%TpgGmrtZ?UQUmP+k(AsLLnzm*<0-i zS!=^%(9TBYRGnG-i1C9@jgoqcx{my{C3XcVT|9zv0P2lAdEB4(8`qr2oO4>b5gcS6 z{blm=y#+`)eS0{`)dKfj3r)wK4A(Nk5DzNTRR;;Mn3w0gd)tjU^6|(QLO%|HaLN%G zbE4pQAXh~njz|eF5eVX%lY6ZrWf6qJ``#F1GOr7F*+@ZHfe}fif>rWTE#ip2`z(I& zj5cNYcn4Ifb)t`61M><-NP7#DBpF&R%&e(hWl2CAa1By1PUxn*#_l52!`a*A1eHE7 z1BoBuXzZiug=Is#+mli?-h1OXC9Lg@!Y(j#Ad*nua@nINThI$m^{H7MCK?t6V<<49 zxb3G`98i<`k+bnsB04kQ9|{URlvy)LJZ_DnKR@BHOg)SOJd#Fhvi;eK+O|Hl$hKZJ z$FSYlKfL|ffbKG$(&@nBNb59h&LNs7)DmVEj7YThsi5U*hM>|`WkUFfqz<{w`Hg-D zG7{2)u(8a)1_PMm1!re;dbT`yfJ7l#6!e97;KINb9!YC4k$+pjcag0S^+BvO5e?DH-fK zfu0IRTnHLA)a64QoVEqu`;6hH5XrR{wo%J!2^R(xlyS|{-uplBI|{X0F^4FRwkl_9L!%n{%g`ffqw^oSJq zDs(x_Vp&0f*G$@;Cq@RgOeCgr2hk@2?jaCH24W^;B^QIn-fju+Z9a5W*=SaUy_Z#5 zIe3kU67=pxF`#3Bizv^e=b&Ik0_S`=JvPOzA_tXdHqA9+45Q)h@1ZWu4+l)vs#CZd zOCmken)FZ{1amNt5u$u7ajV22KX>8cP(&X2k#_+}V6ROcD`U`IAsJX9iqaV5XaT)J ze)UpH001BWNkla#gB%jDtQ@BPz zY8jN1#EG{8LR24<5iuy%W8bG^*GB-*BH0@0Y_-FnAlL%E`3?l4D@G&`mxa^=pt5o%oH)z+iY63Jdw+y z96>B$Vr^jE+eivLz#iM+PgE)*2Inv(E*Qum0G3;I1Ic7-nYYbwfSq!r4U~V^b3$J)_nLXnjT^C}&7ddIq7Lc{%MsTRRnFw`zH5oBYQS1UaIP-cI3Xq8F^$`kTgd}a8Fg6APwOg$w{gQa< zZib~hCr2@96Ik6`I-4vc#`wS(FSw^n-0y|Z2G1GQDqZu%t;T&X%WON)+m73z2Cq5c zP3ELm9p(7jvm37_GaYD{5r`s&F5J4g?h~QHMCRnK#`?Yi6fy@=BHF>Q5HN>buBxRT z!s7O1je&cM^8y$P$pLr9uY5C8A<4&iVIZSPP>+Sd+NY$Q=rPt!z?w9#2w089muTnByt+mBs-a3{5 zrzup+i4R_Vp-xg`pA}x~kOU({n?Nl~I^P54@Q4TNNCG1t)2*4W^9N)w&bH>b0)(S~ z&a>bFm~uw~J{xSch}5(h3Pwcs0l<4q;KanV#fWugnRq2;4ku&;APRSFmWZ~}OrGWU z(Ry0i=N$ksb3jKy5ml1IGCVcwKp&)ctJUoor!L#Q8}uxbHiY;|ny#*q(5@rJvsHMW zgqugQ;it8t3YeU-9B{k4f}=Vi;>yD~rtys%r8td$`(cw zV_Xlm$*`gl>J|ctYmP?;j*$tdaLtSNDqD$WqVF4|RBb>J8*0^w%GwC+lVY4e45^x0 zQcQA;6naT0p3BenS?~R56Lx!*)KtNT<(wZf;`P}bJan@{#snj|_rf(^_!yI0Z|q*j z&fKTlI3mH}&&Y+>(^)kimF4H>Z8>v=pX#S{7C9sFnqTny`|bS|LO{oR-3XkJ(j3^e z4s8Ft>jeZS)cep12Mz~^&BxO9c#&PW$kEXT4ee72*=KIFcZarN794XJ&$?E8|NIVS z;58@v1o^INR&S0jU}qto3NZ?EIGrgYu#PTsFt8!)Evf}(Ds@_^pcu)$HZl^g>vAIA z_6I5Y#b8SktqW#hOgn+zRm?ohiXckozyMrv&pZ+!&s04+JxOdxw3ApNh^rb%Aak%i z^yD1Va@lR(gj@1$^RkEtP}_6Oq@`Q)dU1{f@IKKfU>9_6@!o~Z6XkQHFn|Ho+e_PL zoXu9D!ntrz0sG;_(2t*k-i%m6V_VtclvnwHbDi7FF_9ctYwHIJk}^|RWOAsxsC-(H zv)Mo>;yV9sV0fhEI#$ypfjs)tCrg1pW)?m?J*{PwCdf}UBr1MH)O*YkX98ak->Xnj z3JDzH)RyoUrr2_In`4OA}pHj2!%9klVrhhbo?7Aeh{Wb~7BNZJl;9taD_ zALrwF z@Fb{>5uQDr>`&G%My3flZHs|-E)F5c7@QHhcS9^j$FVm9GX^sU=1jg`$=cp=)ImF5 zBQcmH2D-LJdhGb#-(4Bof{G{MPS8m-k@P_A<)t8^6(dPfpWohIsN2ly4+*}+3Ilsf z$wcG?6M={#;&MG{AWab#~YY-#ZM zd_9J3ngn;@vkKW_Au;IXUaODsipV+8M>^*;SuehRqyzjTJ>tzgF2wkFW zqDvDQmd~Cl%Taq4sGl28IF8sTG&Uj*xeDSm<3Tf$yEbYq#CT~$0%?x!9O0m{5+laJ z`FOKx7gQea#Aa1#=3qaiojk*pAhm-aRgRE~oEpdTQRNoJfS|`yKfU|`)la4yX|?Lf z&F;41z+c}kG_xGq8Hb5{9%@Uu z9=$J)m>%9*dJz|=&2{@fCf$bhX+wSN#&huKgt-n*%bg-E(nn#?`D`;xQ)@$X7_v6H zLFGtBBseAn#YSV8UWcDvANYQ6JNAyu&0222)Q8qcM#Nc~l=b8hr%OH5u@)6Mycw4P z?C$OYb0!5JNC7c2aj%VoZ9Arp!rJC*pYbQ=VP5Pi@q9)R$*Nm{<`_;w!Kt#L;BM&} z6RX}#x~7%y2+J-1YNbN*08ygPuxvBKfukv)7cs_EVIQ!78Ppch1=Tm$3$JUU3aBj= z3%kYgWY`3sE|6l*;Uw!VWcm=@4F={B8F=TNhX0@&_?QD#!d^}{Cdiq@n6TA6Lq@2@ z*_{;TwB7yT8Q;4o0{bLw6UlKU$Y$?_-3vJft6Qs&Lg?HaRf~_Aox_m#ImgM{EYE4$ z+!M(i^XVvUaIEHCr=#e`bxj}mXoP~hp`lazc5~3tQnxz*D}*8#inEA!PGio2U<6od z-GpvCC3gWz#{K&vw`0+fZX38$c%U<;$h_zH#qQ zTysJN<#jOx^zt@+3@0;ewgWbm2mjifb3jF`+PVh4-S&J!VK5N3%2>YeA}lfyF;MN6 zxevd%9lC~`(>TCmUwwr5-Cp!0{Gc&_UcumeELsRU3AZJ5Z(L(?9?K`0M4X@rwZ_ra z-VYet;=_}$J`m|GFn>hT+uDA%iGgS4YXS)(sLVJUe>;pK!c}sSwyhVd$QoT*khZmOfBDqy%g9HCM>NN)Qd^~xG zW}?CT;kVGPE1rV3>jxj=(AFJr6yeOgd4ewY8KRb;)d;7#;Glet+%PfBRF?(oUNDro zB*u^;&MX=y{L+U=ZT$Gh3|w~yrBi`-V(>)BhsP||jtBBwWuhF}6h_EK4x>&pPIB_b ziO%ER@1uPstLRAY*nG_kcP*4Ql4sH46fReb1DM%BBqKHw#N>rp#|_>Un=Q;VYCz|s z(PAdWh;v!nfs%*wtt}YYX^6dLX%39od+}p_X!-JIoSe8wMfZ0>10ybG1e$HB8>zaD zd$ot&G(SlZ5m2be9eo!8zD<;5#+LjP6+V5w}Qcu z<3xVZTxzwY2NEMGr)*P?rJi*IERNw0_t~M0oPIaB;n*_#$UfX{{z-b$&2g$=`}-N5 z+DEFxl+(sQM6gM$YF!a1qcS~zh(KAeOSTjS#CdsE+h0|d_kDd0RNs)6x9f4)i6v2y z9+L;{*a+b6W$Kk7R}#r9=>dBJg@t_%sEg(eP|(O^RSD&G6ld0WYXdfnU_KBVw5wVt zNML5#bk>Wzw)lhw9w4nw+lf;dJXu4Q+l8H+&p^;1{~zbAz5m|Ms>Bg-=FUMiJXe+H z**f3TU%Zh+2+DJ^Q_3cj&#wqNA-!XX@alU1la0w!be70&A>C_>Q=YAyC<4{QyiJvwXyf+H4^iL zmil^0zpQY6-(VpIpqTjm`+lq@OkJR?$k-4z3+FdH#V|QyC?3Y2Vf=2Da{>|kc7Ky* z5KR;t7lILqRdvLhz~^lz9>Srl5)spxiFRRF`@7b%dS(tZlN@J%;juHX8Q9Be#xc!J zEm=2KDsBoIp02fqJAuPshzt${{_y(35J?VahThGA!PguZNr(kK;VEilrXrH7Hbyx6 zoL>OTnM#vmwUh7yFy~#dN#W=`CqEATbJilVYw(d~o85b~6y&*K7w3Zy>%pojq zi;PEy>1WjRd;Ey?fb$4x%?mgJ9Eq+4($B{BbM3k1^TnQp%%OQ^@{u5NjCd^HKNgF1 zXl#+sEK*piqijhGHKp_SC(&gQYuAd10~0Za4R)C>RBw!t-fthMQ+JacS|~Um`Y{>d zFgmS;ZUTE7LX=^|bGO)K5X#J8#*k#Y>|Ta@!ea^T4ltZ-9#dey5B$#a&RxZ7qAOVl zbQ{JruS8GNImXObPMPpG2Ke>$p+NBS{Ryg-k$i?rl2Fx{`69Sb=i)c6x{hXh5G5#6 z8A)&*b&1C!0k}7#Cfi_`Y1W*C-6n4kW84XxTQnt^cNU9huQ^8VEe~zXT{Zy%1%fP|+Iy`z$LPJa@54z4+5RoQD5>m@v$Qp)@n3hO@BFw#wro zXH<_3>D^uSo?19GG|D>h5f8&qo%6QA#kqGR-vz92eCCM}6HIVzKVXYgj=+du^@aUh zPz+2M$e(_2o(0-LtKNBJ#{g|$=~85#ch$QGm+6?(`S^u_Q*=Zx=isvo$^pbgt&dKg zgkOe+_6cFThAkZ0ULs1YGg8cqV>gFkGv#@zVsNkaX*e6bw$hSH!e45Fz$%)-39=#1 z89)k(g$SQE_pZbBNa$MFRTdw_i9RRKfrngONZPjG=~l-wApZTlkSE)0!$>0qcD1fW zp2GrzsjB9x1qEXxutb&oR$W`H23}uYLA`;G4DPBJ$fBKVO>up^gm>-qPb8U8p z43n>LIS5YS#31L3p8LYH3l%^lIWn}?<>)!yE%gdJx^eA7wFlh_vYFxyR5{83=7ZSM zULxeIJKJ5v)+u#_pEA2P(~d~(eKErAP#k;6R$B_>_@w%HIUf&C3*tzG|Erz1mu`-} zs}4o>7Av=ewdy&gHHesEU zRs=DUe9T0$J+C`aAabw-to;U|@pxF5bDL&dA@u2@yQ$#^g{rkyV+#GEe%^vjHFr|->MQEw>fzmmB+-wid_wU8q@#z0lMTjR|h zBJ;ch2Y|qHFMMdHL#}<{!zT}Xs2ZU2CM2i{Y$UsS#WxVvhRNMkK zflC`33$2U(|2@XWn`EfKvkGeijEp|tPAS>tM8+2R+=W?0S1=Jk2B6Jy(~lANGL&pJ z#XE9aNPjW0_Jz&|sy3>;09>`P8$pF4BFd#NtzCGo#+bf&?p+a?#_0wksvWjsNOa`Y zA;ZuZCy%ff*?|T*x)w9S-$fl;smR`?miRdNR+OiU-fAwZ81t0!4}P)RrG(4j1C9A& zA!z#wph)Do3!gCtR0UBn#*kI=KFRE5eSGFbHyGWB2tAVMy+BDbgQ~NR1t^@zREttV zjc7o_>i39-dT$VZL~m_`2vY&58?^5l^2BbTf*kV|86T%X!_=+OnB2?)F(rj5}BB53{-L2abME6(pS*EJ0#EhCK`^q=}Xo zV{#A}R?*9*fgm~*kuaSc%8~49Z>G)I$5FyI#( z&ocYew6<`lo*^>8n<;aE+(9x&s+n8`bQ^iO`hxoFz(Aj6u}+fTw{8#fM>=cIF_AKt zJ&!oKVcWSPxf zM8rU7?`E|-;2Xs;j4cBpRNHp?n0W3tDTItkF#SBbTVD)S9j56x+yj9bd6>)!2X`3=nPt@7gi!Y18V$-irq+BBwz5oGqREWZQMp(@>jr zxDFMd%JD1nXC0?@Ur8VugQ9HG@b=iOvvbltXIBp*9g^4A3%^p!Im&~sCo!1Vbzm;% zieGm-kmrR3Ame6rD5^~To!)ifaH;&zp2U24SdAVHW=F=*)@@Yw2!BosJ-_PBUc%SE zI1kzGe|h90&5@{DlnNYfiS5wKu6Da$xUvVo$^4&V5t2ggK|j zQEQ>9L=_{h)i@8TXlRo1jbN?(6yrxVvL(Zu6Y(WIzBxAu5a3$ zLx4 z{26hT;i4l0nbdrkX%Zslc;NLh1QdJK+0Xd@E|aLMZp0O?UARSP8Pj8owrXl0h*Fi% z3}m`qzFHh77TB_s6vmJu12o<}s0(`1tn3y|#&bAkt_msF2|-z@hy*bTE=C2`bEd*k&^l;kpv%9QRmAdBzjC z4@lu%$OwM`i6>qjz$1X=X0CR%RxRWlkqNO2*xp^x2Wdw-{dO!64@QKxnk{M0$z-}> zsLjSgjNt)H;>5@7T+^BHg&LW|5g9K95jW8b;$Wg2|GHH=ry|h~Zf9WQVhn#p(aqlb zmPPR1pvAcDzFxrjJ6^tyBn-QTc!yn5z;qM=9PpG_M3tedxZP}uV1|l;XM>|XVPRQ$ zoSS$?HgXWPPP8SAFYUdt7chotR%EVs9q;+_$4pF; zZ4`{CV4h_O8A2+$3Kv@4Kl4b3jd>Fv+vuNZvjPu4?8yOD{1|AuBc-MA% zwoY6{2#-OaH?n}754=@#Nj^HF)Z26OnXep?S{>L))UFs2!>&lkUo(@2Fy{k%typ^@ zGLT-bY1i_!`gHSkW~h#KIWb^zFd1ii?p9Yo$G%owxUP?SeVy@`69cWi+tJ^{Y6}8L zsZS7G=drGCj2x10Lg<5fTzkW(^NF!KAFY{q&;XxSMnICW8g8TGM!PbD%7>!O%nde@V#E$9;jQ4 zBj8zu%_dHK(95KAH(s4g(4MY@rQmNTECcAF=FgE#bbyOAS-Xx1rHN8aTZfACdj{BAuU z6~K552rjDNP6M1pPv2Llb0yFMr#|4fzxN&d!~fy$@L&DQzrZhlncT~u(RFQHR{|La zF92Ro;bkOV=ELBn;7P>zfw?bpI>%Ws%`v?MD!~XLD}D%J5Nx`}Y+9yg{_ZIG=oC%P zIqnpJZ_|)!ZywgGZ9Xbg?MOglCcgiT&-k}~|J(Tfw?FX9Uw_1xUu~_O=ZusnrPWss z`-)9mm!K-%1Pmpi-5ewEm;(java-M8L4KgyvG zyu5HV)xTUc=%{U(IiK;>hZ?EC+eJg5SlW9d#|r_W_J#D>*@bGCU%+-p79AWBf*QSx zh93<>v@{%MN#CYY@;>F{s!8z?17ikOf$Mp}0&-%Y4H@sQ6S_}S6}uKB8%=$9bslsi zp$;~v6j1ON^vwCV_wu|n2BYaYupH=rE3kWkA>=f(bk#y2IL5>&Yp||TXY>3^t<&`| z)Pp>BT&5Q|$U#SiU5#d1snWY5XPh*#G!F2`?P+qvRGr{8qfaNgBjJNlBoEcfUnJ*h zgO8Eg-BJ6%zj40EGThz&wIkeuWXKgCYY5YQDYznF%Ru)rnArOO9uuvC-az{=fT!p01Xnq=l(aSxCFKZrZChd(Gv5J z#K>YM&&<_8n;Uph-FQjQi#0 zJ((Gp~X1rue`g&S7HQwB-!0y%voq=|t zuX1AHlo-0V#hnbI;SaGN_h^OHM-WJ-8z4C$k`I5`9k52T@i4DeRn6-5^)OvORv!*+ z$urRi9IrH(ev?tfeOXkxjr&K$(F$2U>P1b`b4m}G`GmKWgPsGPlnBBnRYdsQVqt1x0-rYlo8bS>_^QJ&qO@(a&r;H(KexGH2AuJs&d>~ zz>Gu^kS<)S4skE(Ix?``>^h8N0$LE0a}1r>5t|0w^Nbfdyg0r!Tz=Ae%WiL>7izvy z4ODHjo?VrN=-Mq2P|-z-0=_lB%b)+~BYyeQk9_^)1HSn5bNqLI`?v6K{_RirgCBf_ z53keM&jOK_>H09?f0m`!jG-F$0@1R7wd z6m)0s_0tcSucT?!n{z_!&CEV*abf^+_U4TGNsl2AcpV?GH=q(`42}6X1}WRJ^JUz{DZI>At_`T4sI{#;wmX#PA$Cewh29?7%#$t~A4bv)enqL2mRp?9 z9nsxEl*Smit_qYiIM6MweQKFq5Z${vePPc$36SRpsA3$%rteH6JgOyPhAjb=4j_rx zK2#z{g!v8^9%J}qvrm2b054iWj$kki%`}JuEoz-u%NSZ=u8nq%6B z)n`A3cRTm!f#m&E6I4y9$P?KMem`-5)G|uQ#^{K)b z7A4<)#8%KO0r`yyA6}}>yvhu86>1+o(1{#c;!$XAjvz}ufx0tpTPqT#!a+=guC*A$ zJgP(j=?$Z)*kS&hqz^N_bln{d=-L-|6^!h@Uox$3pYZL3YepX%oNqalwjdk5{eqIp zjDFfH%~8AluAH~Klt;X;y?W9f6?R9-{j-YVhV zJgJEJE@0qMTd|8Xh)}Swk!Z#k7y&E+dq45|>Et)R{W&r}@<)IEBmMb*{y9o{WC6}0 z#l1fYV#FYt*jFKrG}6PJ#z?ag*7n0TN;tH5W+b}8LHr=P_Q~Zgp3;c@a=6=d#I>6- z22CeExqURd%BKlq7}{_M+Bo9 z1`+0iCW?+qP93<3gH)mS*cD-ShGZ^I=snD7NHG*jhj)~H9Qqx|YWgmlqI0!YJ^E$MxU7~wQ2F3$IxM6y{cRHjzr$t;c^<0x_SK29s zC_L}e+grW2v*L^_Y~7LcsQK?A+YEhl4x59vE58es^nmt=h}yx*QMbNIcs0aL8^;En;q7^0M6qxIE-mJ z9pId`U3t;LPd|LnpZ>?6;E(?3&-mFFFZ|s<_$I#i<`?+ef8)3C2fykTP9YE6O}uSKHb;y=d+mA0V|>&K z^ggzk5E>imq0B+%_CllxaIpH)(&Fde_<)(z$B&yo{>iWT@fqq4PM?*q*W%;#<=h%z z_qY@L1PpPS!wAtv|Iz_;gi=F zeDeCjWGm2KV8(esI8DVynBeAl_-z|Tp4|IT0~~=2@*zqhyQCG4s|OJ+i0Rqrxh60l z199{x-u<}<(^XUwa}M=x+S_;_>b>#$@(?h%O4waaI56-oQ9DhUc16w2Z61PE#-XO+ zEWX+mUrg+EAsHHT@>zvI@+5)~&;0f;pKp0k!Jd9+3wjCXt0hd|k`&;Hs!rfTGvtW_|LtKEG_p2g%%_S<+F5Bj!W6hj^4JYz3&tc_aT_YXZ! zOc_Lu2cK&E%Rl-v{MK)N8=rmlfv=wr{NC^UCjQ{}zlk6H?B{rl>A8Ffa|}v-v{b?v z0~yI(OTKNMmj?$%CdL@HH+SLEcB;ZJ97@ETf#`@|KQASTm&dF5zYSzglMBm4L7z+# zyB86uG18~a3~V7*xd%&tr3)WkALw2DFMst*{Oo57!9i>QBN#c51C-(*9mK6-4sgyC ztFhl!;KK_5>M|Q8KK=AX67l871$ter+bZnW5cM+B5!Pqn3?$#p&M?FPen5f0k&nmJ z{ryTh1?O>691mXkI8be3tLuus1Uq|t@~H=D&PJb_TFgN2Z7Lv$NE<_hX`q(^RtW|k zb0RbO<*&X(cWcbSu7=W!QpKqtf*d0>;(@)ldi&-$t~y`LZcJt{QWfNNy)mY_p#64n zh+rSoUv0Opj#1eKh(Xjk*Yia0j`m91xxC1`r)EfdfPFjPOxbm^A%aL9w3%-}ysMo- z^eUXMlxMou8(6rhVy_Dc13g9n-HT%kgaRlzk! z30UC+pu1#i?fLt**nsY}4Bw^$G|%x4F+l?QXRweQ0| zyMXGA;KK#%gWb5U79;N;2aM`CB7g#gjR3VF_TB!3Fv5w8fbjBo#NA0ElFb1ox#chK z$V3phF7HX49xtX`25OKUL%+PlKmON0#CN{^ss7;ae;1#9_9=e%x4ywY`Qu;6NMWO5 zu{U1kaP#6&u6tcbiX6n{EG^ewh~cry91moNaP=ACw;@e}*4}^uubBox!())Xozw7P zW>um462|0i;q?)mGd*_FU^o2WYbgjm9uNHNCqLJZKP3P1FMf_+eYs_6LY?s=@t60*fPv=PI9cOHBG1bsrA*UhD{wiI2OGNPc`<`t0)$ zSe@v-kvT~`v8%D3PwZ<_%zMjaB5mVf6v#N|{y-icwgr4u!bpP*Jnw8EAAuzKe4bgX zBr{$69j-FG8lab0$@OsqBaX8)Tov_Oo9sBE@MP8M$i--9G4&xfsRPe zZbu54`A(2y5?h3LB4KxX8pYdLBDX{m2|LtG=JACoI5B%acKf&uK5B&CbzlSfr@mFzOkn8zG zl9&SoH>hAeO@JE-rMR z-OBLg=By479q7JekG5WuA!nNMEQRk`;l>zXgqw^W(|C+9 zBT*v8K|A9lAWb=X6X=18i7iYxFq$0|67TgE<1`clXg#*v|wUAex zUSd}xkv<$8X=KT9Jt{Do0n{JGv3G11mqI82g^-dhomAfP-aE@K+g z#)JLzsW($ppz5v_jUb8V+Z$rQCyG;Fo--xwAVYH`*K#z3NxSf>2uLq4lh3uKP9kiu zUQJ@8H8NEg49pM>es}z;&C_8_R7s&&fF|a3by0-<0=KZ>EvC;5cR}klr!qsf}9ZC%p?bsD>Aon{dPGnb| z{BhvAiXY~Kk3kVDBAjrENJPkJ(gbqoT`}J`Z0$~v$kxwD8vP0I20k7BiC=5*BGV5( zeeE(0$`#x;9jyx8;I3j@fdX2MPQ^jW0jSzhf@Y48tkOEc=JOhL#LE>daF+@B2HBIV zwjQS#gaF!P9^^>rRM7V-#qmY7fwEYxA~Tr~(=T76#-R+P0Ri{b=yWE0@r$?$jAZhDvq2- zh(PZ{a2|jpwt}?@j=`^k1u6pk=T09GwG1zT8MY+uruk+x|czWf-@>OYrvS}!>`(^0~a;2eqP zb>X?*lu4`3MgZxJZm|$^Vy)uU2aLF(naK=lU7MXE29dA@W?Z#7B9%Gl9O$;j{=xGt zJvH6h00}qrEZAJvhO{~FWP{U7E`7vwQ%%i?q0$IHmd*0qk(e_$DC`AxQ_N-#0Z|8J z&k*P=a69)LBOQou(c4_2L~;>cz8sgG>cGn#-KzlWGS%hAJ-Dj$b_uAn&gtI27@#v(*^i-fZ-~1FJ}776k*5<6d3d--fWdbTXxAh zDrV4N)b5Qj1{8^|Lgs^qI)I4as^wEBhfno~J>m9TAt~OGqsnA8piD*(do>kZP>cfa`!{NMlnhxl9n=0D)u-}{W8|He1)+rRw< z{_}tNONC5>@<^QeFh5WrpZii(A=1^~UC*O=8Sn7cL1E71UX7|J28Ig;ZCHBuKKqCB zdkJ9mGNU6?!N8b474B+1BAEd^2ER7n@BuDSyYcg%|5*R?|Mb7`AN`}hi9i11f2)7~ ztN#O4UohvxiK!qSXGE4^BZfy^i8e)0TTQHum+{I-32FojdoAs1bc}NtG)ow5Q%I=~ zT+6>gf3)3zbW1Z2kju;vBQO(>oB%I`i#~T{*;jurhJ9kKcF@Gt=ex)csp&^TDN{fZ zkDLri&*vM)kezy%*jrq+`TBT>OsuQpS>+|B$_w%{#)QbV7YB&(VodE-CJ9D_Msw2v z|He#fiz3QVtV}SHYu({_dHdTE(pB607m{HoS+^yg8Nm&hm9U!BR$_8jX`dz43H2-e zp<(yJcu7RG-FI-;#I3Kh21Ao=JBa)CjWN%u$qy?;2G%a^<85UEkC%b#xj<9qn2$g_ z0_!PIiNVG~pMrsegg?M4?AD=gHP#lAciKS5eO9K5G9(}J=xdL|(tmjfCup!>uh7-J%XxT+95wqR_IM>^}V z>?i!iFE<#884nwqJI=U^?}FIDF#9C};6P$vtzxf@$4fF_eL{YgLHWBK zYBKGCzm z>#gv~%R>V3TpgLfm_vi~$K#kFwHx{3is))V1tj}uVq6@`2nAgCTxuw!LX&lv+&Io~ z8+4t{0I>Xh=W7z|REX??Oq6Wwwkg`@pnU*elD2q*;N5rf9>L2t|L40GRAP>yP_nnw z-Cz%>$?I*QSL=05Jg3*J>j_jPqzTlCkH%ei;(MwD>7g^MaB_rUqF3hAxM#M-218WPrF1?18 zIal2kTAO02uvqIDg69aX-S<=gTjluE7;KU2@-Nej^Wv+;f2zG5QX$w_DxK+r+Hh(X z)_Ou*@7}Y$>X69lF24GQcpz)Xe8G_h^wGA+TY&^I-s1uhp=8@6qJ#15Rzz~QAC29G zX>SiYN-^Rr0gBxl$J5I^3shz(g6!S^HrDa}?P|=Km;-DSwk`+*1Bu5-Y%T-m4^Z9! zjR+ZZ@A;@@Ow35t5z*apQ+K)Z#IHQ+n0aJW@`i1YSb73JE2-N{sSy)FV4dr%daLTf zn3Ig5RZTxQJy&n(JSYXJj8YxL5gNrsoKt1ht#auB+(1$_SDp+EcSulR5O^Q}NMUAJ>sC*efH@}Sm^M)LK|GeVT;pMJLLW=UV@&jht|hht zBNAlcxl52&Qvh(SjaFjP4+(XnL|iD0Iej~Tt?*&fy23*}*VAvkdvkLcS1nHTE`UEfBXlQ_2Ghn%=0dE^R|IZ|pku zKDAuGwD4hk;KYMLH$-)yRmXDveiX<^mUT@88*@(favgd^nzF}6m9)F@a-#ocX(Yyc zJumRW+KYEtiiQdupj1*EN`ke8)VX{*tw=@7xBI3KT+7z-jAjbppln$Nk648zH{j;W zE3}_Rb_Y>PKOl3URM_3fW01!EU@9nLpsscfGlUoeGZX7=JH~Y$bYlZCAIL|dJJ_dN z3b_e2b9yny!}wC2i}N9ooxcWM=@yB7Vn_j>T!Ka1ht=)MZcLD)puMr{eB*O?C`!u} z5ppbu&34}Sc7ocI=PbCXXD8?~f@gTI`#N#g+@r1kVH0zd4t$e5<+I*Dzg;nW2}*1fse2)`bm*!TM)WC(t|$mk#B$ zN5%m@#yJpsJ*{??%>TqBl{V5iqUOk5fxAkNk<9Tx$A;b(R~I4^Ifkk3B|NVSaf%&h zfZ;C|!!MWv*Qe?oKtG1dDwM-Z?W`(q*kIRf(8hsQH0YWdrQx2bAA}gIq>oA*FZ0XB9^h*sBLi8nLd$C zDMT-}rt*a48~&VS96f(rr$KwTiKY=a{5|_&mgrkX| z!Tv}z(1k&2jKSygR^8n13hSlJ*EMoaeT>K9p_@8`gLfPYD8AJbF^zDfF_#Et*bA3}nx*F6(%#MSN=#v{2-Ko{a~G zLAh#3iLDdUOE7GX#$;l|P%?~b6cCXr>x^OklI`1lc)7*qRsMPZ)nENeKlt;X@wfik zHyu$+abF7nH6I>IRk=SF5g2pg@p$FOUtfY?_`AHBcM8d`+vVz@YndN;465D$&KSj1;R+C z6Xt^HiH{JWjSHEHM%`p;xUt~!drWo`0_GP)w-^aBwS`QjjNG-IrhlGYj2Edf6%2?Ym?$(p`N;7 z`Q!^F8D)`G_xXY^yv$G@I{#IL4xb3RHa}=sB zaZC)518|AqXlF&i^W*lA^Q7H(l^W((+|d%V_$<--MlV^cK> zoJ5{E#0{r`LdkiGCyu#6qG#$2^MQd?&8`JE-O?`(f_ocpne@(Jqyg#AYoWR@Ge|Vk z;bml!SDPy4gwtKa_TLvL617S8>75ai>&>H>#|#VwZ!0zc=71s-wS{Hb2zgvzOz088 zwMx_u9?^n5Y#mjta&m`8mkWu9ZOQZ~=>r45xSD_RAAf|`&t5fOUYYqzbT(@*eEdkv z>D1oq>jPcD^KIj0hGtk0>@mrSpMr=S#u>7)*YY(~;OfSJ3oK(Kl2dE%C>etNaE%h$ z7cn2_V%^qnQR>2_u&W!pcJr-WB>pl07*naR4Bq}8*DW< zH&%=4z{Z5=FaqcWe59hWMGNa4y=!5{z(#Yg?dmTDb$L{8`2wpKRs}Ey=gUBAbFGVA zjq8$X13SyQ_;Ubr*JyLNEDO+krILld1;hw)9oSCWFOEk})>^3b#GHfsAo|=VF|-JpWK+F$ z!((ue%!shlj49xtB<~L&=_cMW;le45G-SU0-#NkW^KHNX+IzsR(rpV~yMXDkjC!NX zez+?4e@zrSZ70KO$PA2;s9gcJsaL*wD>E2rn91se0#Qxw!(~`@N+}K-*`zvia+}U* z#%<<5M+5leLxpbAziJ7|7pl2&i zh23|sX^L#DeFy6CZeJN;XuQW1M2;lYVBTd9f^BxQ4Z)5zgf>P5Mp`??u+5{`>?2>v zG+d~!jXqertG3^?A+)pe*xCS3q%(?t^`l?tCqMr-AD<*%GlAGpf@>8Xj~ApjK4<7- zi^;VY=9~bCwVFXgcd82OB$beTqZbe|$#Blefam+ZmssFiYD@;Z3hLGfXTiG`$8bS! z*K+iIK-tB;Hh=cj(oV&-7tyNSI^ z)kKrAg=5Mq?p>P4HF!M8aKSfNk^@W!^V+*SI*5{@SqQA%Xa1Myy_H9~Q%8227>DT~ z?shIix;e?Ve^kFOREV`a=3)Rh4_0E&_@OS&hJs1i{ z4_#Qn(O-E0Po0~3B!G1 zRv4@4s&-~zM&P-r;S3?VlY!J2lh0kcYO_3KKNgMS;PVdiR8|`?4x2bm@FQGBh!}u) zG)xBKxQ*xi-H1?v3t>d+@CXOs%}Oe;#>n8 zjox1CoVqe$_nKU*_Djg7Fkvvcx`7<$bLZGZwSSs(44}@^Xcz*dy?{()4n{zaL4?NP zgIwG#%sjvxe<4%}M4C8uT@9%em_Xhza^krTb&Rcvc8ty>LS+V_#8MfcAJp2#rA7vD zJsV&C>MMNf@q$lY2CwG@a~goEWdy0n_DozH59SK^0kZc#0r2GZyizYQ84)OM6HzlX$0SI+t%AZW^cuuNgD7G>o3AeuV-VM6 zvj!+UuLUOf7@iI1NaJorKH?R0GKZ!x@(>Ko3t3H!@S9*bVF6YUo5(>#Cf2I+;)5bx zHw;c+hv^&T%Om*u8iy0UeXB%ZWeaFht2TR|0W!r>Y1}5~Q^~*# zUr}RBu6?$uAaeV(YA}o|g&c{!#X3BjkTCuVl z5Q@PJmor)3&K=cP!%fa1^b@~*w9n)hFGXvuqNKU?K9mx7PB(nRn zAW9qRR%9^ru1VJ}!4skTt?$L{tzFVxLDhEghyL9~x=z3Mvdk5HXKO@^IB7XXq->-v ztdrbf+$@mg+4}#_)EjL{lH5p^ zB7mxSWEFdRI6OQ5|9Sh~tjcgR1!Nus9^8KEL$aG$8R2fG3W(fGM&S4cfTUbTLEyOs zL^@3r3y!La5sT>7BjL*H#}KZDcV&)(19DR6zQKS0^*8?aKQATEv!i=D zU4eQKQ-pb*BSu1C9G!Utr5lb@dVxMlsQ^@3@CD9pM*YB9IAxq82=_!*!}8ItqZ8nx zR<7hTi|*6X5>R#cJf?Gm9fH=$E12W|j6v=`r$i<@fE^3(`v$ME6-avSTYFthrEr2M zDtq>85vl)p;3yiOphKtwWmP*_4jYA%ZH=A7Uo>~xt-uVLaanLX@xN3oTFHV z$*dmGW(FKv>VvPn*&yn9lyr4?ZyRJu+a$V+_fu}hkA0%54Y$G1nQij>slX0YX-X8V z7BUxJUlvHBq$?6f-U9mz9Ulh)EszVGb8`&J>QB5pw^%?OUpT6KrDa^~3Um;e7b236 zZj^)_5Yonk``m!UQ^4uwHSt!*{mRvuuAwmLqk4coTBg}pca5Yq2Js6b=vQT{@R@n= zlay4W%GLs3>I$zt{gD>VIlR^vV{M5>Cq7jJvj?7f`1kwZ>+6eOugfENQ1)^8IeA)$ za*e$u{CQotOMWP&S`a zmYz=c;uy$IwDT{SiI^3$>ND@;M-=OSj(Kc%g}=;!dE63r+4c+qr+dhGNw$+WQKiQy zA{^RCkyoPUfoxM{NpfX-MPlbhxAZ=rg_85wNoPWP(iKk?+skzj!q?siHvi}QJ&xB| z>I%>z{`%`1-@m^>3a`uGv2zq_Z9VtfE!PMOIm4%YHn7(=SPKHyV%5PpH&&9&3ta}% zd(Ab~d={VQjaa5XlRhK~5!EI74IoNL6{-VG@Ld99^Rxk39UA`bXH+*hIi_m93p*E< zjBFH2r;3@|@eOM|v3DwxzCi}4F_j1k5?T>_MmH;`XfPH<>_Ka~^g7fP0qMIYRwku1 zW?>1Zg%znf#dB_ay)Gb$cRg_R+$fZY1#;<}LyKnTB(XLG@UhhzJq)THIT6?8Th|;u z@9%H?*Pk2v+IsEF?cPTw2c{(u>PA0@E$T?@1l)!9OD>aGodc!l;L7b{1g&o0S_jlbZuOMhd8^3a^ocTqGD%@3rcrsx5D{2NodsyW7z$M}^Q@l9fubjL-*@r1a>3 zIy2uT`0*nKlpm1M=hNCinzn0?TUb1OjGR)gJ&^V`lR-eP^*PU?bR*}5XA28JwhJhc ze#%2wE43ITw<5Nqc}XM;^||&k6zEv!Z0I0RN2uo!>M%v@*tkpTk~e+iupMm4o(vIe zoQ@wG%Sihsfit5Tv*;KRcpi<(+H@3s&}u``^A}-&?ZzmXDSM=7#Y%7IZ)fTJVm6E% zs)w1$Q?q{bLLHL$+8fb?tL#9vLK!$Mohbz+$AU7a^A(IL3}Yiu4>STJtASML65)^; zA~`tGwoSc=I?XhLPHS!SyZNEz#R@f>f8U|+cX5ABM~5jy;P=}KuFM5H8;=d#5UUU7 zo^icTGGsy^!>} z&#ohwp7_4qF7#nmbP5DaQai)Gh7i_8-nZjrEy?EfvG%|(14?-648|e2_e&kZ)5mA) zswo4OuD!7`4Oo(3z;^O3sSmMV7f(}>SFGz&JVoY%2K3YkKl6x{+jAO(PM3KX$xyir zvkGmyD;I)Gu|1|Zr;sV_X=^{{VDG>V;yfC-YOv9$)5sNCu4$?zH-Q|Uc4~|V=!P6s z!S zrq|`s$Sml_516EY`*?&Tc>;8*ok$vlX|NHwz2p(`l$USu1IiD6MinhhLc$}Rt{Tp# ze_17rJ4SaJ3890tEId$^xc`e))cf7G*C?bSI{Y0v64zjMONF&wD5pb_ zCDB^@kI2BeZfE1seK1=dVfvamP0*8IhnKM!uv7!ie75v{%4MwptKV2_z6>b?n0|Ch zC65^v?&nb>n6cyZQ81|z5(ztWLjKM@3^cCcs~@@9cUr@P_2=!}u25IG=*iqdA7U~+ zKG67k(<F@yS)f%M5{%~3mX3^SWKS? zjItpmojNWP$OCz!Hyo2HG%}XJiW&ToWmAuP`$U4awVS_%|Y zcc?xx$3#YA4UpRDOK&h|uZZXI_~GdXUfNyWd*a~^;xzQMPqy7L|Ku@cgp%L3FwHBB z(0@)r3UiCI#V~WALyVuN}~Qd8$2v^25?IU&zfGB7L46;JM}*1=1%OH5xq_E^<7B zBc3I$Oi<0QHAM^0!}0xoCYMVcm9xB@d~-E+CKSt^-6`{^g_lzlP#-b<1+yTS_Wb#N zf>Z7Cm62G37?nba9l@^S&n#x9(}NU`Nw*Bbpa4}rT#;Uu)q{*gxV`n`TZ^?ky9~EI zy9M225AlZ$&yc_FBR%hi9C$Hl*KS`%hEJ#REu`(Y!uq-x2)y6-lpg)?Qae>)TZCVY zmJ6F&RtP?ihdii+a>gb>958Yu0rx2`5_|vhe0ct~7|;@~FH#Ks`tuio!u==&YOM=? z_zZhyN^=8&;_K_0wv)f}YDX6nMDrk4pz5&hZ*?@d%y@R%H4)DL^T!k^vF2E3bCGbH z13{p`CXN!F^lrXtkm*Ds!))SWmn*qq=y^<%iJ%3hAg(L1 zmaEZy9Ns4BJgLnZ{#pG8Ugngk+Ow@$&P^;=!QeT~`RNjADjiU`t5BlBFfByBz&f5w zrk5Yi5jkFbpTk^%-1Y+OwROKAo;qL-D$<=e&#A3vA4x1&a@F_!H2U+qo&VgY2w~)L ziWP*G>T^?OGi)-|$B0ZCreoH38Pe{lzP3{ZZbP1$C4v>DO)qXwAB@6Vgl|D*-I42( zLF`y2C04-@bV10Ei`@P`!(axB7|6BJYPJLDHi3X*2g`pU<_apTdJhs$HSH1Mk3wsF zmxk;^U>90N&6l~XwGg@)Q!&0psrv`=?+$nH9N_)kd~S-|43@zNBlP3~qQwUwV+)G- z>-&wB3ss|4B_d)O0Q5d``!Yxh_xqmN!osP7T3Tx{!!!IIGhPNEmg#&hf8c$@onBNL zhU%8kUa5%WpTAz%JN{xAW1+y#N94x+#=_C6Q3W4?s8D zCWB!(qb9SBNUiWLnCL(^)+UbcG{YvM=cqP;h-PgXOX%pkS_Z^ZG5iw~ z;JY0?q(#m22}(G9tR@Bir9C?aS0nje9CesfT^pWelbKL5h z`nVpfz3nEO{J4KZf#*4h!#PU&L?rpk$syELF}AY{u5d<8D#b657+tCjtn+!V!l^d^ z@fBgcPB|RmpLVciQ(_Il_f#WuBNXTscfO{2WGOD_@ry{{G?>X`T6?Au@`g`ul8R%m_}mJ@`;jZ~D4ALl6yn+`=H^Yinu zoVVn!RXxJ7&B`xTfkT$W%0To3b`49w(L+sB@$)~|wUN1Wzst12xFCH4qMD07w0#0& z&XiUe6^b}^mCD;lvHtPYgq2P1- zfxNd9Xx+kIi5&v7iIJut0BoAh<%O;vZX8Q?HxW#(5sscJU!BwW)SSV1DQr=dP|x9! z4bZvLITSTlY@nNWwHh(Yz8Jv96cbB&o`wHI25w#!TiqWiF?yZn^-6A=!^C(UFa z>1(C$=OftkpR&Th;B$K7a$dXzz$>6c)Az>$v9Mx^C_=(1jg}q|o6Cp2L4Lj%T<)e% z6y6n<=3e=ek}$|5Cd+H9f}>yVuLJ8RYbyZnbC?27yB!%}lT~E;1-QJ-DK$)*^OMkJ z2O8XTsw+*&+AEpM#rNYefKRw`+F(3^Kk)5{2pV31&%6sfj&j>aH7KwFO2BdtbHaT> z|0HNmNrjvxPGB*?wt&jW-$-1+QuGGna#|agkcDu#q}Uq)5)BG6Q_P(&&e`Lq@-$pjy!>CE>N}uc)6PPi@RbVZO930?CM|2uP(hpz-?rMY_smf*6Yd5gq zi+{K9oP+D@(kFR>bcXnSZp6Fr+Kck_6!z))%8vljV{V>PiYRc)oyDN1p52V__&r9y zq%No#89u@M+DpH`AKdQ)twfj5rx@45j=(t;Ei)#J{hVdbY5$~XGTg3Fd;eE1a%uVwlfGM8Bm|pN2dxM{tGai*PfuUnGIuLj!7k~ zTsVC`IZsU>1mi!o1$#=>9f{*S1Mqm+Vw54+&*K?2fT%*wEFi-hdwv>jr;xE`LFbZo zn9q!z$@1(MD>k3ICr0Rv`A(OXx(l)Z$Fv%=6x8sR|9Wkxg}M))^WfV2ya?en|>E%1Q)g?VaEJZK`lC2MSH{sG*5B#VAF8P4qdhL$1 zgt7(YEO$w~)>faxs)Kc*#ge~WkXJ_FPo(R{*O}jyI zW{aj|aB=<6zj_!L7Z&=IrAxG;6Ta_(J@hsP-skpSDj0hrb57oNB>Z-!V0p)nHrXl= znKuh$K_-nMx@DyRTo}+4Q|4oyVWFcMc*;s9@1t$umV1HoyVJ*yhcM)VUIRKAAB%?Y zB>cPCHr)mrAMqt7$p4{lT8!H8yVnmGj`7!Wt3;Zm;$(m~#&l)eIpUteLx7APNUQ|T ztk`cm`zu@RWmpoCpJET$-3qpGs)xAm!_yuie7xEUJ6I1afQ8Jl>M8}vgM#t`HyBHZ z)5z>;uWju8f<(OU2bx8kQLDtMhc-5sl{bRwX)>Kquk*0{^YQwXL?*q>Cz%n-9RyNM z2GgJIo_qOu-ed%>wSF3Xuh6DjUm2*pUa>buYw@dd*sf0!H*LC5_;1vLMSO@re{b9!>ed^z7 zdgQfb`_5A+wT~PnxG*6rm$Y5i3w?zXb|RD|Ib% z4B(GHUVNW>I4Z<*oXU^bVC&VrlyJfD- z@Go*a4NcGpePd{9Ow|m7Y8qq)T^1nKA)aIBRD^G4SdCa4_wk>(UyCT80#W8JuN64A zv%Z9Qx;+jcp{L{#;8fEE1G17L6>A07CEz|O7On z9)md>=Ll*qo9r`^orh^?s69m%2)Cd$B@mcPY!}m06YDVWzuG{+V6ywMd=mkjf)6a7 zyQBioQ{V-57f~8x^?WRf?7p$CU(@e2p0f1_!v;?R*R@!W;a(ps>du7#;?z+_;&~c& z<_v7YZ+=xBNC(&Tnk8%@vy{U{?vMSD)5Ic>vB|V^?3qKK*vj0<%;<^X`P-fp){p(X zMSkCpe!m|w(%3F0l!;=1Ya`RkUR0@0c_=>dT2Oqgg+QoID{_${);Vv_zlvOIp}YNI zvw|Kazv+qckbZAG(kyWV=*HJh8DevQ12O|Rp64XPf9Y=C-`{w>7Gfpe?;ENGF{hE! z5RT_gy?7q$QW%b2UF&kU{v7B5S8g^+bsz4XT03x8ap#cz-?xj_k)FM&`DWAUXT>O7#9n{A(}os7GPoM>TdH1eTtvFmZpQ^ETjOf1TW zegf5!N3)AMqZ;)w98D=xP!|*M4ZI}(1pQ#m=mFgun*ZXa&cjB6;S!JAQXAjrMypZq zKkK3|A6*ar+!w&a-}eLNWSP-8<&$pi%VGRB>)J%#8V6lXUC9sx|GjQ77IQ6BHNLA5 zN(@VCRywdddL=o_ofT6Qs-8cLe67EXlmGxA07*naRG*{Q6<~nBUex>C&VR}H$(j4{ zybnVXBPd~v(3`Kl@p_pC|5QbFBGyts@jQ?Aei^5EgtY>N!w6}8Ery`If~nAR4s;Hs z1-1cQNa3}vU=ZK;ZS8!!5!(pd=Z4}^&%&MpUTcjdMYEWe*4mEuJv56r4Nl@W@YIdQ zgRaNN8YKkix)vh}knJI#NMbMq6|TK;KM(%>@4xx=$F`KSlU**kb}u0p`Z**wRL5yU z2UI=yEC-QdEmijbOwvMCKl4=e813l?Au-Fs5D?b}P|%=7yYYE#8Xtj95}25m_N@O~cd<&FJw`ZHZ{ zboP`NM+CY{rGu*QtkaoH2gbWh#KPu0R7js#cqpt`6p4-@&6jJnj(Uy4=QNUT+U1af zT=8ZcmrFiRMl+;hD&`$blM{W4m?+O$!GiF}%aopt_R0lUO@NGsi#fx=ZKo~Z)+(zX zHEa00{M^+)iWq$g6(-Nkc)WlWOU;fWsKbRqNBD-E#t$IWX$yWn0o^!VLc*Ar5*C6n z7I4h`R4zSx`7n{96>H4aLd2TEmovytVY(o_GpMQNMC^d z$6;n1&X8x3rU?vjrb2*9u$!FLcG7+!8O+PaXm%;ly zKUe0!GJMD(6?7H9>tKhg!QCJFA3@eIR0`*rn1V%*4xD9S@8D5WbtDg;agL%|TI<4I z3FbUf3E%=+#jZ!8<3M5%YcCRkW7j25KX|Q$oxxH|*02$>Au?nP=~~U~K&;gBv@g}Q z(G|L%!|(UQkFyvIK7#IUu9XITs6bIwb7!wsMg|0Y{d(cGHrHTOIls#;sWqqKe#Xe1 z;JQ4keTHQrqKnh=99flx!2GOodJ0G>qYEBV$KNffgVX|axv+Nsn_XoohFaQd0L+w= zFimEn1TK0BUl7(>4yuC)>9cH#4?Bp;g>&xN5(Uf@O~1XifM~oY`jxTSAKau9Va!ZP zw+HXZc&f4ULM%6I`XK6*_9pKZkKF4u&e583Nx1uA1Q@GLN-HuWh->MoC)8WW;5kPn zaqaY-!WTa_!FQLE;j)9oT%q$kkRC8P7E*>ndP&1-#~(hMwJy-(cOOW{aNudCU938R z5VV}y@E5X$6+S^l`2W8cT1a-68)e}d_Awj+DDgC%SXs^RUvEA@L@t@P*S2+dN}Dbs z#D~jCd>+35CSNNTlYBb&OXMd}+k+@gXN7~vB-Tzy4-mkj@R;L34+LyG`&6ST;L1Rv zab;k~z_l1WLBT&$thJo0#sVdF7cvre)mXP}?2LIwartfcz8^(4S8k55+O9XNmFDH+ z1cw^fdrxaqMtst|XwBjopJX=U=U-UmG(WotWqK67R?uDrw^oJAMZb9vC!H@2K+NR* zuKB8y)koL0uy;^RbVJF-5>PtK6skUpH78(9+eSH>zb%8MjyNa zy4J$;_(t!8jN_Z|j|?>&6{Z+iV!A5ZJ`P(hCjQ`CfyOzv7@N5kfY9IH-#on7X?aR_ z$6|^HWC6jKSig}9GRW^LJdjof7Z;hw+zeMJjX)Sj1+@%pZwK6l)Jxxt^AjP( zUY-}dOCI*L=X;O8m>Lk|j3I?kS<#KMi*0W_?V5BfTONq^Ha_Vkn{U@~*U{qQUWpKJ z>L?l9EAZTJ1b}rdA}>5$uCOl9=9C*Ka$9!kBTA6fa&&0U$gTEYgWjpeiVqEiAy|MY z$5u*E&@;Jt08ibvEE<3_uGt`6G*E+7*g}@*VG6hEG_gK|FSmB8CgQddjU2b1?9v#f z1D#)-=*-8V)m*upeRcuH!TQrujwDkB>2Re_emm^6F1R~4H9AH3KuWeE$igFo3JN;| zT%w+W2E{$~Up8Iu%m{lK=!Y`UxT_f3oNRg7`&qpBPo6r?X;Z`!)JjL!8s#0vOh$6$ zRB68XN7gu!}3*`2jR@| zPS=Lfz7_XWXQZj)1N2i~*WUc~#}{5-$@55ci{u_4dEx78^ z-xrOfyfqO_{G^8p#q%7!pW->d{j{Y_OjOIaNdutpJO>pwzpjnX0;mtr-Mlhzo`e0` zxYmVp4jYdfSaGt~e%HTcs zwTaK*UekB4z+rpL5=73G7mJEv5C(%0Js)$-_1BA>j|%?7f2L;40F55!fyTHjr5AZ0 zf?K-Hh$gD#8PVuM7)pWqbP?qQ=NYI?^PJMtLe^$I1++KSr=d^t zZYm>jHbYn~CWJ6!l{GgD{NU{gnX~SB z_?1|$>$^GiJci4hk&?zI${5H=?h^vD9<2?TzBs*M-;XLJN4`w!W=} z5y6^!B9%2%0lc3x1(7)vkX|S85X)(Y`+4K&1M&gyyU?e6O$khLg+atreSPXXb;MXC ziL##vq_nwtj;VC{3QC3d{oA4dxnew>(#fh{Iy!SIcYTfs>`X5_ZGL2-kO7@4lrIfZ zpW&Au+O|2Efc_jF{5$hJu{bR_h0lAA0EwSDBh@LJ?R3l8oV|Ue6V8SG;obw zrhfj8jMWZBlcc)CfO&_AKE{ukNP0$eci{>n%MAVjy37{VM9WMZ8)bSof4!y(?RcX0 z<<*I+*N0{6ug@%_LqF$mEn-FR^aB8mKytrzDN^7pry>CE6|Ezk4l?u+M`nP@Ewj*H z2tqsOYLy|NS*|2ZQelHLStUY?;JN~tu4{JdQ>k>R`+rv+&)NH97AY;^%o9oAH#jEP;dw8S(Z{9xXhSPVS(BZ+vQ!^w)I|YP4N)|$o=7GjQa}doy3976>0MZhq)f%J-52Bb8$s! zKEc5VFhdT{H9}>PK_F7l`}W_qB%FBkwJxZ7d~x2%N(QbvDd9uWeLv{uAOf*=C`KO4 zby1_~i41ES*)yyN;`CT!+DV+D`Q`P+YT)^O6cPAZ+ipOK=l%^nZ(e+Tx&d>8^owSH zZLC*F?>E;9e66K^i#v(;^WgnFB7;|4Sn_5?!{1m3heG07FVy#gPv|#S__Wi&Ifq=D z4!HDwH$8_6Ui)&JiYcZ|1p%VrhE-ST`!3Ew3t?0OK7|2e8EXK+0f}6>r?hcXJFt*? z?&98wwaful1A?s;jj|%TKY^EEPBB13?K%VP$Sxi=G;yD)NqO-ye5I8#m8%-vK8=yC zI0hW0Aqz&r*36@t5o5HNLG2`c-4d#foz%YEuu8)4dYSFeljokfB@&d{Q_hH(qO1Qe z3|#`w@ubM0Pai9~3+wfV%m#LmXVIq>b#V!LBvy^P#wNaDyMleZ&5!hK6%0hC@*?i{ z!*is&$aDC^KIZh5^24iu&_$wEO$YV?{iiA|F2)Q486L}#WYzI^BR0DNOMrqb zQFZ*1yu#Jz9bVoA1K0I}bl7!krJ&~~l~93C+v6Er&a}I3A8TK#Zaghk8$fVW*g@p7 zz}4rLXrd(*xfXHPG12P?32ETU5gU%eoC3v%AkW}DzIqWvsyk9K!Py$u&1c;ayK8A*}x-M9Q}!5>zrUJbTdMR7LnC5-^BrWkBWs zJ=7t@O1dptqjIhJngci*J__eeBz?9v3FxVZ0(CK&3_9P^RFF@dsjQDe_yc$^Pslk( z5!DgWjzk?|r8x#*^6tV4>ZzjCd@X00nX~vC{&IJ@jL{DwomzRV#2t@eJ)$Ct|M+v^ z>lHljgZFnM;=<|X^SrUv@?mI%X*X~r5 zCE0(MBM;rVq8+lwTFHx2Re^a;%k%&^jtaOVG@p)ptvm97 zo~bFEG|9EW5}x~D!iU5DHtcAnV_RtHyAE?f<``4^x-_3%1%vWzk)Z~=6$P%o&@G-P zw3BYbP{@secnLQQ*y^FqtuTp==LmbffaO!lc^+^DnvA@BU+)60B)J0Jenaio1x?(I z9Uph6T(TlL4fF9=(D1v&(+wWSei$I{LNh2VlagG1q}qxY=0b%tCSE9hP?RH;9EitW z3(ql6m5h)*$3l?HK`W{bLJJw&wOT~v5)?conqR5iA?!ZM1G!S4q;2)pD@6;?3%d_Yp$c5*; zmD_`jDz^enP+NSe@ch0J(fHaXwMBTwIs{Cj$vy@EM-a(&5PiVycQsy_ycW$~5OkcN z=LgIq*zViY0(RSibkPlX9?te2L%p-{`st?MY&DRUR&_BEiUDnS?k?;MsVmkB6@1Gw zcfKae96SnaVw$2(PS8hMh(ZR%4LTtb$XpiVmjBsdhoZ!Yl;jX*7=F~!a~}J%f(jzK zgh<*jS2Z6^&+*ZP|MP$Ti~sMx{s}Vhe&6bv>!--QUcODi{~ZH;N0)6H-A=3+0|z&wipzS$}u+hWt^TFJFOuxNL&IgkZnQ1@I9!tUxLV37dH#%ZOe(% zWOJArx%rv}hFQUl{q^E%x1!#sqD}avZ-yCy^gQDP+86SAqT`0@u#XqV5q`Z_i-l&z zq(o!v;PUiJC7yG$b+Fbpb%2G~9)+8{>I377^o-pDZZ_PGbRZq7TZoIaprX)yJR4by zC9%&@i^2Veuzulx{{H`Xnpjsd7V+mlF6_mqGcRE{x%KoxbO5mtAv|?V$m+>BM@R&h zqike{v#gn^uA+hTVX*kH>Q)j*N85l1wZNVs_kABV+LV7Jq{9z2Uz4tHEr**|I>&1L zJ6Z-{M-UOob3gvFE{kUG|NX{{H!END6ZzkYz^KO|$G{79tCLM7UK=bv`4rG1$>SJ$%Rt_$vMgX%y< z@X=95QY-PUMh>(e(U_Ev$2MJvmSX2XUV<505fKUD?gvR~lZYfkP`je8Qn5<7l`1vP zX`V7LmLDdDTodOw&VXalVqShYo9vD7Ly>Ct9gf;3rb%G?kQ^9^jDJ{>WCq^v2MP;3 zyQNbFEFycDd?hfFYo&OKYVip#3Dm%Szv+njVv49Tufg<~0F*lYcz}rr6|{0;1$d-S zUYRbE3Nk0Ay^EqKW4*F)z44Js*NeRQoEpV=Jop&;S17 zfB)kTy-)G3w1&)37m|KZs!IpKy=`x9tVx;@UsvM3Z^%3eMUwBQbYTLevReN8yF8L6`VA08UF4dDwLqj34EJ5!4vR=1ZDsk{^kU#X%^QinHlBXaB^3U| zBLe5Rm^M2LSHBaM;96~F(;!TM38MR9gIIyh(~ag}FS{uupU5ICSUi_qltjh5_V7>Dym4aj>awJH?_5Z<`AZ zsqQ&>PKm{^5}%_d=P!n@?isFYlk-9p89Rh}*mtYd5q|EmpBsPdUk;;878Hhe6Dw># z?L&=Cx@I?FxDM24;xw+<$Ou(+0Nzq7mOcRey*I=fsvhwBE=9a-V}1_9vdNDe*5ZP8 zgwd5*mq?0@^E8tejM6e4FuAZ-NeWlT&F$s?{?|Y7-~a0mWRmqx{Qli|+02Ou&#$Yb zh-9nq+`qAweT^)kpLUE58x7lxk5`Ip3BT_HqjQaRtv;#=OLiQoiOfV^wgA^T&|)CA z{(4&redUHuBi&uXeHU^8ds?bRfP29cquaiAGzYRCR7vF*u21#CzMN)h6(cUJmGF4d z3q<$SO7pz5F6I4c^KGM^)_sy6HFSM&0?1RMzzkY3e{qcqOcVn$3Mlg3G zUmI~hxbH)Xs^<_O9vmcuubntD#gJ))1Cv~Lfr1wvWj~Zt4l;^w&DEG6sh&#J#l6UD z+5CK0N3N8za97bSEhGMn)}IDRl3l`Gk4>%wPs=vm3>t%ZlR>Tc?1ow^+Najss%qP8 zhh%nYUI4QOa(+}{ROP|z3bwOJUeXO_EoOQ6JO_wI0_F^tkqBI$-0+|ZDK%>FB#j+Q zoVRz6fz4#V4|iFgSd16IjUOgNNM0h%RCMhW(OeWV;Xd4mF3w|U`MgvSG#E(;Jm-zx z8|p&U6S>0=tQPOPn2U|8`9MI4Utb$)@UOp*s)gLibK|3ua`iV;&SM|E){5lz57}}* z+Z^~atifjDnQ93K$`a_W$1l%sp*Z18h9VUip7I}{&VAB|N0YMrN92?o2pia#Rwyu0FZpT@l^9Z2UkxU zA1N^TJT}TofrP7%kWEz|#)^k1r2tU`uRTQ>2YE9ujHWE}Hp9W`st8zY@DMXzKU!38{#IzO% z@)e7@#CjH}fo=^p)YDxq0L#(r=gf3L~I!XZJez4+XPbC+^CiCk`n zDxg?tdLx!$@MO?V%*6dJFj{K?&_mR%wSp%?dtF@Xi&EivTED-)Blo3X#C;!RQtTR3 zLda`Te?(9IhIoF-{h+y`fZ{5(n8BaDvcLD+A=Kj>Tal5RFn(f-*pA+h|WSMynRT zez`Db8UiASFJ;orkq+SpV(Z5UVd*LZyHZU`}DL1KFh9P-E>sM|f z%yK%+W~8Eo5kX!TiiOu};a0It0Xz|wmgMq9dJ2b`1R}BaMqGitx9TJvx(H!|XwJx! z>2Mjt_6+?c%lx$9GhM2?6ZK9g4XJjE*2OSpj6!yQ*Zf6X1J_F0!rMg z7%g8}QAY3TEm8#{1#}TjJTEV2);ZO#)#OD?%)@RfauEOMuZRBrzx)p0eF^;jcYlsw z{`6rNYb3^?YONF557cS_iEBLVXsJdsVobMRR-c~_7*!jm`e~$W0#!{rWvzuDx)cK4 zojYjLK2Rlv_G|lh(W1I7;T@BEFW9+3>}ssF58~F|yKohmnM3akLqr&LdnVz4xcAmI zpL~WFRIDwI2kVg5a>6*+RUG5^51Zyi_-^B6{03?{aiczyUK%+BicqWfi!*uh_Ca!> zO>X2h12F)e75r zhh{z2{cqR{uf1%AHkyowJ$h;{h3-E1vSJq$*L4!x0zFW1x~i9zQH_s0@XWm+;1B4|V9eR~-`Gf`C*sxg$2 z8X3$nu-1*RDQh zltR&EAt0Qd$A|$Txc6C&vWox!AOJ~3K~$0mjPXFXVz*oCh0U(bYo@Nt>*sTOW~q;# z%#pe366biUV1niR{oR25hz7e3tNOd>nyaE93`Zy0v%B%u-p6MLxNkj6?-L}XEhffN- zy^NbPp}Jkaj6~JMUYoxhyGB@|1<+AH9OPqtn%|s#Y?Z_CcK&IMq(WG`@zHjejd8-R zB@73rQFYVS7m$>qd64->$P@=$eDb5+??WE+&MpI|Y(ZgOgZJJnwH|YFm#_=RV&Pi^ z)8zmn@%3?`P*Exe`q9VMc#8TevW3Jt-)BRiaQ?+Q@P@L|>~NkvCu$T*9&dEDrV*~Z zl9=fwVnF!2zj^YX{Qa-+tFIUS!;jzipZ>p}Fuwi<13`>JXE`;qol)*8uGg(nF!OSY zP!_+w%Q6KWm{WSe=bt0?e#4zwfz9NRKFA<|P>=;BCI^Q_0!JOzAnx+Qyh(6OMCdG> zgBcIp>%&8VNNtxeSzGE}&=|O`R0p{l*bAIvSU+_duOreY+Wy9CTrM+#!Y22}MsHct zdICeIxyEsdQp;f6cYp(w0#%CPxkeJ;USK7%3HI6Q9LCqJ<^LyBV}!?G5KCK$^kOX{ zpu{RcN@bXj(_N^0Gp|b-I~qotY=UuWp{ds}Pe4X_tt-5t;svY*WH!42XTcP=`~)kWdE@+AhX2G(0N;Wuwv|_LvxX66c{tmt#PE6ckdH>K3jO$uB;@;i1%Ax<;nBN zB!h0+$+553y5p*e!J(>i%8Z0S?bS~EGx$bbLQTf7F7lkj(HqyC$V_hEWhs@^#pr;d zZCuTF3#mnm0U+%Y4s1$Cx8#Tf0qE{^R74?&5l!@JV9V_xdgF$3mv@%+BF8B#%wc0m z1lhzAxOX99h}MF5SCCM#P`z1%ay*>Wu-D1B?)2?rnSP3(&O@Y;0eek?XGmhuhn+CK zhIqztJOONaIUGzJqMFa~QK!(|-8|n>#wkAReH(chgZFBmR)ZRmxJKYH0+Zrz{`Ob+ zCx8Dd{@q`H(J$XNfA_mT@uzQF|LEys&deE%cGGNa1P3yMyN-eY0}QbtTW#AF*344%jD2V#MWAR|vm+eBiYN z#h{`QA#xNpq-e`XW=_s)pvr-|k<&{>Y~?U2uzE2A+OH-%G2;oZ>y|&H?K5vk2qiO# zkN)=V1<4i~;~1#7L8~2M>mm`j<`>+r7n_hJ$$x1cI)LYtQ^XZ*9;}m13T!lD#F0)@ z=r`T~tZrV{L=N*d_K{uurN_N7uD~I!NrBjEMYoap3?qqa>q;L2c8MSNt;gdLBPFiW zoSHdRwb4+ZZ{>V2X5jvKp?lkEoae+Nqv~`PHe)17k2XqPYNaRa?6n2c?wlv}`vq|{ z4DScyM&nmQM-LQx=*afjjrK5ZkeZCEz}lT z^l_GAM5u)5-9D(sq&OX6tmYW$5r#_117cO6OE%oAvG-=}kchyV+3^IILc7Z0*Is`WxSOn3Mi54whvHB+Hwxdf~;hetw zfFFaL*I?!lXh;*72$X4nd3Gax8+{NVov3G*taZ^D(=j1Pdo2Wj#|X}mm>H_QwRM`d zIh>zwAkxLS*7j{APwTPwxs?Zk15PuvS}S(@y;dS(8i6p#4Q>$}$j8Gv&b|6=6Ht0V z7iRAKtM2fgbao zne_n}d@4cB2&jcQO$+4$1uHgu|c5=u8;`)HOL!I-Msha3u4 zcGELMs|Q02V#C&L)91);Qr%K-clgo~rSPxD1WrohN^~pMxkdPOD-GHdE{S_@%;%Sb z$peI9MsSW)l`H3DU`x6F`R%pv?|=7`e*eRb@%#c= zWu;^}(ugLL*wtzj(WQ*Z^Er86B5{r6uEM?cX_b1}RR*UVP*1Ss@Z)-8v%(ye@CDYE zTA!eeGKH-rAyBW4fxyH7b)$C?Rj4I&6;QyH1L$A4?r(3?C9~Naff)nc9a8HtF0A{5 zGS`H2Tu^u{b`*nbQA>qa7pwbhDo$FWnj9fAqm1U$TTl^aMSL!xSO+_5$VP_tEu4`g zFi;!*L8arTs|us_-eMtQyoH?_=@8RKBcFk29T5aS?J6D-4raKIn3344k1-{1-#7N& zI!y;ehEWCQJDlnDGbk=23q79kZ8He=fy?VK#2IrwY_-^q;W%SgC=q9FgqU%RX?BiP z17)nCOa}7dJ&h^!Jj1FJ^|1s+4xs!CS=(k~__|LL*tNvC93VH7%m94HHDb#d&5?nn zg)X;tR4}5m1Q{WRp}`pe?R}7Pg{pm|i9UhF@e34$s*UP$hc6DVF6It9rt@%ZA%L%O0&orsJhnDmz!uqry59m2?vPOHjO z)8;OrwkL-E+z$9>y|DYX8_rubb;~7~_QD{}a!P8%Nsx>*#HVcpVI$sACvdz)IL$di zZd$g(Z6uT=R0@izZDwqQz(wXb)zNgMl`meqagnszr&42T6f5bu{F<6`0_r`b{O6N~oaim8wF)l`2c&*#9Et&@t*tWO~ zoCjlbcZdMTl|pyaE|K%>by|HEMSl0S$TUCN#|+Gv7-=Ny45?Kdk!VP}4uoi4$JlMo zFm~Y)&?AaK_&OUwmHB6n#{=x`x_(P&#hB?P+94Xc?+a{*D;l>7w}bSA{ZpR(CD@1e zq4VN)`#Fv*mM6BBgcAD(h8Yrki%PBS4FSpCp4TSh*l?Qmf+owEb(Zg#cJ$FH3^ZAg zs@xv#ZtT4<=fIqa-UcE;#Fyt+)c(NkKlyOukM3DnHMPzS?YcZ?>&D(iVt6?9+Cq$h z26^w>_16*R&wfThOeC!?N>r`J^Vwj4GcRK@K9gxja!?glBx(cY zW3O)+4T$3`CyiC|taf1S!jhXnN3zGQ%~0#gz{p^~oz@Igx9wNvgvcMYX-c2Tr`lT> zfx|&~|B~i85jQf4ug?eW-Pr!QStDkF8D|I?1NtaLrVc2I*CX-eOW^zOliz(${O=w9eqpHTB4Fa%y;0sx#0ZHhMz@5Z)SNT59XR(b zL2V9&n%%9;#B5N#5jmV6C%lhnabA}g5fSODr%Npag{{rKyr9VI!QE7(+q7d0jWO}_ z&%f|Q_=0Dfe3$szg@~o+h$9aTs;JEKi8aUOwBMTZn$AD-T{daE1QE!b{%Q@n&cCx6`;Kc~0vo3F=rq)Vapq~R1@xQTgGbmTQHBmHA`cGL zCz|Sl8KVi>0?ck;Fy8`9iif4S3n*F5v$t!&BxVi<8wnV+!p#v>XGdeBWJFDaj55r- z-po`9Z=XQJb8vu|ajD>JbjuD4|1VX&Z72z1RWY|9Zd@_pYIJB&T-yVMgshVR965>r zumEkL5}3)dB?L2!FFdY5#ABjjdub>js@d3}!YK--t-K=)e>%%jpq0n=05+ZaD0J5; zZQ#>%U;yM_GU0KWrd4%NjY6=f05knS>pt~h9GkBl=oE$h`mnD$6JU8x?{o#&ag56g zGof*0oMda)BFc?5;}peoBtVDycG`nQ`C>SdW}3`4(zNQmQzRzJQieE0p|;Q37a{PQpRxBu=B{6GHB{}<1%5C0^4 zgW5_w0^Vf=crcAXdv7!&B#h=lnyXtuVsF2rf+64!W;8Cb6+T~4hCj9!f~ zCw5y%{5rY049|u$&4hjn{haMBCJBX{%MY@v&S4ShVuxc5I6G(6x+AHBs zksaPfU;$UnMUGxjDXBg)r(y3^SD8j8vA3Ho`Id;{4e61{KK6+lar&O!V#e?S?$b!! z5*zEN>yyG`q=}#c$0J}72DugJyOm>jWYf0;&eZ9~3FhIDaC+e_KtY7T_Q5zKEDIiI z#(_AIU?M{BO}GdnO+k`A5&30Th8t+h@K>C%amJJd<5umY*P!Pl=j(9<8ArDsC#xL+ z-;|gX-HtM@iP6-t5PO{9=GHK=w>QQ-a=mIqj#J9D`kk({pXIoBv=Q&@_dwd&$fguC zsO8OMjNr#lw;uC}@1Eb|cmL+!$8Uf8NB#KILgs^NF=yZ!UP`l@$j07fcR0gA2m}8=MvD<&)RStl{!dzBBUXc6eS}HIFaZBea4PHQ6 z1Z#;^VFd9EVlq%lr8Uf8QLD(dBh%0-FP|_O>}q_}LWc0&70QUWY2AZfwOC*;U~*!x z(Mw05CF}-91CbR~%USVI)YID4vjiYpGcR=)UVC$7 z>ha~`eJ}eTnoJ8sxT+C{xW7waPWQRId^4A+8qL-i9s_i@^6`kF)W^q0Qw(>Az2x#i z6?#Kv!xiZqHqidEK2R#=yf{XKTps!nGSSPNfdh>(YL7O?63LG$+f982JyI3N;P93m z=rFj0(DF6c-T30({srjdd54LJ=cis6BTlNp&Y78pT(-neirkz7ytUQ)j8U}X>-7ap zff-u6V^@nDXAWElp9q;wuVA0Ko7C*`KSEt^xdBFuI4@!Me)xulH?EQBwNO=b%bVeU z{h{pum}9DYpEsQ3OH36zAl-NL_?gHG(i$W+xLMRkG=`el-o zidt)%YjqaHY5YD&ajy+^+a59w4s&nr_KYx3nMc(Q)rZR-;#pqFHD`|$hz%kWQB?w) z+KC_k^X6}V`;-3lKm0`I1)0%}$iVP8!M|(~y*I+Aa$*h!hgLWD$%CIkoHNbcj%Hb? zN;)4acCpr`bv^{T*skyx(63WMa3bbhj2pX(R}LI7u7v4G3xH4|1Gq+#2gYP|L2#Z{ zRx7C^%AI5Ks22dW62TO8uj1sk7~#Cs!{8H+4ee@ldxYd@w^`pUVJ7kA%f%M3*Ouj0 zr{RgfuFZDN+?oAx49_Uc8BW*ifbNZXU5>#pVw_SJ2(8^L-+M_w<3xahgN?xOL4$9> zB_vdB!(z@Nx8)e*%!x4v*7^tsb3fPOZryj|rAFo?YO(YZX-oDyUO$LFgYP)CU7t@H zz}h}B#TXnpu=l3hJ$8_VlP%UEh-kcg0y!D9P?{BM z<23`#iB~ly1LQ#WdN;YkiyOVElN8`8tj=nYmWukCU)c9jp9de05!Te+&up^pY9>;x z;@6X3v^iyJj$zp-&i>NrD{gIE!!N46p&a96x}C>%Vc$sc7=s9CALQt3ZJJ|X=|SMQ zWZu0z;C=d(LM#Yj2Gaz&z+i1S-H%v)X^ZwQi&> z3KWSk2D`1;026kb!0|3m*{I&1?vu~zEyUVo@#`Gs$o37IycC3VPP|M(nK-wj8_dB+ zOsCAMvAZzmU}mryTKB>j^R&sfA_*yQ?~Sg7F~6uI`0Ky<4gT=+2Y&ch{}KQ4|N4=C zUgNOd`^2TFswO!PK&o_IPrmM3jbi!U%H76bwu8ku_c{oNg+XBW@p_^?GLQ);e~;7T z6tI20;x!z%>JsLdh#-0wiIibQ#JatT;~L6Leyojx6l3z!=o`TE@xWuu zbE2_jVOwC1CdlcT^!?g8vJ1^?a&00TnwAOTQgYWh4TXV3BW!)(`}CKP9@pfmb}S4) zC@^z|wvmh{rHz*w6Q1`qPxsH_L5Z!$W5Hia@g0S8`>))790_H;rPm4|`b0eWwk=Bv zRYbap<9vuuxME^R^izBWh09f~p##!7+ekr4|cRQ<|lhY4m zsQNTvNnqHW7>D^26T2Jd4zF|C40poy_K7BEstWw>EPG=VL0OP>r~k6G)1| zwYH~6G33qDv3gUgUS8Lz*+&qZLB#MP%2BaGRbf{l$H3a_(_|Be3DdRDP42U4cGxXo z?S;rh*~NNj0kwDy^TnUGvG@{V#|2|R!Q0oZP^)kf&eXIpn^=btCQfI zluE((q|;A~$dshm>t(PclI%90{D8x%gthiTACM!b#++0a8$w6o-qNlJDEvb(TLxoX z;Tx#VfwpxnZHy3x!33hX@%{H-bl)p#t;78Vb3RmS^YvPu$*QI8YfN6Q(B7{tgkt9V zaCLMmT|RjpmHB)Q?A=(km6?PZYn$6UC)uUx9x!Zd4?$Vfn%&^MJ>KFtgx=Z)k%;DEYhS+@`#Dpp5>ezyIw`b`|KAwkv z(M60@BrzgcRm@@NO4U-P3HtZiRF`HB+`Ho5ZGW-!q4L(TjY9w0MxIWpl z_iOns-^T7OdS1ba~34(`}wfl*}Trk@Is#c(@iM z+A*|ojaVPArr{pP<2F5qj({Lr3T3$RUc$(DUjkTyG8pxqo$KIPVD(OB+W32P%R-!$ zQU{pIO#Jx6ANjxhum3InhyU@P;gBQ;w$7>(*hMp~0({~N*P z^P2E}qT=;hi1dO~rw}z==t1b+V8u!O$wWoB%qTSOGT`!XdSMZ)F^|<@W zL*MRS*u5ZYyh%xKmVOfF#pr3VSV4wO)kpMT^%;=}3=c$vZnnq1;5oGliVbP+ib;xL zaqcdQUk7}n0yf47KGT3y8=#VAXGpbxCJ`C@_F59&vAc$BiT7(C!8s$5ehU4eX8I*s-#4KNrd|J z*GsL&;}kh|L0e)E9{mrMG3bYJe=;au>&6^@@6F?pT5E}ET0BFH4a^b#a-SYx3%D2@ zNUUAl1&t|O6xOcDlm9Jx-o?XYZZ+HK(^JMcb@W6ySI~IOVa_#WI-W&4L_44A`rddu zJ``i%C?({-oAv5LK~Y@Y8gU)ot)V1h1tTng-A>Wqv>7uez=^%q0SS3Zbb#<0Gd;K6 zjf})VxPc{59Bz*|69r$FgWZNaT@i#rf`~JHi%9X12&qz4<1rs7H4CoQuGdDyAj+Su z|M`FV@AXgryMK&7{qQH%&)~0qlh{jo8|BqYy%uZ70XZeF5I(9ABUI&=ys;Uri6peG ziE>TDV=9W(f?T!4Jo(4F3Y#{w`_4pk6=qJ9$d6sRT-ql&yxz+E9oe%O2-fTHPmmoXZ_?X;R~GBfL1+Pc4ept~YqX@b*2!9{bm zBY+s8-axH11RVJamCGH1*H#)*9>s}f|@*oZ{kTU)|B zd9tb-)X>0uk7Q3NEk5tW-+g)Tz#>qr#r*2^SV zuDpyOqtf5NpMP1%F~AUNZw#MkdCksHyHCfvyXlv9pfK37g<*gibm$BKYHjRZnDGTw@^WjqA}zbc z@JQn8b>ZXV8>2Te;=SDT=EN-A=td)sb}8b(h=@!oa^k*U9!%@V(VUw&Z7jJ2(Uw40 z+XdJ@;UF0f_pc_ZFoqk4dwXQCw2^s%Onm#cV!{jDlEkvH+6-P}TWy;6i!JEL3?uPn zPQ}U5S@!?{AOJ~3K~$NXqUE-zguQPEI{mjfX&53$o&F3t?$^!9$z6VGefzc$88(QE zh@9xuVU7qFQ;Ws0twNqH1LN3dbY{ub0OC?}xS4m7`Jp4}t>$1@oJ41?Szb)eL0%V| zVUfZyFNoc^CP_7F7e-!wVQ8L_3h5(=iE2xmz;IiRLuz5ISzQi*CJ)K}I9#cTjHY(W@D%`6iX>+a z!@7;dJPcM#1^un?mnCF6V3&|Hl$luH7HVx?*FcPe+B>a_3?7PFs`IRbT4-zp$sHDJ zI*sMLYfIR@kFj|WIV6?&2^OC^19K$MZg`Nb4I(tg#6c<;WWF~V`(!PgU!LPZ^#r} znj=Cngy6(dbMN)m^{`fZ;%%TfBiVK8vz^IoC*>jr;*2OFYbkw-avw+QDV`JBjYUw?S z-CL+mKAsoG7)+A)x-Dnc#vGHo3$Oj6Vw_vNOE5mUH|tPHTf+GGrEq=8AgC+y&}~YQ z!zWddU64*)k__A>C})%w_G@E|#N#m{s<4*Nv`YVl*Ak)T^YK8Yu=dLZ#W7L)wmdQX z))c^9g`Cq5vT_K2B5_^*ECthAX0IwWF4L`mebD5Wae%!+4jtw^uAFQU%i((jJty0! zH||g6+{GFHHqIgm3^KmWq+ z<{L^FCrYli2h5gRKwC7;r@8jR5obz`Fnd-8vPU36w2A@9HDt#{T8$irPr7d8xvyF= z#{f{MT^w_2@0&9pZ$#axANz$K<~2p1PSp?v4nL^X2hc(OvTmWxD~b8QZojPNyZ{C^ z4seGy1=sOAmUNW&u8;3krc2lM3VS5(y{$x{aNjp(JUH{AFOTo|&;Qx~gM0lqxPN&- z5oiUg8yUdrmPhdp>#-ZVTaS6MYU8zD3W5_xQFfdZQ5G_jS~sxUgH$+|t=-V&8xzKG z&#bq3)=iwj8(tq9&Ez=yoDm5yD1__{KM*TOuiA9+VVM=q4K;D^MS0VRb#JJIkoZib!4IY-`dQm8t4ra_A+wYYEWk~~_@TEafYvIfz0oD0Z87>7_u869Q z$YNw4Y_8B9)CPj7oL8*FELQ>>8&UQ4761hoMlGU-*F&U*8*#Y7!0tmo9B*^Y#{P>X z{4ixUgyPoij1O?0L!O!iTLZ*i+osg_$jwq&3;|RT*SJ_AG&jof1~$%I@w3I0sBZ4^ zmfnawMMi4fo_pp@8?z5pes|%@p{im6m}l8Eawx~eRg2X(f&(SE>*ucer zyH2vMd9RI_!7FIUO@-8n+UZn9k#P;dtOlMi@#mYl8_GfKZlY+Th5h6NN=|od8&F`L zUi!g&(5n&RFu*6|`esmg%R^7H!NN{y90uyD9RxkO2iQurZcGNy?Z#*XhLu8?ksg0^ z2^fqV=P}xp{NHuDw5d*nFB-@M9#;Sz*zyN)?L%fTFwfg%ALNe@nizS3DE8{caF4j; zrAWUk;Ej{F#{0kJxpy2B62N=6Fej+Zut6Iet=(maO31R-Zgh8Kgm9K1Rn1^&W`Hcd zu^;~I@{p1XeGX2ie|V<-t`^Jt)K7Db;8+_Y)z~gect-|T_B{Hz=J3^TH!_E|jNHjF z)R65Z_82IVe15&S`@#=@-1_n7edh1*OIe2KT=QbnKc@tNOe~a(E$_-~DMloUz-yN% z@xj8(Kr+zxMxRD~9~|ioF=I$oTw6%`4&K$`G3Q7|U;3V(9&bQY33CpE{b$DRQf6X| zfy|6<=yh+vAwxpMt~jZB0tsvth8+i#fGd;JAY;mZ1wos)3fI?xOmg3b`$&mz_l@G9 z#tjcyEV}LYQ`r_vR{3efG_>sK;dEv+G@8<%US`=14@dYoWB2r*c*HWaG7O zTw&V@&pU+->{>)j%zSX;#<(6TfUmvr?c?Qc#h6kw*1jn;<_x?(a2Dgf@pl&@FT4@2 z)hD^AE#I|*1KGUS3+HEz@>=Um>;f|k>j?z6BOn^%fr7}B>x9T}zbuKu*IzwUd-J}H zLp(S+Q@;+pge<<+3o{dBq9v|wymKpSZ>hyN4n2on{dV$K@+{bhvq&U!OwV|>qbSGf z>2sgJ?H4Hw5+9HndoSyu;so!bkzpqQ2(HzP@EebDVr+(!pNIN5XMpoS^8G#>loM&n z9VP?280eIgR2TCapF&D9B4YZ4(&0?!0iX~N9ra>#oRc6yQX0+x2?5Rw8T-k< z#LgIi%v1J4^W=+NcsK@zlM^|3(QDvScAYuVP3|_LvW*gSGxgB-32F7>T8TL)HiDzQ z$Z5$Vn|)69_TU{>mx1Tg90IADBNH!dZUsgR)nP`L(HnjrbjhK8*E+izgAa0g>Eec) ziDuwgHlCY8EqfRCLzC0D3KjSMkXZcBKfi!~_XB?a z)1Ud}@l+Mh2=BbKTS|YJ&6`B?fUyuUfs$`cbdjK{!Umml=Y`}0)el~eVE0dw{Q0ih(JQn|oMX6g>fZnd3gjdp?A~mojKIeGg}}%FV*&`a zLTaM77@3@NVq^-~2z1O$We&d-dK|%Q!!(E1eQ&6C=<(3V$u6PSLaTYNg+~sIc_sHM zAw3VRG8S{p!P*-i=BW}9wx|MlyrIZULdBN1{CdpBt@ zWq76&7xwz_z(Lk!TDWCE%m`~qBZ%(X9~Kfhj3?v~6vf#O?V}{mb4>|0>-gG6Cgi=7 z|BMLqCf{s#FFSNJ?*&8bjab+kN)2Aax`15;NE+8=x?L?t3xmoG+-s2y%=us@lQ8@ z`1ud`_Ig1r*6!nDqh$+xBIDxP)*wNF+P)Q4$r#8%APO@OO(ANZe6Y*4<9e7;oxprt zrwlT%9bIE`N)T3i40nx*DnGyo0&`+UaE!3+`cPaFzyz_%EZ|z8dgz*8nS-jA4?F_& z+BZt%*T=-`WAVB!>}m|9{Nz!D79N98Ta`6nGw=E+Fp@I{_Y%+p!Lt2ac4tZ(G4d={ z3$-1~%RCF~YRsG@27-<$-Y>9f941OytXi(ixc(r#UN2lR5dbEHXI_5sz=yu!i4E4h z5NJFePZzml-u7RNFay^$K@!&-lwPR2K@5(3V(-LWA0&f&y{to<=g%0)dzoCxVb01t zrGy+8MxlX0_azC1iX$ItBPxMG1ict408wJ2FzMXwUIOZ6;B^YGSI4|U##a(+yXUSD z1v|2?^cSRRF<^L3jG>;1wfxlp>zRBrkr5mR-T2PfC*DX#2ti8z{-vmH

_)2*G0*c-^2?i*xs(Dc0+gZJ&a?#N)T#*7Qq z9ZKr|C+c0cElH9iI}uegKQ}Ugu6_-GCjbA#NDfGXcyw1~#C11Q6%NEaYm#eWp(>-| z+;iQ{R7Lh?2V3ndBpcTl?5&fE#@Pmh0wk*O$$1LdjX9=NVqgFXy?5HwOTFMQWJ--k16Hco<&R3Rt_pn=QndSp0OrCyYsplkqh0CNuETU-l_OmrDJ zX(<6U<|LBLf~p}46#~_Z5oy_{$i3UTI07ofxU6xmYOb}EL;U!LfxUuNh3oTCZ=zQP z>Wsc>169bpILD>HFXx|6wlIQ>NJ!?qkY89^Q15^q&C4c}keShdm0~J`!@6b0g39sG z^zS*x#mud)pGRsazTy%SQ4~3bGRfM&UWX=b$3iedb4;XhPtf+~Je;w{ZlKX9*NOpB zp)eO4?F)>~Q0EXAyO%lYDu@Oh&Fj*0Z{AO#I>8vK?`0WrgjPS87wJoJ!Hv>1*-?$J z>%x8(26IxiaPW1UIe~K6nkTR<8vB?GMUZQ6%q#JkiF+5fWa?WAV>a3Xv!*<}mp1wU zUeZo@sLc>gnf2pXDv)8G>Et}RZ-JQ@G1$GassNG8a0Oh~#~!Mp@>-+aG@ghJ2MvA$Bd(zoe*Da``%K^(YzBYH_W_ zm?}_=IYO@Xf>|$KyS)q~we|utI5>2?Y*wNVm*2ZvUH)=qi~tCZ)P5djH|NLAwfAk4 z^iAMwWdE+)Dg)aQN1k{f@T(eMhu6RZM7OrXU>A7l;#r=r|EAw|DTkPIXpCgZQOStp z*H;{=uVZ8o86s7!I2CkTq=(mQN5R_NW}>K(F~JlqusGSG0~|U(O@o6%#h*QWoxJRkm4T+c% zHc4p2;i|PETK;7R@3jfjB2^m*4m@Y)5%aR};H|KC0~H)eJZoct7)(@oiERX?N4zcJ zUZ(SHv_V!m4!t9Mi)B*!#@E*u#t7Tr2T{KYd;Os~ONx zr><^}Q|I=n$@_#kJ$n50kUk}rPx0OAYGe=Wjboyj>a`+gC;|qD>rpBGWLnSJxF#4W zd_N1-mWHlg7;_>p@VyoJsuOEHVnpPK(>VdEy?)%48B zgVTpLer==&7N<`>un$OyHjkO=CLJJ&F`=Ze)`ofOgp?Q~iCs`{zWw-Dy-1SR{NTEr z(-gMlowXGi$RuYHdlkU}j>KI{>w8<_736(Ckc!u5D47^xBk%s+<{O9Q>wr(=-K}N^ zkIs1*-6&=ulTcMa=QvgZ=(bUxD~yrD;%AbKwoSMTdzaK?^_H{9MhZmc0hA}I7uR}l zeNDr>)qkp*tlDdK*pF8Iz|AXhD6s9VM7ONKA-R^n>|+c{!nz;S0A?O@c;V0rCf2!i z*cda^Ysbh`jO4SolPd^3YXM+1Th+y!KM)djEnZ=I+&Yo9Q?VsPeR9w-|AkV=7*YxB zUYHjU&2X$$c%DWh?K&h;44iKiJ(rwRZ}u|FWoF=c76l=bYO9>UAmbWP7c&D4sj5Ph zXTu8=9r1Ve?kWdp{pCM*tqc;7c7 zGQ8N|m;tH_Di|v)dHiHAuXZ(C(3lV&pTL3^6`k$55127Bs_Ts_aYL{QjaWW*qSfyF z*M4bfu1KlTy>$|=*k>y4JTK5uel~S!Z*k5K5TSeBSp5sgMwqwDy&KnKilomHv#O54GTGkqry7~#`& zkEv{vbw>id3*~QxT@RyBc&pLIV9r6kUIHEEG%O-_Bgf%yWEhxKC8#%M1TzvC$tr1g zD|7I?a@fuZd&veF^wiC2FWw@kz1wg7I2i<-6wWzSGFthG2qyM=3_b~Bqfq8;^B^u1 z6il)$P}`?xSmZb|$Vl9~`TZ=xzk>Y{Lp)>AUgl&2dpP2e0emvCqQIRIzrc+NjB`t?F{%7H+#~SLo`qs@iU{ zwWMk$)700t;=x>w4dFsHxHd3Ga$bR}gsKM!e>c3H+RAfm;=!_39lxP(O=gKiSbcdC z8g}6kwQlvk?H~lP_C^jLAmen<*IvjZdlw_D#(GK^F%&oln107$z;#WNHGlv8A9(lH zuEorFmv7qZPh|y9(!oYBG^AEJ>4~E4u&Xx6#5FHH67LO(`xhJmE4x@9uCqu-M1Mtg&gMmWx}J0UYx}qoFpZVGdz(;Q2Og%X|khA~+(n_v2^5p(8K?_j2ywE@C5@SzN2E zYjSzyUBtl`kYo9dkJpt9HmKI-pW%%6^hcsq#~tuymw_;F8KRqjE@)U>#Spuj8AIJg zc3}=Hv)Y9u9M=Fxx~}XTD>deI9C>0lvAUGQfPEcNZZH|)8C~~6&VXPr5!s#?1YRMV zoP<6twSWu|ir0Q(uwAtshY`^rb_*HDjO)`S^xgpv?>f@+(HzMbQ-20>A~ELWC0={D z41!NVM6p>44zss-%ytTb15cGR837?krH^kTCTkaV7v$|pgw#PlC^H6g@Th)V3(GT} z8|i(H%`A<15==S>%_`#wa4@P7{O@i0Nc?$)2|th}G{xj}H8gB(7_iSsoJ^GctzMg|6nRjX4vUFJPppevmO) ztDv&w4Kf}f(hXpp@=V6`&(yv#44=Q<05~jWL?z3f#XIv=5zxp+ImFVn>u< zQF0s3gaaWNPb^YW_Lo_W_7W+BIaA&uXAs0;e?T%P zcj%Nla)KOKYkBGLK2qt|=B-c~m z5E-R03D36MUc*WRFOeJ3?fJbYB(bVB202E0aB{wwVP#Uhu^`9o;P_e$JMG300^D_D zp07_FcN!361k0BuP}HvGMk~GAP|N2{u^Ev{e@;A1dn*JPEJ4W0!-qK!3^6V*2An#O z(Y#}7Gq9^rx;!obIp<*QI_+PV3)e1G6z0{K^UEWKBZQBLaB4)*NuuZsRbHsGc7YAd zxFmtkT3`;_iv9C8;D$hqKvJ0Wj5-jAF>&{q-CDmcI(gq`pW<7VZy<;POn{Bn^7R%# zd2~jw+jgPe1+f|9I-Gi^9sGeCQLjNXHj2%bDSLT9M|*E(05c=xfi<9J??x?GQO8KF zwb>LgQnf^MVa!3yFMV$X=Mcm2s0zFL;?Of_pZz=B4zy5ceR5KJ!QZO~OU=*aYPhPk z+4QO236cM2Z4)K~BWwgR z95C=ag_z;b6Mkrqndg)UuJsLcab5#W(Bp>PspfueRhi0-0y6AtG`A(t)zOaqDFTr* zm9JsWmJ4PKW(2A?Q0=tTIV5!pGcS+mdbuhUsn`8GBAk!`k;5XQkcsx0mS3PY zVshq()wk|mSUdRRD@_yQM&stQmS18F|Jj3Qp}Kglt;h@=#Z(+m=&p?+1fJ(%IASVE z?Ap!)V=HBX0(-wXRiuya@AActsT3JW7O|c!C=p^bg{rMMo`w>%nLx z1}4*$$T+-(+CXp25TETM-yuqL(fFrq5V9Jw>L}6s&_q2D!>$eH;956EBr`9p@=0UPvq9Wtz>SXe z!WRZcfYpxC1;^?C0Zw`~nL`l?;ei^QHYD@J+&Dt8O~@L0e}{&dR~cCJl#+mp24N~+ z9q@`#zUlgJ8T8*oJkJ7|VS-U>?;=HmWYAWUc!KTm7ZUsYLi&1nL1;XOH{iuMv35HZ zKw!ySZw#Nrs)dl3%^AR;&o1VOVB6r(01;!*9p{ zqH*Xr1m+xGw$kb;bFE6f3+Z8k4PJ*NB5g>6*Jm1B6;Na{lbFW@9g!%5ll|=RLl#}& z?!xMaa}LCKEAVkJK?4J}2N;v@Q0Ki(+#_e(FfdVjVfYw9!=C74D+iA_1HYclnFE{? zLkyt+w8mj%^xi@X0|Fg219t;GP0hM8naADMDpdOjIEIcj&Kb^kE_eT0WWa;(E~ar9 zaI0#td=p5D-}%i(Bf^CU_2nuU zQm5zh^4*|Hh8c2d*-Gpax&Lk%DZ}N5lLZp<8t7ODSQbbIGcMd~qXB${EH3b1)RB)p&aOm#`0A#Y#-) zwMQOx6ft9Z9W|%EzZbh7XPX0L7ecb(-3a$>sq5{9Vx*r@CD24Sc`- zR?<7WitbYQfC(H7rxXY#BBeg_^JZh$K|qGvR}q)us7*)I5kgt@9tcH}8UFPiBhK>)k(joNieKE!3mBOW{X7%E(2*ht+KLG^?T%SnK= z=`(W@D0;VAXN>3n4QB)F7q)MW0j2rn;rMFneCIGw1-faMh~ZmTWO56(JD)s!Ev_;g=e(&73mn+|f)S(u z03ZNKL_t)t-*W@__3QvHeC368HJ)uEANs;T;Kz0OSr+}y3Gti}?wlV~mES=!del6w zfOpbm!Bv+Xbm3f$e1{!c!7DTC~E;04{)8ANAwLXcX${0k}}+M?4G;V^2jcMBbm zIu6y$z@w3#o0b9Q9!Jv^;Qq7W22v`ks8RiQKgQwd3e9M?$9zFz6DkugMev|5t9^w-x-K4{_^#ed;X*_+?1a9NVxYCy3`UHH{)Z|aF55C>-q?UcUWFceJ@*~mFdw%2Ura$v*_Ln4SlXsOSw3e>58XAFEk7w#>__kxb31QIX5QV?B? zaCcm1(LCT&W*B0}I2)sLmIT^OE#hTB_|=_BY&lkCdf@{iRn@2li--6p7YoJ}5QRC0 z!Aafxj0*~zMXTMPm+Td<2KRE9^9W4MqYp#^Avwgc&a} zrP}DKBZ3uFLKhe(pN~wg0&=(E!AifAWhZ1tQYFPPEwhEX7veI$Vy%bN1V9Z=n}(i6 zb0tFZ-}*iLp;e-U89pQ+mca}$wN|kZ8u11c`k;ednSp0syynzbUTm#1W!(OpAdZoW z7z9FH>pX;Ax^dglhdPr7)Tn*Tf&!4C=ibPpefL{Tm^s65OW)@>A_myYveF1t7qk(<)baV*KoJ2T`ThNv<6sm$7(!%|k)C%`2U4D% zXug~CNf~bkL|#&R{POj6Nhmq-Ip>Gt0+IvI;|Bx?Y?*-P1fIR$>K24Ex^Ij~{n!8WJO1lm zl7IP~Sa(y;($7D{O@ia_is6TQAgMAXS#kp{MJ)LwdXD$#lT_&KXrfdU8e>=&GsAho z)#tMzRJ~brbs6EtU^31H)*KWso*H74G2D`fb5Y*jsMxgY@r+15$Hn&J8n8{7TD$yy z15rL5aWHg^V6Phy!5_c<5K@@G4J$*dg+Dwt2!TQ(1E{t6JipKyKn}J&VL}_*xVsg@ ztd0XoMCx6nO0|oh>tlgH2Id^P@5fe*9F&&(p%Octsyhgy~<>AD;_*H>)FLpzF`vG@2rW9a2 zAHinfoH=35@YY@re!B*eWTW-Br?nf1Yeqxb_b-m?!|=5NV+4n3FiZxzw$(JzeAMcr zUFj`eU;juw3zNXt7~V3T9rx}6=~+^UDE)*+D3$oiWJ3IH4kZ=eU4NQJP=$o+mQ_Mk zL9(DSW4vAZlQ2m17Bhp4(Ot#nR$PIf^~;N@FzLxnJ{>0XQM`?Wg181bAf=k90F@5M z1~q2lyUHb(k+{+T?dN`CMhcPoxxRx@x*~Y5pO^v2AsL?dRP1g;k_GMB7;uf9ZTaNa zO#Rb;`NTi{=b_&s82`Q$zczng!jBBzXskM5WVx`hkg81QjALVr3(dmbMQ}K)X5$>O zh4D3U?{ejNO6X$vLGB-M5Y5Gk!k{S@KKUl3=7!jzgR~0V4N#K@01VW^9Dy7IJ0DoM zs*pCCsW!A2zz2U@icM~f$HMo0 zb}47MB>BWSJ_$~@Qm--j-3#};NoDaHOgNZR&B>uMj$hx>KG%HLG{`!xasow`fyjh3}7KrwUp!MHc`^Q9IHQ6FzbwuzW-sE8p1b^~*gL8#Wl{oMHd_utr} z?zMP`?7Xg_RPn*aYHH&0j5)m)@8#uGBah1@m3)^+jug~>z$C^5_r0-?Nc1$H830xb zk;9O}vfV|rQTPld52{2Vlnb%is5<|SYbXX;56_=}GPM%dvy~&!F;F(os3qhf+UqFc-?uQ6pZA-w)CAol6D7 z4`|`QE)$M$89a!By2EXq0QNCq`0h}MbNwfWU3W76?=^JMi7-L|b@;T};U!f}?jvk! z0rAGD$OE5m-$2mReh>rbh!d6>VEDFERhVhaXXL~#co|r>&4j+05la6N`i#L{W}d`B z)jp4a7^jp|XIBTbjJIr%yIOmTWoCwmh|HnA-Jhm4Q$EP32}5*cBR2e(x9ktkUauxB zu6Zc}cw7L&7z2@m`}@{b@yC^I*o^Dl9`n1*f&j;Lk+C7^6p-i>cO;(gn_U1D@iIe5 zd)W_$)822qUG@mN`h7}M9&!BqUR)>9Q+w&>_l;GJc4ia1ikXuUA3e{*F@vA$OH~h% zK=szHf{;)Sh{4DYR}&kh2;#dohbH6L2je`yoUlrKast|_Ugp>Y_3L~2b04Wjb5-H; zgn%^gRMu&ll_ECB5k#TT$dPJWT+wc-Ffa)Qo@Zf>p&W6jMy=JQ>mo-ImiL@0_xTj7 zJVFm!XnFTmwL|sthS}7#7kk$L6^7mKN81ctP(bZM#tejsVpR?uf6`T1Yjh&2{h>4` z*RdZb#UqIUD3>yo4pq|RGVQ{QAI^r;!(kJf3Su4Zq%D#8=jORVRPdM;GH}k|BDz?$ zq*O2pf)|NzhE^rEfbvwAD%Tn&2c<+8IWxpT0*&n%8H1^{+NKA#nW}oVEd$pGDyXGk zoi!p6c$Sy0&vG``%fy4=5b<)N<-9G{YOuk7{f}RmKU<%#i=wo1aks4(JoCB{!8zjZ zHGq-GG3Z-so!V$XcmX4);9^ZZ_FfpDc?u*B|89e9JWi^Dw%c2o^wm${hwNdFGY*%w zibU%=Pq=3_|AhEOa!aPvS-6HP2CG|77t|FTRP_ST%wwz>V{q@SD$f;zZc#-yv2IG6FA@`k2yjji!+a1qM?$bZb6qNMohoZ8ooWk;{#%|t2ESHy@6fmZB`sdazWue zmAMB5G1I}YXKmik#++^iLBU!}$rK~?B2e% zA#nLqjlK7Ii#h!%g8?)rxOeMW9Sk7Gkw{z7M77ttc2tsJVz0(ph0l*Kkg2_Y+6lRd z=)+;~0^LTsE(CJbY&8Y~+9vLdnPzC9vE|om_g0tm``5+k z6o6XAdlxsr7M-1b!?XrzfaP6Lz7H8A*-rUG$FO-yUYdXI$THJct(M2r-jxz)CB)A# zj@z@Qn|e(wl`wz(Jq6&kfI z^#mu@ZaysB;mr1TFaE6-N~P}Ri1Z&o--^07LgO61;00Z#28cNqYC{?BjC)$*6Pqkp z1x8@64V9Ng2b_$7bGmJ~vQH?Ffg$NaQkCI7gCMwVB+tg`b^cv^ow3oB#-L)fvYJ_o z#v>(xvXs_F25Nb|_!-lqGXZODumUqlVjT$qjwR-lPeh{n#4|VNkjAtwaNVxRgA2PW zW(;v}F1E_cPKrB8yFd|O`qFwvM%2rcKE+fbecFqzO&kh_!DiRmWx+6oR{pFwo% zGcN9iYBeG+WF||Gna6J4gdi{6t1)~KbI2#mn2{PM4}z{1bE14MW`;13;K>bta)3@46{pvN#63AHuHp0wU}e5Tor;PV;hu#@aQMT z;3+k?xhiS2=0Iai@6_Ho>hS;J^GLt#r+6J}0s?5YM&zlP`ajGF4Ch+~Evg={#Vd}5 zQim%b@>v@ta?HRuherwEm>46qwUKRLbU>^+veG$DW6Cwa+D_)C`6b-DKmj=h5P?-> zw}eRM2tQop4`-e+2%S4dYzmwMBvTDt7sezpI8KE4Vep4OkvkBwcz(r!eM z&qi`YIL>Gak9+uNG+K*h#`*wXU4EDWbl2YZV1~`o51N0g*1vc2tHHna(!W0&-w?-4 zE|FCQCx620;Pas9E@nbGCilAWJU5cSXAB0Y^(>-^Imb!sILVRjcu2L`O^uvqnT5Y| z+tGwJMuakhyNZU^d<1M49N3IZ@8ZuBiJ7Qf)?BIBYdOC)z zn0zi}Cg2jis=-x@jZ_AyqB5tMm!xgnIQ=Wb39$+uktvC4Mx5Uzk<+OWe9h#;;xkT| z9Fl7D$`5v(Dte^T4H7a(ta`2C#5D$f91ez}4zWo_#|m_6KYRs%pII4ct4l8c;Acv| zvVF=Wh)y8_Vp0uj)8L$PZ{POJ=8IFe+az8ixDSUV*saK&vFXR0HT za5PXR4whk0TBvSDUPsY{vrlT~Btn~iPoBMLrEo5`7Q|$29j{zrM47>RL&`B+nidi1 z#|mU>!a6Kt&%`=POKLE6*(cSKG1|mdVK1Q*xH8?y;pt58lTDKllbCt&kMF;s*2dSo z*gjdfo%O;}wvTor2GE<1*g@*x?ji1ElX#5KWMrzlS-Wt}M2;W@tli?Ubx!RuiEzGV z@rJWDLGkjOP(U&4^>#K^e=<3=(U2H@gnLQDrM;Z8Q!T_CDeJ zf!^S8w3~nMnolBR0GT9i$64EcHCI6xBlE<}q^k1DkwEogW~1={*vJe75871ec#zW^ ze#bLVe9<+H|L7gReih~bFu250Z_+b|NJ#k`5;x zLu#SruxOi)lBqbtrD#zKAu{antHK;pHiVGuKEZ_0+U7#YtO0}z-;6UBLm%NRx4Ji7 zY$gX2nd$$u3cKr1TqE#zfv5m5N4#Ch)mtfYj)6};$k01|w~llS_lHo7v?+OgU@)E@D86x&$)!Sg`A z^)_D2=jqc%AlgejzZ`N7?t`$k9M`2IR!|Wmatzg4Ac?9SGl!~xJOrXZXv`6XZ@4o? z?6s*9n0YAL0dXou_$UE#4rdpwOYnPeRUvnhUC#2*sLc@$n7_aggDrr;p;PUK1l()! z%84%1y2jTJWH;_V{=gjMC&xJmC{Fo;{@nToT@zlm( zx*TCPkU{RYYT}Av+zuVEKR#A41JzrF4PtZ7aH(Mzc&^cm7ZG%rD54O8Sa0eA%R3Zw z1g;7E<6nN@Yc>DnU;n0iTU_csx=(;ro0+XSgH@K>W;&wOyRrAt>d^Qpx1U5r8@y=9 zsJZwN$E{|nq+=5W^5a`nH%g|G8Ac&ShF+;_Nl2r&%{4X+&R;5e-VO0MlN}GA3{Fo) z%+UZaazvNM?0WO%BQ(ZEMxiNlv(aD_5w_*%AaxqVQpV>qL)g@x6NW6s0$CKP3~ zZXa_iU$q%DgS44Eu=fe~pNd~by7A+MyMFuaE5^9=eHYd$fC#}0O-J+s>cZZ3b+XUF zFlOi=!vmLg6`@vQpM4A=x^`P_sYO@g=lzfo%rU$+O#klL4{F@*{Cx4(A2*z}KaN}T z1f-Hh^gE8m&o9o}z|csh2J~(oFhLsjD4WkY~5_UPIeF)+d(g!ljM_BSX+AO|A~lGdr^#@mZf zV)%0v$wB?+f0)df{Nv|OFo}%R_T3b~aEd$wnHTka9|H#aI8E7J-nqDYuFJ;p#p}&9 zK}`Ok_>k<`@)0njG~W6!;N2}=N?VQ*ThuN`@J>(73Y&r~{tR|6e0_cBUBUO6h5Ln& z)sEY}aCDf!=!p}}jXcubl+^xRatYBIGlL85f0YDGp5VR;|NOuIBmc+$_80x%|Ic6f zFaP>i7u>u3?Z^bs7;&yweRkTX@X`&OL>~Jr19UDVG?fbo)9R}H_czF(S$GIW{d$)7dNi-=a*z3U<_TiyrX0*bu z5x|*`7^oKRzIiVfYa|Q84cRH?xEOP4gPfTl3cD7n7VJYYBuTwlfUmFB8Vrmp?SJV7 zFPh*CtcW=;>}S)zkD?r2K8xz}KSYg41J=<}?{@sLn}g)cAyjc*7fVug#|TI84`i3`BQeu`^}rNI^tpo-Mmz$y#{sPKQcBDyEn9q0-&CRd40y+?F| z&Nerz9$EtIN0tpV2d=^dF~Tw=l_oX@lXGSpAT(X z3^?2AtSS}2^)=$_8mL;4!!x(tB4TiiNkp=t-~gF`2C?z}Lef8zw1vwT+Tvhi&huPs z;#r%0-nyRpBP5_pRJ*R*eO8q-*etBRIc}=HNi2SS#A`UUyQ{HH z`sD87y&g#77?aV1^#JPNy2a-%7Y+!{*^F4hSb!E0%?QSNo-iYW)V548!I%P4j;!ug zXeBoX9%gJNp9+@9!HH*qyAzv(7#BgH_6o@SjkPzci(5rz@|x4-31dz<<}mz(#Jn;P z&E3rnHy$$+XnR(ez&HgQWSpyhp|wFYlEP;sBY?Gj;pfl)AoR`a5{bgzi=05m!d*9) z!M9-`QBz$6nln=~c=$7n!DKI>9+?`2Ak-W|L^RM3#|2(r6I;-;&kbZ={9aAP7h4y< zzZb8#m@)YId?E7UoR@Z=;Jj6XQgE6k)$gb^eGT_)yBMo65dE961@RWfqit~_-{FoiTTdO-b28w~*4YTM# zh)U8_0^69dR+BB9_zPNfxWvHf2SlKD^T+2m1cJ}~Xg}orYpJ{9EgD~W@#3X{Ce=y~ z4t@|^=w1@ce>C$ajMnO6(&Q%~V;u}-+xpHJghT6orX>M#zj#Plo1Uz=)GB+^4%n!B z0U4M%1f@aLI7bkdW)DNLv3ny_e&ZhmSQ2{BWSg@*I83r?CuH|I0w2kWnaXO69DhFG zym?58=2-vb#}EANe?Is>>Ob(m{?~(%L}p+gGYGUnOqP$oyspp5iS%&>ipdmJ1k0wK zc5i%3=QZvdnCHq+mzlg7fuKLn!)it{!9Y}%M4Uy7{$9~GkcnbZdF;aQ%n=Co*>iXk zR0xj*U4jcsJJo&I#g5wz2528GYi;iWhTC}!nGre?)=8Zcq`(oOD~P0*$)>ekf{L{l zdZ%;2Fat!E)u8PR#L=}=0x}1ZaZ(9`U|=m-uHzSZz%j~`0E=UnI5GG$ZZ3kg9|6fR zE@TeWUg!p%Dg%n-m(UDits7PEmBxP$CK)3Tj(!uq8Do`C?|B81zD9-L~Q)m=2l zxBx8FZa@P=h?zrDBW41@sNRZ51RI$`s32_)f+L74Lqu`c7TLkv5Xgn4PH^{zL?oab z0d%u^quvm|m(K?yRDLjfGm>$li)OMnG zW_9w6&Vat<2OuTkSkaww9Wb#S+KK?pzgII$2d0TqeZA= zv39TCM`q^X>%QcNZTodD zDZ_b6$(i}x4+LRval5L^mKgq6H8T+{eq0n{FKI2{=lAA%#On(Ex{FmsMRLSYMU$lN zz4_%Uw&x=`S!KSNDQG_4Yze!GE2nrCkO&=-?`_FI93v8J(7J26elAz&XF%3k4g8+h zDJc8@mmuaz=ij@)43&ftSM)A)9A|q>3%aT}!>NWw*)9?TwQlrw%7BhFoNda%3P7mc zTx)}4_yuZss}94^WvkxE7?>mFLtdV2c*67}gL(5Xz|J3F41krAM70KoE_l}{!UH>*@J%{Lea?88b zbq_NiWiD`rIMq$^26&^zw~?V4Br{*G7oy>GPLXI>Bsv`vRs$K{VL#i=fuRcul2c#k%`D4Ch%0? z*E;B#@KHLhXw2pfrp2n7!+V1wlc-;bDsXxuDim4%Gax0&dIH3R<57$|2@WVxEAj9B zbK@x~Li}tiv4TVnL#OewIPOL(2css_u~Rr6j_Hqv6=hzrRuq3di=%@-e_8_YdRF{i z3+Md@dpA1kq8>+?AghqE@T_!kM8fCuqm=~(an3MUls2Em*$EaJ0V&=0x-HQ5tJ@Sk zJS%ked^H+~S^xrlTHON%{G_WoR;xUbJmF~jXUTyRj&&Aa{OYQom)yOp=I(=jKt)hwV>To`<_ zo4{I<6s=LrkR*rH8NxGOPs}S8qJlmV6Mw_E zWCAO|ptzEXD4cowFy~htu8V+{0RvG$pSkg@3bu~{MwfasOp$#)aC-2r5U#?gD!K_ z>uPG4jyiIW-))RU)q{_*qU;%20~l1dp)#b~Qlu)JhybXW4}xS?V9wCMCl_rnqUdYK z`+QJJtlx$FMFIzXHqNIN9gGpWt%f0iXQk?vZ)}AwL^Sq(gH?{=30z!?3G0st?cOe~ zynf#?h>hyJqk~V2V|q*k^btah3Bd735IARCEC~bf)rTLXGF-Axg6z?%o7q=m zkbegTzhCL|_Yv9P>-9p`y>)54JQR35n$`0>(bE`g`#iNd_g>idG;U%FS-|lr1yojC zWZy)V^LUrN>UqsfWYBPEeGn1qn+-H~CJ}ilp+jUA4=)2$UyP+qH*-&^Po-MTZeBNN z`ouN|Pk9ccrf=T2$K5z63>b;+g#$ri!?5+m;BzyrpM6mI0vS3pWC5`dXY4pK{(`6;^K)mC&MCG2@>Q+dq!&hguQpaux_wnywkd}tkiyVfr~oUiNTbQB=urka z7qri?C!4zCF9f5^4|ue~09c~}FjnDkns_qraL^2i=|e2uk;O-IM!~$XD%X?0 z%ZCYhj5mFIOeQ4kb2JguD%?@nouk`*mUj-BOw1h1Coxp_$TCN2gzY7hUuy7KwKZ1{ zmFRtN+O+@qW^N>fggI?;xtne1q28a3gGAOZUay`$pAWp(3ijEiI!@}VthY4&g61Q> z*LspkCN-L{IM(WVI~H$!tP0PoAT(Ny?`eJI;_vms^gmyA{G_ zy?y(8rC*?X%gdf5nFS{C??0QNK;{Aad{lc+|Gp&^iN5GbtR?N$J|BXx+iH0I0uz$>qu^>3upTYX|IPiH>pGU)77k~xP zb6r2&>LQ%TJ0khs&NL1VR75hAk!HQ#(bPFdX>I*~*1=hrCVt)@?0pz4&6r>}k)a$h z1Pme!s6>pS&{`3UDs8{V)TUIS;u0lesrUPU5#cIn@$)fF zJHsh{$${t0ppKySgf247z7e55sPYl{>}^C~C2leriDZt)0j^?0y1<{2O^oiG=-O<( zD=Q43?JHP96N<>3gIhLlpJ^nHS&5w1IUm0S1h2}YOz~n;k(joyG%{xB zTQvmKDpUrx+MJ5}M)wtiCW=XPsd)elS0u-;GhMDQZUr6Z+o@?+R$s4|VNTP$BL*j& zGk_j6^bN*)++avPnW5gkaweQZ9$QQx4z5jw4WWl904o`mdFax052WW(*o)f7HO8B{ z9tND+_aR!zV2J+!Av3u}2gI~E^?wAo7Y>iL% z78SVu3h*5F<*V?w={GsyM#h)ZraOx^_}^bJqUZdDJds4C0r&fT*gSgHGXKJM6C1{N zD^w67_Gz7Sydku%79_*X#88F9gjoweJx-6T2ZN2#@mOnyR3Rd7cqg$3VB0|mf&2V; zJeW?>M1qZ0?>FmtL?lmt5NQL-X_{IlA~fdhMj|536raIb3leG6!xAf$>%NK2!oX*5 z{=7ffeF@bU^p;_lhTY16>%j9#w}D&+=!UD^_eRHvweb0D$BwRTW~Q+@SSUQtZ_e0o z8#Ds+9^uW6U|f^OvZ;fF^ii&dj1PX^cjS6E(wRk!?k(1uhB+Uol9jfiL?&FAxuZtS zRm@sioIXh-`3j7Qi!)MI5=j7aK#afc8AVzm`&y+*P&#}nbkOyhSw_#4mafiBa+#6(+O)pGiPaG+a>%H-~Yp61G>2v@GzbE!)~ zAkZVtxhUKV2CP~jSM)wsTi-ZaaWES8A?m9w_vY-@zk|ua&mR1=Nnw7i47_O{4n(<8 z$orf53d;z!BAUSwCa5Mb-io)${9JtS_3nmnR}=?P;py9aQJhrIVW5pa^m@*x?iuVe zh!jdj=%M|#jFsOE=yk~j!2GIA(A|iTscB3E5*5ocrfH)W!=RhcEeO*OHgbcSCDdYmX3yVt#{KOy?pu-6KoyqLquHe?+x$qlGH4D zHm@Wz7--Zoz;E|q=7P=A1BPs6G4c~fz!H@SVj3%f3C7+ZNggQmod+%k0*Jjg8ow|d zI=)RnYA-VxAe-xzI&wr$0^E{Mt$P-rYft#suZPb{{Jei49Rv`G(tfx99R&)9S;5d1 z1|YarF|RQjy8U+)svckrvH5u)&U^s0B0Bb^wD-ksj2y+n1gk<7iOGltlmM$J7c%kJ zi=5>5gegG$>@BI$Z6HroaBuiZNI?Zo1@>-zG_)D~C_z*fBiw#-`!C5@SS#^<|M2JM z53*9feie^Z8@M{X3pfkjs37}X#y#yhDtMG99c6WxD>u7v?INlNwi-;JqNiS)>@0_45I8hLpfY8E$9q}#AUEp zbG&s&Iz9a=DAQJ zpLfMW*`46+EeNDPYY}mopvgNLQkqNoV2a$D-3 z{g0P)8QeNIL*be$2T_@rb~yF+E_k{TXb0-qxBIvT4l=}^!>k=bo!pGX_JE_Wj;u{P~#b+JokmKU5VlT&I)d2-JMfOBUrNu8CJx5 zO)t&383)`_1Idac|5AcGj8g3H0aJB>Q)z_dU)gg6Y@G%WgE;#j?H;0s^1#?hb92W+ z#OMeim4J$fgJXdz{>Bg0HXaxPV`StJhudfZgUi0@JunquOVPai0l$Q1*uvlCPD>ms z>XpeDG$Mu5{(EPptG*e+jJ@eM^PF@#Xs%l@?vky-#u`FczEN^?barr*2)7<-HNAn+ zPY_QMb3P2e-8}-#i0Rf}1lY}S`K2SOkC)I-F%g>GXat{UDR5O-5MEgb9L(9AE)Nq1 zc(_oyCo>p8)!Ojn!tQu!JeoQ}RiS&pJ;(qj8WGMg#jE)F3_oMHd^?xR#-WAG)W6?9 zPGn`^%z=3`F@0#}4N<>0hvRYQO^BG@z~_V~$%@B&5=ItT5*vU-|CT$wu}>m_}!G#PMOb~tT>dS5a@ z)Pkjy!>n*+T#U5&g2KL@P+(+MgToYp&*Uj0Fb9luT{A2~hLur?m4Tz}HlD;Q%>pOj zWnN=gWQM*u$RT2Spb+oKm0_W~q~XeR>t){u7JX$cCVHB4-dhBX^!V`NwgWw65GgnI8Hx@fP^=exsA@Xo^xKUEv?!`F=f%b;0-0 z=1iN>tpqhVf6jgJk^WZ$l9Mkh>zX1&a-`GTJ(9xvni&L+7NCeNvh%wT?*hmuLkzg2dZ+?W`e5xus(PUC#M6jNP z=|N{=YVkAv9#23O$+#eA-Vcywyeg-y>tMQM#AF*YCr3Wz6iy_5-hZ%)jEkr{$Az9d z-bdozn8wEuqUci0R!;+&Y*}t#OS&C+r1j^_r3Uc7-XFf6-(ZxaLdN3a!t6ij8RWAt z815Mq#I*|VbHLdoh!r4~5uh_CYMQ7epD6BJ`13O;FElVBTFyJqW;Bmnj=XuW@ zMR~S~D&L%^)gC_b&u4%D*D7$@rKdZ$9{@k^Lxy8-ka#p$B-(#a=qIlq}rs6dNc&2 z{rBWM(}5m6QBV@CwgM&75-ba*g3Bh>Dukg8mJ&YdRedX8)2D23c;pR>e zq|v1_qhv!ruBP}C~^ zd%7- zwOBX2bg*6~*?rF2b?_d<;?;)%N@&;)F>&tZP8tswUS6vodMDWEUM zbOrVR(=KToHrBFD!S_!22du#7^M%j2JN{ZPtB2sMio*H3Wg!Fn3=Iv&?k&k=rTR`& zP4kLtq>O=e=xdom2I7nq9G-4n_7Vc%o+h$I+B(oiPC^XKjN-N*4N8R?C z9EA{znZnFrYqb5}^V!f5^02nX^a|gYk0Xi4^B12wauE zDj2|kOR$F-|Xi>F;$fegx)$XStwaXd-Diab_t|kz_!Np$L%nX zb@$kAbz~sZ2MCgg^31yLH|Fp*EP**7o6=_}G@i&mSdL2BWL)F z1%mC~B&bI5@d8f}i-@8*V-}_1bH*~+3Vx2DS^iecV80s^jn}W#>-BJXfu$RL=Fc3@ zh3!Vh&!-W!&@G)Kgc6z)LTl^bmBGr8&gXjWsDtBK4~dqe6%;VtP`9}$j(>2^fE>po zIC%FPm5&L8x5mUEdpx(!EHIMh5{Fu3Pr9Ua%Q?pfG$DdL3968A^5=P8JU#O2`fy4_ z74aGEKO5`y#8XQW@cH*bRY!=K@3JHSH5^C5jiUiz6KWOG&m5AO zz-Ny$a3Iv}qSl=e2E#!*AQYI&#Csp~HH6O4bjwZzJ0j@6oa=dz#P&Rp%g0Hjn#jWQ z>tTO{IUDk3)gL$~fuX-)Y#Odk%Aj*|_uBkhNQhbsm`3;Td=6sC`lK%$AQO6TIE$2m zDUH{35;$iYUl{@Npue*^B-F>+_gffGD=5qxut3npXI+|t+y>CNQQ=B%-_~MaX4r-r zvmQ$~$2d1A{r76a`XKp>6Hp|ftmQ=t2cx&u=fj)M_Z%)ggK$GDZa~9-f1Wx1dz7PX zGeT=5N3Lx8xF>2GkjG<0DfVg2P{Q#)CB1zA?2V>TpI<8Pz^M^MTw#MQ3F|J7G+Y7T zw5_)-eRK;M_|l&7cP@+!95cI_pvvzYdmbhHd_Jfk>e8sTyY`0q%wXkn6W?KEDaXSz ziO6KsjVQKB5NA7_yy6#9iK8JRK|VGXW6&-Jp`ORzGY;zc&DLA{^Nx&Su2hD(5bw7M zXH^S0w_H@o(_8)du&R&|{Nr>2p65YU(s;_IW-IccMD`&jJ>)mS!Y?n$=z%lhoDI$> z13RL~rZ(I>{SKLMYvy-+g3RAM8=4=Xcd)piY*qk$2Hm4!11M&cW|}h_nc(YH zmm_fy4D5RgFmCxPmA!m-lGBihuzpEDu>g&pXp$fP*^Phy{NT^~eP8tM$mcx_RU{J0 z-di^^3B}xJ#N13s5OW$8K=CWwq+DO!${4IlhncsS&r${y+yV0#%{un{!lsLhZSHQ( zW~@tB3s`5p*$57k`gRNu<%Sa@aL#cm>ok;pTc-gP49)j6r7`q&!u3eb*2QRwlDJz+ z9A@&SKOHd}v)ip0Oe?$pLMI`xk_uvO&!!>~aE;x&cY5R+@qM-cCi6i)OeFGnwQMX581{xxBh7s|{QZK;W}=4|}O`)skF)>(peGqn@Wp zHKzT)V-ew;H?sn#4^MlD=TU@DD(=$p(|09W@SqCEb8CFkVJ3uJ z#1q=Hk+&cj+1TgfYBI?=!JgErLPg!Gb|P0|?@bA+5c{fxdN*+!W=?fb$eYBN4LSmN zPa}SRfuUhBYN^izdocIkmXSQiW1))ViiKB7|D1mmAwDbcs=(~AY?l;sA;T|yUH!~~ zFb6CI*9xp0R055IoZ#HqK#?3Y0I4D_{SQEgBFf~~k%Eby0a{_yfGe&hCffR8Po#?@ zLyD0euhue5sT1DYxha@w1ykP+1ei($1_waI?yaX5a7XF5gCh=b{`~Os?|^SoZq3e&75nuqMgA|AIZqwtZ_8q7dBFJUFx4P8L*vftrZ|%aj$@bK$02Uy>Xh8>5x7E9k<$W07kU@ zAeM^yD$#@O1N;IpH)-#y?Y**#U^!iT{W+w(LAPhu5%e4jOaD#vw$CF%4%q%{SinLE|IQc&SGsb101>nwh~!Cmp+Q49t1wn_?yB zc$ty`&G;niRgsMfCP6vW5-S{8JP>O65-($Ntt0i+j8*;CLwm5NiMiVHS{z$JIJf*VxNr%;eVqlxw51YH#AQ(j2IQYTej&Vmd3V&!RjG)DGoR=-*SI3E?ffJm zJS#b*^f|F!FQJLPaI;GAUn}ryIT(26!(fWNp}mp$;sW(63#SjEVZbB2o=qyu|H{I9 zfHpipGY3x=s#{d(p7w5d{~Yk*_RJ{=jdQikN}W&h?D?Ku90-xH{|Z%b!8I24DjCG+ z!WkXrCgD?G$F(Nk<&GV#yN{^BtCmg6a>f(#N-4{Uw9n_wmA@1h!;y|ps=p7q0OC^O zak&R6`Jrvbvbs-b%B?=#=VXtq94-laz6YB$djvV*8km{6af3mrg7`WJ=lbO$h3k@F zMS36bzp+gdu4G4yQ*>^D-MmaF(hOq%oi3OsT*-F2BJk85!hS>B3}-p#T7rA)%<*qb zOV*qk?IEFROesEe~uvVJ!agMsgC*4sz7)l4Rs3*-1 z!L**W0(WB{Oj}fN5K%m*?}4KKGQDOThaTX<@R~xXmI-q+zVd%xpfej@CM7Tj>1ZVL z7AEGKmG|$<;V0t&Zpy|dz6i-y7l$jMMAqYkmMq zG>F#+sU8%h6NK)rXCxIC_c)FjLH4<~?*NWQm#T-H001BWNkltR@4x&~8eQW(dv_H5AGbF$8DmS&} z7OE9`pUvoT;$wykKg&lKkurlUKXmu`@b&A3eKv3ATeT7vsTu;cGWc#ktAi^X+dK%` zojFH5xKuOT5t{Buh`0~Bah0PU?}oe}MTTyAeE4KgI0_A3>lX*&nS(G>i&g13%o@$- z&1*bUk3twROdV9;7gpYf-yCH=Aqel!8&wZ;1*L7!R3D&+tAHXgIu!k4?QZn+?dOR- z9|Y#^Z;Z--!NT6&IoGVr!S5H8OI#joY6daRs;iicgjG7@8>`h~>yE`-qBt`Midl6* zO^Tka0nKAa0tkH6h}pi)BL9XJV-@R0HoK4ZX)uKKTAUu&86APYFBT!9`T1;{2!v84yAFFC9J?`36Z6S{bQ22m;y;dM|_gw)j73q zqYnGaNsFL6^!w-SRs`b4XA*9eMQBDX@%8Ipc)tgIEJkYD{2M`wQtt&xBdm=3t`S>D z;BW=;M4}?_ti|b}_7;XH6hE-1%Xc;eLbpchQz$}uCRj?b9Cczapnez-Dq+qM>=X`2ASmPmS@9BcB6j=dpDSmYu>&_ z`{%+!8#jvN;vBO*GKdw!o`Cu=L!PmR@Wl&mwa{Xq8MhC}+Zy~HL3cOf?jm{|+*>Q{ zalGxUfI(H?eMhCoTP=XAtRV21#N26iFn*!cdX{mIn$0XqN0Dww(H*#o&z9bwmTTXE zKlt&vN`gcGay_I)7kL(hW3K!9!7-X3QF^F5z0IiQRDqeMnQ8B zLB2A;X?C~fCVTh(P_N(aHesR&O>edrH+r9Utoo&jM4yAj!U+7FH!8{Z{=p3gu&0rI z?u`c+Y=gJP+!E*CM?F_RLRk`r#_I{+x&K^mn#oW;`3)>ekXx?P8~O~A)T)g4&j%|L zxK1%hs>ry6oBLT$tXll+k0+@F&wH|*a z$1eCn;@je$TY4N46F`O}efTQf3c0CpY!H105#!Bn;XV z2cV>V28-phr(EQS@EJ52Ok8sWLOsnJN?|5d5jeAb$}(W#Mqs~Ja$|#dt+}`LX9MOH zT#^jaCxGC{V|=&@CTAO4GJa3gC1To#sDm8wtm%r5VQF{A0d-VMIYieG9&hJ zn-CFD`@t2JV7N(UqT_Kq(g`T1d_KO1mOr-W?boW5CQ09N$?3tTWtU%Xq7N#Q0xm6HI#g}@mR5zlMzv5q$EZ8JdT+8D%|WhovySGkgnQhW z-k3?W=f99gkXP?x%@nVN(39TA%7pOY%tlYM!i=IBGgS=89^Ek=?!6FlC;y6+<4Ti( z79x}?7UvedFoR!fMUXhXv0jgN8Th{chP!KEO006Gz1EmSULU?6P^1zI&H0 zZjP~d_UO~iSOz%eB0lG6)DCaOx;#iPsj?Pi-E{0}L_ImSPpoe5_Ni$);mq)KGoDgKapHrm!KJS97MNU65X0uoPz{!1r$K&zt##R^U*0aVwEkH@U*OSxGnd z=7@buSUv%Ianf#I(M1avY8zJK_>Sju@3(z50OkyIyZz2fyMmXO+*S2Z7<6AJv+Hog z0DTKR#t!0JzC%ploWrV+#_0-!@`Cx8L^pl@#x4o6(j&4Nld{I#3ri+R=aCm3q8KQH z*-gEBBkS=CcKmxS8`-_8K8Fgbo+qGC8>=ipIG^VFZ@*AkqA5fG7Ip__g5#t&d*FCl zdJcU@-+)rV1;8Vz-uL~Q0&w_L-KA16mh1lA&F+It;(57D!(*XI;HIB$UejRq3rdRQ zXFIwjQfK_MmIhxc+^bv$nk}pdRRS3zD>TQ2uX7G(Hh=wkG!0CTjV$T6PFYY2GSw4! zw;?;fmJg&)1cb)!4~~KZo1aa}Owr1zn@COUz9F_)K=j=|d4xrbTGH>w3&YGrtp(r* z=nc$4tQY!oI5T)X6$B-E^yS^;ppW=GkBQ@RZ~m#v^>+2d79C0V5b9I$pl9&@9Ogq! z0I}9h<+h@{dx~pdFTQjJ>^V>jTAO>)|61EOL=tsGmdhIyfQrItv9~qV0mf~#YH;y# z9`nf!8q;{Ja> zKJL_Irwe)^xX(6;uE@Q=taOV=31a2qnHzb#3%D8jc7TUcXbu_mGOe+lzSsx)?50#E zPX!oQhzK+WXMm_QL1M05z~NfnfFdGB<)5Q9O&1Os0-jhz#{Jh_4sub*aKg{I5EbbS zhsdnBi!%1>A5&D?y1`^&>##L6%7xznGFN!b^O31=2}`s6 ziHWNww~?5D!sZgw`-}=w#WGO*G!&POFpZ!sB3Jl<+s4M|_{;p5L(sOfd7uUDdkaW>QQErd)SPqU1e&tqiZ%vaBCt)Ns}qQVolBFgjfeZ`X=q6VKxyuJy%83OGYJINyh;`=D})?W}0AY?db+^sucOFp-x z($j3OsNL$~})PB-xtoCnfqn9dCQ?%gTX}K;kUK#zImK;E;3tYIG~mB z7bT3!hjYH)4wF9-17I_K`0HS8`Z>C>%&}sd3Bznh+NUAce zo$4k^5Cfm{!Do&>8jeyYGE6lOKSXa^Y)BfI-dqV}6>=3u;`C@mdXFVv+l$GQ(42## zb3yH1G!-k7TW%H@den4_VUBUAWC|BpzVhL}p2W|ef4JWtND09$S3q(0N5jVnqX~}1 z3oItK#O|a2`2B!3tnwff3*Cr3>9%12`F-eSauEJT#6nbS&f5$S2~R#wJ1{Xv zbia+*`?y642(j2refF?!-I&ftLmAivKm8#|tt$LN;CUYI8SFnFjGw5Q85DpxW5;=2 z_(>W>L23M@4(C3-5Obq*)QrC*d4W+VQD@AFNV;|6s;m^Fc&gAxnC4e5VaoJ(OEH6< zMnxg%)=BpuV%=bjP0+gYroG$0z-I-gwR?NlThvERax@<3Fro$rgMa;o{_B5VvHy`i zA7_c5T+9r8J_lSr0?Z80G`gGL@3UEIeku58;%O`SSF^++eRU*ZiV0j*R^xL%1ez-! z@ZJ>nY{V-ejQ_g`Xg4l}hkcHaK(OL?;DxMEB%S&Ft1K9wWHTLb7)0;Jkx$jNl39s; zK4Ab)s%|Ym{*&CMJx*36jrRPy(;!`$4UkFx#i_0`Fu~C(MEzzhqW5;WgW%_LAS?IW zs=o@j`5rXBm`#&HFe5ZYK0pQ8XY1f#t@VwD5#dx`f$RZY&2fssq%IN1)(2jR=^(=> z*th52nSVJZ#i7RRy^O-AZ!sJtLJsU}z6EZUfw(?^oUujZ8eMM28{aaw=Gbs;pp)7e z^N_`^7c>B!eLTq^bjGjtkyKST0??MA(pf6s8p-{0z$$eF1oB|;T~JQ9X?g6cyf;_n z%)u`s!(d%d;=aQ!#O)T8sfYXH&-P^$ zV-plS(0 zB*g;NZKFs}W2POWWw3nnB9oYD;nt-k1uYYxBo!0KZO2$oD6=S%XAYplwMy?Zn0CE2 zbBRRMs=*BZ{A~Ay^Fhua-C;t_T-Hd~v!iZ=i;gBn+>^pn1$}3b4!}ZVNhBFq7egB< z9^FAJ$rzg*D?J8jK-(*PL&d)||JiUsT0Fav6{xt7>a!8G?%{a;GGCt81Bl!ohcBJ& ze2}Z0S?q|2Ul64C`3L{!|Mg$_KmL!x*^U3_|33Vm|8F8b<4%hV#b%mN7wKU4DqneZ zbx8j2-Nmd8bpc1I(cW+4+vEH6FdU0Vt8t@&!|?_L5FrHXHxbE19y5bvaO)adCz+>qw8#Y2}_R&52NZnZ^W?&R3re#D6%d87X9vBT5^Kz_t<8rJP%l8hCzh zS8h=07tCeGF%56x#fq_>(lGcr=YqBx9B~M>lFw5BrFS=hM9_^ld<9>&v5WN>mQybr zBwE4D-(oiBZ0PQL76X-u9-;dnvJ^45FmttFnf_#{u_74p2qEtC!yvUF{+VH4TI-C{ zSm+HJCy$GDhQfqIWUyO|ZUGh;+BqGX@(eM7p{z_}Zn9d1@ z;W?S9-UD#Ofao5jolD3x0j|m^rq^1GftPp`r0pnako7z`UAl4<^lW_2;f%PCjAotr zvSvsGs*jJQQE4ZTg8Q6r@D+6ZhW|fNZ?h~}avW)@nz^62Syd<$SO5q%$!7m-TVxiq zoA-Z+5owMLIo%{c5CB=Mtjrt7-Arep9*GqWGuA-QT;f75j&T^{NEvOOK9N3b&Jvq#@X}8<`^*9Qdz0F`S z7~c;ko24L>zj5FcGzs1O>Ejds*Z=uH@OS_9YyQu_|0n$TZ+`%yz~On$nB+HKPgFd4 zs}-Y<1T{=uW)wbWoa8!# zXbITIDsDxgeRT3xeH(xl8OH>Au(c6^Rv|LtapbUdkjIwKmTSft*qv^Am3v7?uu4G~ zBNe-e+D=ss2q}ypguv2@#i@bDoDq>Fph&@WAakirZu5eP+k_sW$_q?xpvB!ZUqp?_ zfk2?BAOlQ)@BG~0?bj`{4y`l67&A)kn2FDmAQnia}VvK;QBj=@=d6EUq zYfNl_&$V&iTVARsfWbgQ*lyz;=tpKE;-D`r55Y7an}zC#KsBOkLk)a*Ja|~77&&pT zC!Wvy@FhsK`4gFq5g@9&Tc;BKq75JBOOv}cQA?S@F(zXKA~t6x_ONikmy>KWPf`V8 z@0)Me{F0&>)8jCy$xQ7H*0JE!(X_-#Gl7H1L{Zp#TM1A&)BDuC9{e=kvDQ;-yGD48 zskPq;Z4?xgWr({s0>a2VvlU{za1BXDb$PsIfUZx!s>ASYzM4Z&s7p%IZn!*H(G~-% z6p`-l?`Aw6hy(cO7C6UitxVYJ3#wuS4ap%mD6E6oWCVi)%CsqV1gqAobb&5+^3J7@ zrtAenp{|Kq>>7yRvi`+%>m)~Ao}`1nKNUw=!?;rPm4Hx#$qNPR04 z+^ex&T97NlzW)3fC_i+b4+sV_gS9u1Fw3Bd)poqWv{@bvyZnISxj770ZO$AXLl~%F zYb=KY!$s~cjB7wHaiC)u^e9JZ@F<&n6P5Mc83x}eMq zbELflki6XW1GC&l)1d_8CHwGrW8cdy%nUV13^%1~FIP(plsV-aa(}T^TOJwKM`>3v zOgL2@vs^?%C1~%6NDLo}C3WT0c^4k+P3W3~)1_>Zp|-&R z#E`bdv7WHtES+s%anEbwmELk--$vC4)3>{&b#D$O8hvPMcc6t#A0%*!MF=uD4g@m6 zIJ}PNBVtbMB|gSPH+k=yZ;yuwhj||6D87w}dHHl)+tS{Vlc!e(A*pjPd#(j(@o@#S zOZxLW)qHX^!@@R>akTZSSDf^O=4}@MNzOF2|9-y_5tw7pdQ(}Ilwsa}5R^X>IA4OQ zTSU@Sv)6{@RmiZKY*!&hXjhY>6AHB6=zbR-Z(gF5(Pif;kVH8SMJAKdT73{?fi9=3 z8Hx9&;@98)9N&NQJ-+|?YkdCxNBqrie$RjW)w}-nUp{h-sZ6nYYbJ5UfO8YgcXf^)g;+5|@ugd&pt#pL1cq}oLc1aYPNXzf^-NX3{#!`FC`WRXgUb^K>8 zH7CHK-QqSEjh-8}BQo{_a}ZdyDXHJCNr_l%qmHd$uSS4QN$(X37S->NLXmGF$LP==amHPMWb)%4{V=9CD$;kw5o5 zk5U|a_X~$ec?998Q0WDl@lnn;Sy!8zw56&fRoE;dA%h#hEvI(`QL7o4vOfdNqOt&N&$;%Pt0=`^i@0?d{_G^Js?xRwH#_ zm{CD!K?YkOnT&7^I*Z}0xQD25`D>e`I7^=sdP%8;;NBIFaBf2l&R%`t{9CHfiM zpV(0sfARIN_&2})5B%~MKl1zUC%8JsfN}&xc?P|O=m>wp2KRoN$jD@M!^=+3xyFbS zm)mr?$0v0=h{u6~h8WEViE0i~&u-ta8(M4gmD9FQwTZcZPdOMC+^X^Gz`1IZW1PkNE=5e z=d^le;_br+ly2_!YUsqa7!07dfQ^e6j%41adcV*iX8{c*f|Nns_Y>X1yi&o%J zT#ws@#y>`2w*pm6%i#P9^ia4LhM(A+@T}$1BX!Ynwg)j@sV8z zY2&YWP=za@&hZ+K zo&~le-G=JrS&$J-3a5+!tw>B{4(?+u@}lnCCsgPoC~eD4PiWXum&d#?cyTY_aXnma z5E(IIjH&+V6SNv{SMbM=MX+&7dQ1f7n4psTE|x+Od7_wwP;rFBw}4SujX8gUr_5uQWBS?>Q{ww^mp8Yz#&|Gt;J%+6 zBfw72CeP(Z0Th8D+716ARb^6yUhXoRYIm`5Vjd;zdO`s(#=*i0&u7JzRI-?nP6TtR zRVeW^>2}OH5!Kk|G!i7nnAmFWwJ-=uh3-(InK|eOej{c8Fj|m<7&Fm*q=de-zs$UD zk#!q30_xLK@y9=W#=rk*%K9{8001BWNkl+4@keEZ>B{_TJI6@LAzf5JcibK{$@ zzF{Kp`SWLTJP;`@JXztac7&Z_-DWkMxaBzk$n#Dgd8WuV6g{6EEjX{FlC3G{d z3z3OZGm^?wP+J+n26@sHZ2OWpGcohb-$~leRQ6$co~AjHVTmEe5LCjw??YKUKM;=o z{DsGH?}R73DKdP+@O;kVs5t7WI4~?%v;`dp=-Kugr~o|Xwvr3_DP8?{HrGE*fOL*gml@UtS|x$rvm`hHuSy~>n_Kw0IFKo!yN)S!iBXL zBF)sb$I`!-nS<+o$Ccz9fmO>d?Uahe_w|{LQ^%%Vk7Jl^y%tcQGA6r9oa8m!-dt6$ z^*6e2m2OrqwmShZHzSw_l5a0MExd3Ph-$C5k~{$d5xw>H7W-!$e43B=J*2cRwJdr=#V@q{fGaTb0gvewSRSZ-&_x;ou?55MCW!&1~NvRk|F zC{bdEhx`8I^E_O;JCf{XvKVfl){anUMi{Jn@*lOEl-1_UK#5St;c00mi&O;J&8WsXyihfE(CbrAIiN=DD;xuLJ^fat& zDan}vQ_Dzgf!elXdjo&kDrS)L-sOf`zG|lVrI(iH2aOap|Ma3hqtJIY>@O1KO@QX3k>|-?5&nIVOXXz0b7* zeVX<52u2L3ZnqRkRu$`B@YJIt?1V#Ahh)ysvkN1q5EZ*yBh6TLJ|0Rof(0nB*Jro+ zqjBFq3HTZj8zAGkHXCb|-P702Kg6_QW=uH^E3&`yTh(zodIRH$=uvlP=0U76+u z+c6~b1GYA7I7|SIR_R{CzyAI|_=i7y83#3 zyJGLwh!KkIuCux1XEdNgct%JT4xT!MS7IF@*K8HENx@nd(oI`(n8_84M)$&edz?eH zzfI5ES1SMPTZY^!ix09 z_6(GqCC@Qr8{+1%q4Q|oVA$4SS(H=b%)wL}W&41A<1_uDy>m z)b-JqdE_LYWb)bpVF3W1bt7|dWO8VL5o-H}xvJ0{XDQjfdLq1FZ5``y`sCZi7>;0; z#ALAcvgdG)n1BX|UBwuQdB8YxP)B|0(nA%KfsAkvv;B9>Ym%eIprXjWfzZ%Me^2)= z2;h;pf^@dcnoF}Yc{QSeWoNq(x<2zh_@tlt7|GTxB2tBUBAUWqHjEMDo*Ymm2yV<+W zO&apaG?)me%7f4l?=93337-ZUk6`3Hms-KVoDYTqBd2x??_Kc}v^yAej52`Mx>;Iq zB>y#O0JIB?=^`Awm-1)20s$ew0bxW=mKMvu7FKTz$hw{`Z;%~fVHELxZ%riA&;f+V z8KHpCtWct5#Rqe^&g}+GD;Uw;&2G*hH=FVxHmK7kaAW0I;~=PgA_)e(I_CWF;9VOD zs%5sr%!}g2hACbntYg`GTjM0*PyhaoKmPVd{`{MVJ|H+gJn$Fa{)~V1n{Oq3VFa|}pG^WF)hx)%!I%wZ-1U&X&RXCPo0k>_%5vnAnJZ8^iNMaJ=^oV|heb}$?e zqYhV>+v3i+LY|@beWM-;Q0mb_V!)Oj@+DR98oq1q>!I4Vq2%)gp z0NcFa>Q>rgrT(q8goA)G0Wm`XE=G zl8@8L@tdf-^zY8B5ppWqFM2tM?H+g+(*{`W-oUz%eosT%+|PwBx$%p_z_7uA zZCklEs+y&nVJN@BRWB2f>=1c@p5QbbX3~YEEp&rJ9+PwgQedhvGu2(OyTFl{mx29& z5My}Nc4*OgiVIbZ_xGFn?i=kAYWtX5M+>F`YHb9CYeYPw1*YrA6vn)KA4GKKMD^nC z!{i27Dj~?>NWM5u%~XKOWhY6&U5&MOT$iu$wJJzy%o#e4=G~3j_;p zo@XGLV7eb}>v2B=3I&5B6Oj)RjfL%4VFaL|unQS45v4*$0(+v5N7{rliv`JwFq9RJ zD7wJgCzvdMh@&+JIfGh9GN8DC{RCUcnb`IEoe=Z9d>a${6^%T_>|~s)NGh+%_xna| zfzvHaBT9w9K<(mMhoyW_9klg@NF7@KuuQGoZNB^xg?oUeP-$qBDSQPJk+t$mbxt|YjGGg6^ziXWoH7<9*0n) zv9&NbV!l1pwYm2?Wd*`*>f>+cA>z9Zec$G=coIt3^1>=N%Q7eS zTADM-BO;B#BWZLmjge4;&-=#e#=Uo3XeA4i;5*tDpS3loQxU3HdzcX!(2~|Fa@cBl zucev9NHE%F5giN!xZ++PtoZ-sZ(e5ug6#57~0jy z%qX>Xbwn-Py;Z>|6(ViYQ8mWyO^TQ%CqpGJ$3bXaN^6XHc&CMHUg+w0?pAUjMiM&U z@FC0`M21y5S{wr^l)8i6`wQ>13*q~;mo_|YAa!BRV?w@fD2K)bO<(nvbJsqK`-AWW zZ3>x5sC+Y2L)wU#kUH+(`s3#({_lVMJ-_-c@y+)SyaiBM_}PcA__J>=eEO7pK5y(# z%WR4*X}f=R4kFPlby@3U#=RdxjOIM8yBB`vwX{lDP6?7Tg7~RAU(HI=&R|t5n7iho4SwMQuytnXtF8>UXp)$xbJ-^l%mrt|p`7TLz-O!G>awv1~ z^YaOF?_9bHKcLM+2#^^ZkEzwmw7o9}XNQrud}|otBoBHWwq_%Ykp;UrVq#=)@5Zwb zo`I*OsimlD^={6Y%n^L#5H51RKgCY&`^JdNYF=1WoSBN_F-QakQgIa6Z;0X> zuq8AST^o1Z=kvWJU5qh7hK5yrc#NsUioLeWUkHtu>Nd@47fwzeXcW_9BV+=P7z`Jo zJku_C`ClSKx*IHdY3WXsSjYXzxDX=lDiFgkEW3!Ug@{sIqE$|tWHIbg#+8UGy-5`m zy@WeUNb=c*2+^xcgZ}d@wHd*YFHC`25kQOyDa>{-1U?2s`(9u4^v9yX=8<(WqXASe zZTds8u@SqCL39qwSICn=7%o!Kr^YyKV%e5P1A{PvVjb#=<)tsy3q@k_pGeoag!fARI#_#uBpAdxX4-R69q*zD_G zr!ZVQn3$11Im14>vjOsl-&JLdJnUru8tn-j5n-(osw;dNjWYu;thM}r2_5YHX+w56 zmF5Q+381Q=BUYTl9ym1l+(k=Jn~g$sFGGO zCrwQu7B)u`(L$fka~e&`5?D<>y}(pVxv|b&=d5B(4|4)Uj^SEP7!WpM7~#%jy|w@2uO5VqSWSaSGbdye3tJs#3~+ zulA>aSFh;l$yPqELotAQUDO^=k$+Ch0QQN%&ff_(^ zu+aN#(I*dMv=wGm2-QT_F+ps@iKE~PmqW8mMvBPv$l>uA+PnR~7ZEWyG6WTC7iKyf zulA<0DBnR+T*p1dF&HYgmF|HU7F_AoR~Pr*>K3ngVJ~yuXAS{k_hupw0fbyt`1D!& z?Z14)Z+`cYU;q3;OzPr=4>>s8dc(}&c-3*kt2^l36*!ENsq(#cU^ougn-za1RNx?3 z8+iy^2E}Y`_ycz48X=7Yftw7t=!7$Dp3w@?L5#9CAUfQNawAG) zBNM#uC*Ri-9aO1p-Kf(}jEFIay`?d{QRk~CZzQVJJLs~J_68Y3usJBc&68F-gChIw zye=nSzlA`K2?S_FPT6NgKd`8d%!7d4ZBF8W6p>O6&#ZTqa$FWv?PO%2_YQL7F+bqz z$Aut~f^EXaAirpeSgY~&;Sm|sx;;b1q|}9~+X?Xo6vNrs5m@`?+E2_k`ws!(F$dc= z1xs8JD8xBwJGnqVZ73MBl`$et7x`?J!3fMqls0l^WF}U(at6jV4JhJ9a}y}VD2^$` zC@SiRe+~C1HqnWtf<#?&uwiyX#Khj~;IM=D=NsLvyIi(cB=T~Ge$_ioY)jhsBQzNi zLtk(N{Yqd4atvG4qah@o_u})udkjlQeaW->FQVvB`B~_;+rp?)*Cvw~Gu4V%w(tO^ zxWzTxxVK=J9JB^5!{495uv)>l+QFCAhKv!|S~1ZWIm}T>9*IcDpo${{ zia$`7dHUuKblSh7tsqD0}H`_ z{{2V%#sBvwe)rv1kdouEFe3ExufO7-t|vb~jiReAl~vB?>@SBq&f(mlT=QvKjnoi4 zasmWDyhJP*8?TO_s@Dv;JPl>y?DaUJR($2-Rl))>@#mnB#GWlO(Kt~J&}y#9OF1@ng(D2 zgIE_rfx&^96Vj%7;dB$&Y8G10y)~I64I_6(BDlAR2D`ULy6fCWE!8SF_;E@y{>S0& z<#-jzt!6aUcl$~oRJUK8&F08N6;NBu48|Zr&8-&8Tm5)3v%R~Q&{16=sF@K|YgI9V zxE>Ft4;SdYvG=y^85Sb!W3;+VWYl9OFYnl>3|$O;+Bd^@IWUrQgq~H=EmcEHiX78F zV=b2wbO9Z(2syBJxq6Kv($uKE8(=e8cw7@Bh^{ZL1+@^(#$!%lZH7li>Q;E{;`U_0 zSNGClV}ZPRU4iFvqBv-SI!`7T4JwK`LdM%0Y12nLyL&-NzIXH4TN+?#sZ}SMUYH~K z)mKvy!5`Pga}|PV>9fvm0-GZr#x+EvYH3xIX9P1CR!Sjo?}E+&ag0lnxVIEeTzkggA0aK_qo;zB@ZFf(w> zQwI139FN(}hyfFup#+fOD4Q*uV8DNGB-?ZZKLvxfK$FB{PEIzS_j1F>$Y<}_eEmEj zv!|-J6u}=>;UE6jzv8d{@>_iM_A`v{8VQ=fpP`vJX9;7zrDF2r_)U7@7{OXb*{_z@ zb2O{MGv+>9W`Duw7@k8KFX(`mAtNkn2Y~4ZC5Cg^N0DfOVNND&@Nh#ZL6EgA%}i2( z=8RyngaG((L9gXF59KT8QN~HtE(8Z5@6!3@24Ime#+bhTf~aygU}NN=9Uc_W&6jM{(rmW16uLBiL}9v&1>4RHVvF zI+q~Dc?Ie$jiVa9#Js*jDw(2C#nv*jnqRiQ*t^ZQIc%uiqE_)5>C(eqo+kAdojCUr zHZ7Qmk*wtb>Umco!}akzx6gnRMS{3?D@U@c=+SSfdvhMCZl4-BIT5&#nV31TSBr=s zv+r(P38V&n?B3oR5V-4eWRCuDy&cm8{qrHXwHYm4F}QkTb%jSriE9i+P-|_@IY1_< za6cm>BF@;40JZftADA)dkqtq534HIOkn%XuC97&1e`-08ndvs*fZ-g~pe0&1a)gTK zo)^i11`w5a8((wZ@7lKr1*-%x5%~aP)4hPk7!CBo<9b6g(Hp9IWkH3iz~rgtN8G>>7%s&nd9>PTUK(_ww9d?RBhW; z3CzbEfab1^F)s2X1h85u<3MM9$=4`=V`(1`HyS}wU(L9kx=kRW`T_H z@|*fY->;=_@^KASgVoJ3+(7GH^cR~Rzp0dIJ*5Bo7iKh>6X|ZYmhO#syynsl5$> ziXfiHK?mAyJjP%!wAW@vV9dmGZ$9@EeUNm$f%kj4hdVDkqNUzI7snh>Ox(37Q_38p zVF_Jf!riw1DuOeUtCzh!k*Mtla%QN}SQ0Z64eOY$IT0GH-CxFHYi(Awa*T+$&JwuM zHMQ>TH3>p{ljEWbK^CphEy{tAA!V5%?WSe*VDzCCx6tcmv^2a^QFl|N*mucutTct@6g8)AvUFGqFCfvhVEmj?%I|ZAW5c@ z)5O9pq6jKE@}a$-xOd@t`w;Vb13rIJ%KMvL1&8}ewHm8jc$r~nf3%nwECKg!%*Tas zI<9!XZ^WdRxYb-cC z!y0Q>A&bmGVHiRrVPx|8(qw1)oak_+cV%**{@LX?olbc4FdszN&=`a6QrI!uxx#<0Z<=64%BL-@7XFfbudq);8U|$YoS+h=0i%w z^SShVZY$@?%Pj#>)?NZf>>V?q6xI?d8+(`klPE+6RxMxya|DY8fG`_P`xJ@b#jS8K6$aoLF_>hX|)w0Ic=Il{lhfMTTt}-HH3As*`<| zc%H}(FYsKh;ubV=P@G>l5CTG-Cn^S<&>Qysu8h=`gYWBw>}x{691o5$@Y7E}8RpI* zN~~STYqCkMz4gA9xyoZ|jN^Pbw}CF=F$aN-R&(amzBl~-9Orhu&98}wQls_~B<6tf zK*foOYVS|xOjY~Od+h^e+AV)SpI&^o6KQIHeeR`r?ouPj`6glzyO<-fn|RuDh`;;I zZ#V>EL);{^i;u^^Ncq80e!!T@F~lZpI2C4IvDJEc?snbhZQ^6}jNlwYd;2XruIn_Y zrdAdEed#e0BL<)QW)2%aUZ-It?av6m@m6gPIzH0nbE>H?P!+x$+JPN?)L0A}z~d8< z7-ScGrDNa^pBDe$fBGZ-@~^(a&*xBigoy*x3TmNSbfqPZo9s1;7`Sqv>!v7L-|8qu zcWKbhK%N`LNF(ag)hc9os?63aUW*9g5|kWFB%Z1R9G_q`n?+k-$cRLj*b)+r-e6xT zS9Cf3_4Zs*WXJ-@s@BLOed0+HJPl)tF@1B0bY&hdyUA@c#WBrH zB-n(-OHOwn%+H8uBNcsG#_mQ~M<_lOkN*`B0D~>g{{y}?>F}b-X3;yuDu=c8#LEifpss9wDWIw zF@uOP?SqiVl7j31t2U_MWGJH10aO>aT8gIFxYs+Rz+*V1AQ8#Qs_n+uBOEF3)(b*=#GUr> zP|ZYZSK)bo24-T;8MQW1{i675&cQxRUYDYVDBz0VI(8#=D+8EJlNBi^ieH31(&cd! zI(I~bu$t&rGC5-KM9H+;EwA}D@P{8h;_v_Qcl__yuTV;K2X__szL6(y*E-4|2GCBG zQL?R9bsBVy0nzSWjbXWp`BvUdUHv5l%&?e~ce2kr>mKp?6N4GBJA36|&VBdN$4 zYfIR!h;j^HD$LP5v;Y7g07*naR1iGsbNlKPvG1+b8$h51?0uqgBF%)v%k>KFhH*oD zX>btdLmO(UZhm;1QZ^oMCDyqguf8%g7X#DM)XETC>U7BR3|#dxK^XoXxW-l4g0OoV3#7j1R6;wLea1F z!qk9Xj9y6#^eyKge+Fg_-rAUxoRcVR1QO$M2^qZQWAT@c*oi=lVOTq{qSd+v@%}t* z%Ol&YD#RF;g#tQFA9QV8ZaXo8NMCxew?8Zq?m?Uv3#u*JEF-tI)@C1D6v)WD(A^r* zm?YTc3VSkuq1xM#auRhv87P&AYx?H#nEsi_jffEuY0}~u!`p{I^jT^NTM2MOydIN5 zd-8&zwQe3@HoA-&7&Gy>z6!E5axfy))s%?5hQNqJMg~||`<+I!miB$ehye{d_Z)8Y zOLg51g)|w+R0JEDgZGxU>Q#gE^5B)}afXr}@fZ~Dv7j)o$r#IId2D?3NWAyb{ajSj z7x8XbtLYLC-! zL1^q%m>dAgm{%sA-Nd8IkWb_#I7wlL)^Wc2qpl#8;(3|TgMq`9Xd6Ea@4>2)0~aUuForX&NVaD>=gsNe`1!OP z&6Lz0$8dyM7bA$?ixH)aaY$gzE9VP6X69^I*Rxk)S7EhKan6ukvWc9L=J4|NJvjhr zbyEoSaR542e4fK1XWD`?PoHl0mmk9hYc-g0s^7qt&Nu1seoqUJtC7rjuBC{F{}Qyu zptIi%2&F(Uj^--p0yeq~R3fxpVy5!-ClspWzby$>6D_2KYX-(l{`mQ`66Nxj>8l7( zGm^U+99JmMrjEh%zx!czIH6eUsn!5;*p_xIG?^($n!`QizI`iz3l)HxgMk^OY-

~6Xnl%d)J$T6l0app(H zfBG~TD1V13ma02|#E5h;8Dbag?#ql%&(C~+K8^PZqUs5B;cdQY=4lr6_DdrN?gIB+ zgwPQrs*oljvRcYHP}umz&%VO`lbr*Nv zDv2}W>|4l-VO9*~>1-E+scV>=vF{sd#moyCp_$WO<-IZH)EHBrRqVZ8$IRs23teL7 z5F@eH%`t?`0=xnN!d3;J6ax{-+P=CcC&n1M@B2*9iWvh`z5=QE;nTwJ|MZc+{KbcJ zeSjhpYgGvI0Kg5Y36s_Iis03m%5}G{D=oI)FIZSp5uFis`yQbxo50B9_HAVXgJF`@ z?&DABb6p~+U?4DadP9!HxI%bYiX|}5?2ry~nGO35oh^EW;5#l&(zy3Ns=T-cdBOY5!Kx@`@aA_kbqFg@BLqjBD|vr!QGjv40ki- zg?cu41zE`MOm|gggu9vQIlJ4-KY{J-rxwIvo-P2zu(ZR#AcKw(A`z`_A{obM1{!qZ z|D-DB92yz%^j3lxV?@8H46-tX7V9^!AW-;u*rbsg5T=?T<8 z;?9YCOk)2NF)nl~_FCt^XR>aNNr~)br@2~~W3o)1!nE7Z3o@iWethRv`F7Y&M5$XM zVspEGe!hDr6lB1B5Z6dP&!-~DF^4t798?H7FL2y=L}&xA28xM)em>^$N2p=qnqzcD zDLJo8eJG?v@y>x65oC$1s0>waAS_GRzWw91w*nc;gEFS%qe`>uIiMC=j#$JT#0;=% zH=FEa}x)9b~8f1Px6LG@E_M2h|&q8HZYg z!9%?eSt4Ff>!1I8#UFlrQ?2InYIYMjf_wM5yGBS0{*Q4AE4GRpGyune^7t1W=cKGO zhsP(fdXHt>hi<3|#}f<>51@PdhcT>e>LmoPfKs6X3YJlZbAOS6uEjY+d%J8Ro<)V7 zbwro?*@&iLF>NDnw+-DupH29iRs>|+I?p#V8_sODD1L32h%KRZ;rfNVuJAG}2i&Bv zaFK+)g;id-h>$jf?eE_S2HG$D?w>$c=JBFR9qmFaf!Yg;KK&NN#>RDBXf>MPw$2-& z;7rfE5y==Ao|B{?652+HjwELi&DQfQCIeB<@ftr@wq-NWRqz;cSVB={H(Tcsoq~*1 z=x~!$GzT2YoOssuc8^1A7c*$@^*Rn+V>LtpH^}u4Zqdj}A)>oc?e8G1uW}D!h_C01 zF+v%GD&QSY2{j@HViI;*gCpT7Fbq}462xZdSo{=t%3!@Q2RR1U^T=|sQ)D=Gf5MIv zWGe_}*scz?Ax7KvkT@XdTK5QB{NYk=37`tjq3jmNz- z=$rTRJS3BWiCQo2-5#a|xOej+F_Xt~E^<;S#jhjv@BjWs{_StSqPwFI-hTKS5c1Kz z0PTpJ+IusN3OU|PyX!P$A%~wBHonG)22?7qN*L<$2jR6#^U9bxyZ4HH|!sGrd-OfP;9Rui)CcZwAwteCx}dLIzK`=rCM+Z;lvbKn7^HWW9+H z13!NJ63>#pzKSpBRoNiMePiv1=Y4%dQ^$bWjp3dh7%m3&L4oBt;hBV1=g8@3jays* z)AQ`L8iV9AyOGRP+ubgf<)H)VIEVVsuOKn48{Y-6PhQkq%gBN1rm8g}kP>FdZx1*_ z*+&d=vOE!yQn<-wzhU@PmSTo0CQzfg`1ur`r);2Ti)h;_ljyLB^HpvcwCD4X47_2R z9l>aip03AVo z?H@=)TIDEUt>VWFMuZ}b!(82{29?RQfl$>J6Y_l@=niJ6+LF*`H5!#OhYEG9BtVRe zrts9u*}J@W@h}&BZC3YYRe?;*k+`oL=-_^erV;w)f68K5U9|kbM6Dcthb9rb3>`s2 z?2a*vruzNs#sB-i{(<`&-+m!Tp)n@*F1Gye(EG_!29uoUG6KOWll%vXz1G155%6K* zeL=SU7>Vj;=Jc2I05tcq9hm{lF%N@P$P|YkhafU?OtH7r8;#V+=nMel8}-ak2rs3(SFChs`n=-H(Q~^jyzY#6<+Kdh=^HA_j@Ku8eAI zHk%w2o9qp^emSC#Qq`j#&q+<`SNJwB>Legh!k8pyAkpw6qp_dI#&m7;TI_uYYbO)j z&eVCHznh3O4nfEG=wOJK-GyKuaR5^pH-S&BRo=Xt@TuyJ-N3gwC>0PzoH!=lMVSn} zUN7uQ;4KsF!d{P5+t3wso8;S82_IRjEh2eXP+`!01bUYbJHF8#)m0-8d9n7=-dk18 zry8%du^mT-m9QYQ5Et?KuTO&JKSu;=Z@Lmjy}rKiuYdm&|K+cL;zy>qx5q1LjlGLw z%o9TO53l{H1{ty>5`>Nwj=&i2Q1egl3TrnR!u2t+ofU;S>~DbgmWOzWIdAK9(C9kc z+>zXS`JvBrJFD!>lZq$A2G!YA=f$q2l4Y5pi1QaC~h}lo-GUl|bfn_`e?c4CkB2pmW)bu>8be zU33E($xQkR-{(}A*FUyKUA!x+b(X#Y8i(L_3De+aX0o z4xkk!8wC!#flbpj&p1Q>{M_+>{$Ky4&)0*!4-VHLc97(2EqtuYo;u?|t=2LKQV|oo z+!zc_zA4_|fAcuT;h*d+yylC3{3+k==zW92C-G#95Ldn#K!I**?YUODUT_R zQVsqTgR1bzLSRGYh`&X9y+JkaOsUG0BS|xp*sZl2bKEfk-P-Y5jX@kBP$_ys8Qkk+ z{Nr70a&qX|h5g#mtz#*dQ)>bk;uy*Mb`;Ke$b(gdXTjdfw!ae~p06+NZ_vCF-HQ=G zcWX77Z;H4}xCEpzz(kwZq?2MX=T^p&wYr5i6-IG%Zu1&M1S6)H!=K!MfFig!?*u>1 zV%}BAX?$3pk6hbB8GriIulmpb{5${p$8UlS?%Oe1pJZ8J+OlX}(zRggKr6gLXd z;59D@3(XBOj}OiYnt7%B`MVGTDxkF=dZ`o`G|B7r^|JNA3nm4Er9$9z==Uaq2aqnH zmZ3%Wz}~`o9!z7vK+OpCInPt&*fSE7B2ZDLGk1#=N@p1A4f`RbrJcV7cQ;p;#syv$ z1fzQ){2`Xq7z}I(bGQ^^bE}V+y9ztvd}O4(w@uN(=sp8|i#q`K`PJ&UXCC@o;TjibW`I?gM_iNY|D z0R;ztOu)^V!Ge;LE%Nuz&D~O!*OS0Tfrw1F`d$$nqMZOTyl3hP#8+({AUhO+Jciru zvR2m$L+6R(j8RTRY_*OCHZTT>UgrX8zUSJT%b6l&9)M}IzvF1k#802Or4Dc5Q=-wq z;#t78GLIKd;FSZdpcJYuc5lr2-8RWqZ0Bp$viMRGMjA#_o~pY3!v=b@!?(({OTu+d zx(6gB887QU8=hw)0~!oY6LF9zg1{=VjLnp4)6b?b&5DBb3Ncm?cTWa^t6!(FfPm!^<%)uRey*Gj65A0B(|E@2<8B{x8g2g5sYwY z2O{2l=%5ob!N5Jg#i~zVcLi9v%OkfA=hWvFg49(W*6c>DHXpoC_VxH2)#W2>$|4Uf zms#8&LaT6%V4%IjNCM@GSHqIfk*UmKA!G!vZ@0ee@{4ZInOp6~aZXw;V0nawlORp% z@Bi`_{^1Yb5u=%L03c0Dp>d7G@1I{J9es%e$8h;VZ$zHRc_pitT3eaojD+W%;j0mY z&GwvY3|h+JO_Jf%V$Q@;ppK$D4sNFpvLa)=|N5SxMc9t93VGQC8p6y!BLWv}(9dUNDJyoco-G55Unf z0(k5ZsBWhilBi~6hB628t3kE~eIABE{V>RAglh_2<%bBtZnhNM z4a5k{46e1EqkgA8x~a2B^tJDOn@gL3kHej3``v&y=Yj*NZ|Ur@V&}}GF05c2H)J*K zlJn=I-+&kA@{nmz5H$UT_0h{a2Nj@xXOd9{6GvurW)dprSq#&{eP5`0q}3XcZ>Fu; zjPHcZXvu;s8_7N=N)AIX zXAT8a1QKNNH1+CRlMT|jiU#T!NagC;P;pNPFrk>UK$JYz@HK4d4Y!K~|N`&KU zbYWU`{%BjW-t6+o0nxoC5Rgmxff9FzXy8&Xk6Ebt;Tw`e*N){|MD+?#@I1y<~{lSNAmLv`uf@|=xBOdQX$+;iase|iI_2r z*F40X2*TJ7-;pAQ-bmZMcR<9*RCVL1PEUOd93*F?wmQO%3^9V&G|uu+^^ZbxGS0Dk zOE`fTblY@5kb4*QuHzKbIVB%oIUMATBSuCoaTryvS|oy03k8lIx=5OCTRIpOsoMOA zI=SC*c%VtG-rOgtzn%&lNdD912RVr@N4*?YNyNFB9?z~LKM*E}UYqSj0Js0^P&5?e zb>&;5!?v&P;V*?f)XAx6 zOphF^I@VhH=Wm~UUcmK-KWoH~P^Cs(R8#9~$G30az}Tp6?A5yGgtjhy1%? ztY`xf>NwF+yM(fR);*m4+?R9DDc@{Y)&lN!pLr{oe zs@sX+s`~iT#5T`{`&k;{^Ih)+&cSO={QeYvFU9vCp>`OBej^LPfdHfT7NU`!J^@mU zF&xYm6mgq}dBFU>2)2LbnVww5 z0Z}lt>%p0```=WJ=V^Ss3Mbfc{;xQ2!2CF-RTEeM`ka;&Gc1dZE13agBDBuW6QsH^ z=in8o!N8S+TV`{t+AOzpu=PkLp8zI5`v4=;Ke|e`A19Nky*Gyfr#lA-p>E|EX41CZ zOd+YuEKrp^-}RYC#%-R(2B~wwPc!O6-?ED>mJa#0H`INv2 zV6E3VJ6L#n&v6KWCmQ0Q4!fbFe?lFkMU~Vg$Vmx#yhay`MleU9c5CmBZjWb9N|>#d zdp)7A*TU;nyl+b&!ty{b`v#-C6m<9?X+^@uiM$R9C8)hH&bZY@R=3D$g!=)W%@lt8 zxbVxz#K-U?`s?$7bYYGWGlwQGvM28ts1F|og2&0&h5z`sf5YGZ_)E-eyuKFLgJd4t z9=X@zkchn(=bX3)v6tnC1{ToQA5R8-9XCkH_SJ^w^$i73wSkP&K5AW;ABfe(Id4o1 z1`B@Y1#+ZH9Sbg5$I;YmwN@=AQ=pj#5k5M%51B%n;vOSWj+=?6Q2W-mwfyGpF3v&B zB%k(#dGA7X2RhJ6sWz{?RGh@;3&P~yfn5&~=Mp8T_Q_(8>;D(Bb?!Qu@lzky4QVr{ zHP+ryCA;mr%0s#H!{V4b&W{!XMx=ihzB8Fp=2-!ES?U*lz#wM&so1N9hf{_#g9|^1 z&`e3$bt<1SN)o{tp@URJm5@OW&!jE#Dkzn_?;H1hL0{Wpgb3{Iv&N%7?5@ojW@rC~S z%Xjo|qO|qwPd=;p_4Ng|I5YI@g+|2Qr9c1jo&WJ~f8!MrcH?7y<5LTJH^$&`I6fHH zj3@}(uy)RIp*HcfxUo4dN+m4kb&(O60mSr4^{G!pTt4M?WABZeZi+buR%ktpVWssl z6H$@yDMez-D(he}calvp6k~XGUi<8pToj9PCDMWNqjXP_ZzGxlu>9~8PTsy?ks}g4 z_zuVlB0s(jBE{NEl44|tYTh^TZ8O%|rW9H;fZZn}+RYK({8nusyvc7_MFdrA&nDO`|%WW*{=y3NhvYy6veK@RS9R4Pb~Sqp@Re&yUCb4b>ZC zY~xM2Iij^)>N;@;uLdHH4voTAK|44wz(IWfe)(Ur+d!m~yY4!)uU+z}?8e&7n83U* zy`Cq2|9t7S#l0WA_9B|f98tSuvyctm1sph{BYY9U+F$NCx2TYpEHlv0_O!Kk*u!=h zn?c*5B$|=y!Anc52)x_mM5;@y6iUXfBIuUpn6T$t$g~tQ2BF#>eUX|GyvGzJ6cPpS zZSyc?jxlrkhulX>kO(D}gSx(5@%4J%!P}!!phjNQv#`0jA8$Fv2#rKY+bxF_d-qvr zHuJRQt18atPrY_9gmFRjn6cX+K3^M2aAatXJ>-l`~bswapIU=~y z4wJo`^$1s9#$3kvcz1K}jgOC;ozSDr;MBMV@&r&nK0dHk;#E&P{b=_(k^*P-XHE_T zW=wdWx}0{1JZroYc0O6DoC(2LR?!k+W0cxUH4UoEX(`yMP6S2-S{rIOBW^W02`R@2 z*svDq?Js9cuIEc%uP-ouJ>aNDvH>mLAHuj7$1Kc`OP`+)_fw29@of(NZ~yT>^oJi4 z$z*V%iyRyh7Oo7Igx^kg*MxgOXA2t8ODG)4A{{&jQt{=-tP8R2nS2&kHuLqHCra$IF!CvlFuM& zWlozT(1yuWV>dWXYbvcD#x9dMx0;GAhV0rCBHD4D02K&~(Wo-_es=>Mt^-?0?nWF3 ziXnM?ja?5j<4kCAsIbP}pS~8WO@0D^F(;qi>MjZ`Xh$nB985-4s}mfV=!P-}M9;?~ z{441;2U;BH?I3gqqDd_{^WPr6ynSZ22m58gH++K#UDvJqo)|N*zrK7+$zVi^_>~k3 z=l}p907*naR4IZxS}NZ<^4v^x@J2drx!vW%ZJhf6k76N05#!w=Hci+$m9D)#V$bm& zX{fiCUC~X^Xv0=OySTOyjy#O#{oWoUuy<>Yn}JYfMD6VvxEalm7>K|KC_QpRcXNH3 zeK6<1<;#z6FJqE<7O4*0B4R)qU<1jFlC=!?Ow4;oC_cNRj50CkKL$FeF67#eZ=`)h zqA9e@p{6G~*?ylG)7i%!bnXB+rHn2x)6Ka?n{Y#F#*D63mtr%tn-B_Xynvo(xCOkb z`9oBRe)*ojP{ReDj07UNH;FD?*9;F>h*eUKD^9x-!r<%mg3DXeJ`UZY;Qqjy^62N-y*1P2(5d#0^COQVH3$2y1(CK1)ti8F*L@&D$nOU z^~9lXk=boc(2RJ!UfNX{F)$ei;;uI&+|iQ-Ue_gMqiuIOtlWC5fzWzQ`5 zryta*@QyKDGHAG=)gEn_7Jku{TG5=#jcq&b*~TY(FXvuqTSxd|=!ZiSR6>sIs9S6l zI)!oHn3=5I2M4K>DL&UL2QuUhY#;&L_sxK32(7`|8x;fOkVjyNrwUcV43|RQ7VjYO zl#smHP3@+wM#k`QHM!4FgYO8(Ia!+V zN&w&(l=g{62Ck982!UXXL3OFR*+qmV2d5{Q<>UnX5@OOg(lJePvJJx9r#J(Tgqa!1 zfqKNXTJs~A18TkSyk4|%JM@%WB1v+LLFVLv4i0z*-4c@B>F=>?7TR0fyLd&25iFKA&f%$9z4-!PK|w29d0qjQrMXe_2@D3xE6julk?=^WXW) z$EA!^1v`2VjWavZu`de{#+f@k^||rE1%YANGTEktarJ{P{DG< z839_Uy(EP9>iL%Fb`WPd=bCgVl+@lZ{Y{|31wXOhCPulblh@=uLqb7&vv#W_?o~8d z)nnpTIWfa_|01}Yb zL|0>PV9Ych+GH=^8V^v?oC*(OV`1IG0gsKDBY*H)e*DA4kI-NqP}^Kxx&y z#*L?n&uevNvZ}E5GI=SJIjkz{E_BzqF_OW+ejJUw@0$_A=jRuyHs?4RE|&A1q6Gxh zdt7G_Q5c{>wVafsx;MDNF@nE*|KJ?&v#Z?D+*T|hz+e9StN!_q-pgJS?f!4yj0)PAaul&QW z6IA2bA~!`A!2(nG`ds+hzy|}r{2|h(pGXm+igLD#t$ue9A`oHQv7(!Kt3hm_L zfl2vKCQ=95E=4fk%D)c134ja_Hoc}8i9V-_2r45YNUi-uVrW=LVJD%tzbD2l7z;{k zh>aCwM)-OhMAeED&^Sp+xnqM?B#3t9=_HdPjsYDwOPw(>uGGB28DL{*Fk`FGYE>hB zF=&lQ`|iTCui8R~!aDZko!Oa#&+~xYk~Xc+7&zm8G#O%AyCw4iBsx=h9ujLUO3)aS zl(Xzrt=$Ml3TM=FB&mQuipWDjO_(T$cBXb9gc*GHKBA9kprZf#?}R{LD9|L&(w$u% zjh!W7^ns(#Ox(lAlgvOSBRCKwcQvkYDRSdu0M8e&_JeAKkRpTI$s4C<3ZNQuPMii8 z0k`%lpk1~=X9T)RnR#{;!dGp2m)z0Yv(*T%SGyM9B7uBAglrc#N~jitLZZ;Mu=itT zH`6HfU2yi;w<Jx&o!e*Q=l+mS5vBI3$vNxD~C9e77jkM8FVJ%MaPiqX(g^>e_L+ z`r>$*7UIpaJA)#|V5X#ib}!^?#0X-8zrX&8I|F07LVVEZ7(u*VUq1bE_L58ut^NfnIM7B&reksP#aU^XkzrE$%;PNIMq6Xly=$|282Wo0~XrB z2Y-ste(TE9D2g0u(93zo5~+lo-6sxcJ=_p%k6!Gqb4=z~ALKjx`>;h2DO2PYRj82#u*it;qTQD2Wy*eHZza| z7%}jy$3Y7wN08_(Mfs$Do}U4swjC6igHUV4v<2AW)>vx++vraq-zPbhTF#h_H~tXn z#&vzioPlS((0cdD*E?H{$Z*x1471i4v+Nsz>x5Ied7L> zm~r#B`T_-fzpq%kPcC0rdo%KndgoKGMo!}SJXqT z%}DY}YS?dv*Jp*Jej8Pd`DPXp^S0eKE;}C8fITWYxx6wB0DA&_eP@e5uuMc`OJ-f*l_|IaTHryBSXQ6 z?eLAcYguvr5J)d&f+8b_O^6UuP*GGjyNkq7i_u!R?;%2{UTBz=Ix`R{DBe7bIE)%s zy6Niy#tesr0F6L$zqIA$mR)l>>BSr05oN@=*8XHjc!q3)Lir)?+I^RTjOydeD|aS? zMH0Hk9lnJGV+?P;>sg!oLXzv`9v1q_5oJ%b~MZ4YCW@a4vYsRoQpS zVXfDBxK5FVi*FIFjb}k?E%*fiW~A%KdS{uO!>L^!G3KNoc~+=SMuZ0d+-)%`&dL+D zrGAcGcsuuMw78d2PF$h2j+-uRdu`8KXP7mS8K^B(Z4MeB6sH=DBMhi=Q!Rt+y_pGk z#AA+kmlG+eQdL;pds;0=?SVr86vuQ%(t!=1iFjcy=aW#%?7d@Nvv+R<2dx?&Ds8s6-hi8) z=yRqKD2~9q2Ie&|Mk0oT?AN?FMxgeCKmPhnfBnm^{PQ1war3JwN7y1%TcN~$R@A04 zk~0z?*W@+a^JQZhc>ER0K}F0!?v@x;rM(~8Bq7^)L#%En0vmxPMpud0hn(hbeR)m; zX4-DCo0(z$>w(x{Z7L*%>$&mfbyl-_^S;uJ99t%}R>kB{Qh2>y02*Utl&aNl**v%p zZ=uWBLs9YmWmnP8s{Fv1-?%rq%gw{T^i!cbK8OST$6R#U7HMBz5fFECRriUqwVAf@hta z*FgIrZf$)P*0WJ-Gc!@|Cv#46%Rsq|NK&u;iO6x7BcKXYoUsa^=mxkAWvT_2QsM|Q zVYW#o*WLm<2%^^#$Hcq7n@3oQ$U_qqV@wdOh=8ilt0RJM8@T^Dqy`fM3FfKgt2iRD zX^CcUVVzb3-f{N`tgqiA{&+XR`0bycdI(vj<0o96OVoLWBh#R+m(xHPBhB)#!c9`M z3S_iS$4X@ZEeo#CR|uIIZ-Hup3TEtD$Vfz{Vv9&W$O%RCR_%q-#rHTy++u*c7P=Sa zmHaBfu>^5m<~%vlN{r0Nk)A4Mv`DTlNVZTDgYOf3_)<)>xlML7aVYd!i&esvQ~QWn zJ*p_o=|_xdp?NYuNnoHr2Pak|dK#Bt9}H<28{tErFNCDAw?XKX!Op48OE1+){E#2_ z2c@mO7OP6neh3XwZhVRx+Kb=rfq(tmpYY?`h5alPf^iXES{s-5+i#z|@9&;>_XAWb z>f#tVEdc7KR9p{{NsOFv&w(v)JsX3`yoO;ws*?lsNyocNS3-d1$49D9{k9Bh1MS`d zA;uV%p|@GQetddHw$>(fPAM4%Lh8gQPKZZZ9Fgi>ES1@%p%BbQ@Uo1INODY#kyv}3 zH$(8G;Ao;)3T=EhxWQ;(4sec82r+=oQppqBV2UBMDmH|?QdJCZEES%@`FD6i`5xFi zm_s$dve$1!V5^i7xMl+T6#_7aA@e#6Z*jj|BbstiSYr2mA9d^Rn>o7GGpfE-NV;+}Y zD@MfhE>x?kS z6(Vh{pZ5p%dJuDx&sNz#cebIzbtRs)?NpxwtD3L9+jM8LC8&wlvyqo4uvHCJ>6(cQ zaP30VYO-!yze|F$3_P#x{R5$-I3j85NMQ`({+PJ0>$nH4LxU&|g2S4v*WS3&^Z6u@ zIes=NcY)VTk%|mA#Dde<-L;eytAtt&w&kR*@DB-zwTrtpGg6rd(~#<{*uuU}4l@Vw zbNY0C_m226hM`~)g8JQCbM(Lf7>bP;86|TLs+++!s9x$)N5sI)X==-U0V>8IO541P zy?9078biVt|M<%X?~iZz_Hm(?7#t!K>)DI}%^5BhWONL~yeJ~^F(<1xMlDAKW~6uz zVEZF3QT`Z^AJ_CLw$&r(*|5%n&LpjznW`#u6*>f?4I0n0G3Es6H=Af?Dw#wcvPZyQ zU8Lb8Vw|$liQIV(&dnGjrMC4o9Es81wm6$baUl?R%;)90b6P<6S}TCzkm$iC z=J1s{7#MLuAYQvXUvI%mOB#bacothE8Ccp>_|%n7XsT5>H^XQZ^4y&>ozwQL+o47s zK}(;{#2d{U89yOcrxAxUnj?bPdo%k(GbTq4Efy6PZ~{Sg8s87$o*Cc1-|%e{Y!wQH ztuo7+S2Wl{v+B`$9{yB&2Kg~Bsycg_MwOAQHcE1L;MorX$@~7ns;%86R50PHF9L6~ z%4vu<)UB>fVqmY0$n(&$1C<{$Rr?Dqv&ezKM#twWeXR{KIp(y!rb!OdL%K^5#7sxS z2q|fdfTDl~Y8S;KL5{dEb3^*VA=L%UNYcms0jbZw0E#3t%^mg#OYlJ4aaipFx{fd` z&>YG+vG-!oHz2anq!6w{`{laefC6aqju(Ar7^AA~`Lk^iSXC%C3Z&>0sHh)JARFt)_KJg^@z z;0R5*702`ywhYb5IFOs+3Su?==?j1f?X~efgc;rvCon3~2u}e6jR+IaTJli?BPI)_ zT}|fX$br@CT=2sQm6nC168C;Ib0Fq*qCw(QOF5I=uG-w~ zG{DzuAvieDGVW|+@6Bsi?RD~0l22qHkCHunC{O`*3msrZP+FUf(7eZ43?9G`g!1p( zGH|``)Z$VBkua1s*+@vxYi+jDD#oga2s}^Y^Y?}C9~akZah7e~Cra4nVg-XJxrF3^ zVzo^n6gfD?ghzuyD-a{FtKp3KK<)AZQhxXzZyJ;*F%v^cUOKH*6=5?JjU!Sv9O+5= z|Gz^o9HUH<5!4Jd!wYau?_Dc1!u8-;O+LU325dWhIaOuw$|lAbE~m?@Vl`M>>JW1d%$aJ6k2&z|rw@Gl_{4Z#6V(GBubZ`&G#DsK1y)4QGEj&GoF$*n;$9!O; zxyqtclA#S%`J^Zjs-PG;38#2Gr#Z!4ltOBTHriH5MJ*^!c9Q5A=Su&oLYEi_>Vyh? zLkZ90jW9NOv=s@91JRqQmSZi=WGXXp+Y3lC8t1>`J?;0w3u6xKE?|oc7gSZyu?+%; zx9nJ_4PL=8q^CDBLYv?XF?`e!#Ym&o5uuZvcRfEc5oycHV-B>IT1HFOYRqdG{tvuk zj!4Rb5n9pIKt!fqyI7JKgKB9ok^buC;S5nNj2Vcy&=4wGIWjH=aH4&yE4B(_J~^Kg zYT#aEx$)2E9G&b~cvr&3!723znvKkm6Fxze@XU$Gr1vvmE1Wz+gX8Flqj8Oiq*z_r zy7A#tPvm*FmpKFK7S>%+B8tH?kU~px^feC@TV_gBqiSJ9@S2mmLsctsgl!+EB61pv zP*{FDGEjR%@*z^~|0{E%)j~6ZQ}_KsJtN2qYXPa@JyZ+D;1ckK<7~Yxd>AtU61#w2 zE@?Fab4*4g<~7;9ki&zv$l!P_yTHa6TBS%@Vq}e1MOQ)NQjX~yNEO!FTD3T@3ko-g z{M0_6Y`^i?YvX!e>H+N47#yx5``;C|3ZI{aYYfaZ80)o4C?e-%_ttA~L?q{!=q^?p zw9}HhY>V3`P8P!zb9?+myQd3&D1?$J&oE8y-Mv^Ru6I5a$Q=CH*V1o(_2fVQ_(%No z(}xp6T^tXI0s46BM#iJpX5Cc_=)vo!v z95o=4yF7Q!oX8}TPft(w0?l(mfLQmZ^S%+dErvB)2V`%-J4kP*40R_)P9%u5^2p)d zX}K&&JPyyElT`do|4adT7oP?+fi$PCAU-F|Nn z8W`wUr#@ImZRG5BIhhmZxr(YrG9$*&T^m@pZy;{8dH(#a z$OGR;Vm_1^K-Ci7q*O$(LWnt-5tupgm;-~!F*XIFDX@h(5-}Q)n~%%$%i7{~P31tW z-Ks9r6uL1+Dl?eeUPK>t_U&x<+4A{h=uUYP)tV6~e~kEQ#|0+?$^diVb>G|w&KSZj zfXPfyeXCapoRqCY?4}qq5*w3V9`-J+wV9;S7&K+XVSGZn8;=n}ol%K3nHk_&6aDJxDI@@YF7=0`=Aa?6yAc1==JRg4e zo@_MleLIrZO%!1hr065dMAzBIf{2)`e`Ac!0LBPb6(c?7NKAE`zsuwitWkxwsu%+U zrtde3s|Bw|N$nE+=umetdFGkE=2>Q#fg)npr>;phOuraoYVA!m&?+~@M!azd3^hw~ ziHFGy*&UpLIfp_0&g&sb8r>FPUK-=#oKrFLUw3T7QAQK}*?V^+y+Dg&-ut)tg8{tD zE75IE_Ns!YxCS-mSKOZ;yd{wtYu`u?Z3#oRWj7jEq}*EcL;tO4IuS<1!7TPMAzyj1 zsxak;;i_f!oD9A1Gj5IdnH8l-qN{lC4}RXC+O-IjGp{ClNg(GnbbeVLQXlnQNw3)Z z*gVDr(Back;Di=ViQ)3dHUQg&dOX(0S;s`@++sQcTnoNxGh5G!!$Z7QD1lH>Xs1-S* z)w*kArXX5Rw$;|hBVlOb=SZPos`U;OsRKj6#PpJQyo!E@vEu(w1oy1Gf{=~k~ml~#e70EZPxtK6Cq z!7m-ONL8O#N<%5Wm*mm(5VYE39R}C0(gDCP_-42+`E8|m@yHt*jXwp zPyrMJiq1$w=E>85@-MK}n&~m-T}#zsM%sp;%{TN~2c|BRt~r7w<$D5P3P;~v$N*yw z-1m(E29+{(s`>Dk1!(Z@#vBu3V6sk`LL{lr&wBGSjNz;k4-JNkSPjL6$jdYCa~fRo zGON_b{L$)mv)ZkdiHPq*_yfEuRTb_H=c&&I%y6a+*W1$Rg&dALwHOJpZ0!z$cb9Ms zF~?p{&T-O$4dnDjKV3-T!IMgP+VX{F$GB3vig>e$oaW}3DRrZIkvabd71RI#AOJ~3 zK~z=nChOMbV@yijuWHTtU;*rsuRjoXFQT@#UMKpIj8#_ACPm)wxul5OAlRxkTSY~5eCC&2FLX< z4g#k%7p-)(elP&DQt5Fs_NjKz7ph4{$~zpxpZg6pC@h zjM+1SrN--ZV-DhqWTYdR^b3pRQ1>Z-G9e*Q@2W?_13;g$B=ayNvb7Dx&os&JwO~>V z*!#v?*g5BeRpM(2G05wBVBO}X2*bAOIQtMZXF?T;Rn2e=4wL3}Cj+m~7v)Wl6ougC zHCjZ(ye9U&s~#BoI!TAqX@o&!i^Lj zZW=|l`|O-}twOVPT}f#Z0~n-;#h-nd_`J!_z0qCKXk=2s4RnWq&NNu0{Lki@6=Ls3 zvt#B2NG#iy5sBEMy30z9VK9w$of9*HC#wka08lCpjyKj*ZXHrS)h`GeaYEc9$;UN> zCV%{wTR;8OR1HVx<7BV=WQg>m*<#D`eDEFgXL^b2&T?b50VQ6QZ$$DGOB+JbwvQrO z%otL74MDSBs4^0g8Q3iP`rT2q>04^fM`Db`-i>gnL@-i0Tx32fEWB^$!QQS1Mr4x_ zYwaH6;sK|;HB4$3Y0R>2V7D+6=IC|l?!tyFTgCT%G`cqTK5Jx>8pE*<1izOPy6MgB z?W73LyeX`ROonuAP&?EUKJ~D z18M)sRy19Lp3#o2YB48}oa#;xBlh0iz5UXI1-nMY<|(KxHWJC=oR&A=yO<*c6f#88 z7~C-j>1?(3G8%4NMuQ`YkjkNR?es#$T!~UKrC+ulJ_X zUqYfqZ7n>;BUm&!Y~@K6g7q%fM|e*6mI0sed~G}6sphJiWot!L$w*JibO%>&K7czJmrVc|H>G}K~5$&?zP;`@@2;M zcrQ?7TA!8i%^=)`RAinPT@eZ=Ht0AS4U|xx(Y$1ihv({^K_Bn}3W#aFmFDH_+r1Z; zk^0CSVILm!dc82`#gG^(^}PfJ<{S=A1vm!qm;)L8{r1+&8cQe#t;;yerNU^l7F@CnjJPUcTPE$vrx#Dq-D zqtoors*dTTld3=2EL_j2wKh>Q&Y>&4Qzk7c_D7iv+^e|v!u9+mMo?XC|DTBawV4sj zprFP3ZUqNZA;Q$EX6wFhWJ1@Ryw2xneQrpMuFnoZ$uA_MA3O zvf7G}c%PJrh3lGHySb~_eq$rE(M|sJ`i6+9k;zx>H|U3mCtt_Vs%$itm#BHK`do$f9@^WTU@6Blh85|rbl%&jvd)1jZ#`pPMg6iGaYvK6- zpO>`zlWQ&5e-Yfq!yT1Vqm{>_Rj^svgtU|0I#jwqa)O8RJ0y^G#NbUfln3P}i8JSk zz?_8+f+K??f$8NmsK#zm3A89nVH*+R#c9|;I~_6d;yMP85vAQb@-V&x`lQ`&0HgTG z(3cA_xNKN21k^}Ej}dy^CrM%$D2)#l9#lMzF@;Lj@s$DIj91k;RRzgxCb2$05f7dd z)Rtu2Bmk~zQ`?;4s-NQLgfh^b_Sxt@&G3kPE)kFjG3VHmbHQAPS2PkI5_c zi-zhsU3H7*L?aI3e>+jSaUNbV(JW?EL|`Eu=joCb8=^Q=dC z_MMHpC2+(8eLTsT$>s_l_WOiy1A%w>ClQexBb|RMt4J~f8Ge*94E7%mjCuQCUdh@j zMx1WNcZf!JM<}Er8UN{@iH<9r)<_PM1~{1P6RVT7<1a7Qb5E7sxfk? zx{eYn{qSx-y+VU&guSt-BV*O41px$CEh@msl*-Fx+AfFoZ;k4}h)D4VkW2k%`@M&p#sH}EDCg&v4M;_L+;N`p)JvdS_ zVyPi5NX4A4CFdNBL4CeHuxn$?afAWIk5){LNl8)ORsDo#KLy^LK6vx`DRWTa4IlL^DzQH-r^`=HS$pKNO<(nE~5q7 z56{<&8JCxt0bJg5@aTrQTMBj(!N)a9!E5xDsjYxW6HFQbAcVe zHHd<1y%~+F6-i>V1#VyF&U~<128VJ+G7lhTgS))g!rSQu+mKIAxVDhvfrzFGUH6U% zKez@4JNoQ4j-7fFRA8-w^uk*#Docyly-5j=pwx?N-2%Ypb)gmb@nh)^Ki!mu0tX}@ zr`3l=g5Gka50`>RBmPD@pWd|@gY?otmVckpMcAmtZlN5jfIRVkyDz_Uo5kQNFD$6W zl@nxe?Tx()c}TGl%$b1PSszCBW1WpXJ>ao6Nsc}Si4h5u*t<1y#)!~fo4dmg z5a0J9mVxR7s>7|cd*hlDc?DEIale&I2>QA1SXz$6oD+N9j(KsgY2(+beJHcRZlX1W zoa~cY0opB9dfJ8rGC|p4;@PV;Pwds_)NQcgH3x!&WU8yfj6Y()7|DS^90skDJdO(@ z;_MbWI0K)r58Smu59a?R=sH!Pm>#sWFpxa)7mW10ZaW}N@7M(7 z6antF<;5rop3#9CBNK>1sj<4fa!)a0fK07zt3hU>mgsW?{b5W$ELMBV>Z=J(6?;Xn z^$wIBL|6oY86gAQmUTpDmYOp(X0jz#(yT2C>f(NVs`rX9sPScRqw(>oXt8&1o8g=@ zRC-b!0?;S=<)n%;mZw?^gbl$CF*S4qI7Sn{ONcGwZZ2f_16OL~gsu#1=SytqRzf9Q z5U;d3FH*cXI3f?tE28aM#wK7Y(-s<$m|!omHjHWtSnwXlE(i{LLy$SJ;i*XEK&_44 zV83qxHm`l(3llIw$+KSsCQ*%hZPZ>GY1_zJi|IcPpmMf-ZQjn%b|iuBvpx@uG03F4 zo3C9O1I%QUdB5sv8A6q4dG;FTf?Yo4$dP$xbLAVsamH>`386;j2sf~rGpLRWg@Y3# z5II!c5gf8TVsefLAJ2(<-+JB4Gkp30^frb!3f)dw&pE`AvG&HRn^n@W8NDfn4(gl= z@ECrmHmOpEG_VT>2lYm0V{#k|sjv+c_RI!gwHu7gEOIE*2Ib+!t9q>%*H9m&wWS%3Lx@0DGjifNC#nN`dp(##NLq5t zQ?rabqeD4o@7rM#K|N-INj5ekhQ^qzDp#2m*d^@}wrxH!riX$yrJoenNu^w4N(@$a zbhn%S46D=7hqX@o3t5b4to4Gl@O&hnmxNxd^-{(as03>GJG_46-itBWoT02jcQNNc ztsA>G!O+L&N92IMe)$3SedG7P|9@i)4z5$f^^C7Dl8l(z^@{U6;Ugzd3;WzGy6vyy z8F4g@M~Gh2NZU*fN4-!cGGfGJ#_+Ok--s(9CMuT#5jM-XgC03yu|=7+;A_sg3LTJ1 z8>AgJ^J4FtiZmJUZskmkL2hiWT89^D;81HTxS0Z;S8#qw&d0#L3-?_LMpSR7E>r{) z>tG>|V3cv#YndM7NX?Al1*Q}&cl4dLX?-6i&tbPK>W#99EdEvRB9h%9>~Lr9Ota~fZos@1P*zuw=cOP9GR_#P zTy(hRg%qM&km9f;TzELwf9j+`@+gp6q20$#9Nz9%5o}iqO0B$R%)E5pZU35;Qs&oU zVBcPzk&}BHZVwD>8O7RtqOl4lQpJwqtuK!et?o}18@8Mb43DHxzF~kU6=q}vrbgVX z^Uo8BQn4kB>*1WcAeKwy5dh|c`xZvDf*zVUvn04_Bo&&rLpjr3@By~B8;0{a$Qi&c z=&rb8^oHnUAel_}HByL!_I2CX$NxT#Fxi~2%k|v?q^O@3FKqUj*Ld+mAu=|D%no`>ft=dNTr-N9SaTMn^Q)y1;a3Mv$Pk5HK z(z8h^5WIVn)tt!oUd~E-k`f|T1BF4QzZcdK#R0_Qz}i9)T z_k)QhP+s7HBV79E;JS&TwDvZaTFv#kF*tQRaTF~46hq8l)#k`VFrCivQvzqZ>6cC0 zz?m^(udSF9^BP#+zDe6DikRbj;vyMHtNcpmn81d>Id)SAOKn>;QzgKtA!jYY?|n8W)&N|~W+ z+QmmNRAZ$3XMVaZMuKzr!G{31HU{GTGKq+XBB_W$uw?sp$MgA6Y~cR(iMqr+_P2C6r! z7hkU%-@e`Way{_NpZ`KX{`kTF{I`FHfBCjKy8C$1(ylNL_P*J*`RgagljV;BNF?tbJp|z{r*w ztSTBM*l=bx%v-T25{z*ctAnAX!@Fh^Fh#=#v|u8m;lp-d7x=kLUmn8OA1230-mCHL zRebF_!QxhilR1irDjiag1hj{25=qzH{4M6cRo?g%k5E-(Soh$uhBmZ>RtG|g2xJEK za_(9!T`446;bsY{I{ev#x4#~3lAq5&F9hCTf0^bWV8xw zYEGv!s<$Ct?o@&Rca^wDFoy3ZmWrSFpd}PU!R&1d)(;~7jU7EdDUt0P1>O(x!Epsv z7u*vT3IEx^#JDbsFMQsg{P_GdxW3!7Wh3P1^~CX6(ShcO<};!Fei5E!XMB&*LUG~@ z%|y%j@;-U?oE`^_gaR^QuE{o#jVF^Y4q*(s$tZJ7BI2|V!Hz_2&!^@XXZ&AG6j>XW zZ*XR8>|(F2>#Q=`AESd6b*TBxvvFxE_~rSPl(c&vErPkly&Gi?CK%3cm&&h|lZa*v z3QKowzt=ML#%Oih&XY0m^@p!~eEk9rQ3Q869&6Jf85w=Ag*nLNz^;9~;|{{AX%*V} zn_sK^h|Xz z?tR7`KR^on-QWKs|K@N1o`3cif2NURyy^BmMsNnXjpdEno(~?3j%S|?WF{Cu^}?&R z$w}i11zF2U1yRf-XHc~Xq4^lzzH2*+S((%10SFzrE^ZqG4Z-T@bUSHG1E@9YIPsMC8->7U{9f$;RQ}Pjx;i;TIjpP z>C>#meG}RSO$CKV3cEMr*crPwGF{zoycn|;wwL(Qq7IlnqKLsc$M^g_S=4q{w$Zrv z#>@aiHe8QOM6gydNZsuO#ALEWK?6omG_n=4$z5uo8_@-g*<=P2jeNh;9EXJJ4OoX% zZRBhYRtdW{e)eUeOQ_x2+1Rf0^Rr&sT6`l@A#(3#&VkdhGNAq3Hx7~qBS@rQ>-WC# z@$D19v5&Mf`tQ_(GMXq7)IN1|`o|&^SOq*{n2L9AB7htN*JB8Hp}MhlaaAY~+`X8Y zam~vq3J@OTS-c!^p}IxRDC^Q#;6Xjasp?x|{<}Z@4gU1Ezvj4}`0)=v;a)hi_08+L za6O*hOU3Yjk5Zfx!`7Bg`+HTPB|IM!s*S(<`~MIB$KU+l=$QD+|LNazWYXeudMUN4 zkQqRUuX_U%cs`#|we-0TO$33Nq2n5nTJOk|I0|aHu_9p3U|zw``xZ)=Ik06&PokkH zWQNee*J}kaIwM^8>j;ZY3uA=tHq<#2r;^ej#YLE0PR9%TRe)bDlVd zGz4H@S5DzlSjA-pSI9dkReK!K44ZvVR~Z&EmVmooe2fbt23HfUR$e2j7RrDT1gDeW zX>IKE35K<{6AnSaEGzjHGU(>od-EtL5X}^YSdgkaG6KVJY;BJXd;_xa8{L7xSwfjb)`Ai$fL(YbajnJ~8fi`a+bB|EX zU5$vr0AaRCbMF_%3O=5xh2raesr$y5NlvPE*GR~Qx2`|gENXFgHdcroO2rSD&cdRKQS`JQh3l;2zZoOa{p2xYyoNf9(EOe z^|K%Nr@#G`o{x(x?f>_kn$lIk473K?o)x>dWKePk;R2fBxIQ z$N%;F|EmA(fB#ST>;Lp0IMj{dEil%-L6(>iV@@T&O}Fq`6=noPuY0jq$92uV{6TgK zgUuYIi=};T@3JLAn_cGJV!XMrrurRmCD_5*c6fOM?y;O_Imt&(?AMJ3FfBL3Dg)wM z+ue4f>^Os9HxmbhvrVGQQ&?~&x!AA5uYUNYe)F>*klpy{kDu}JZ5s*$Tdt*d7Q&LE zZmFPfiY$D>2xnz&dq{TS>@121Xym}&9UR2-nb^D3<$w7ob7LPlF!Nm$K5C@*Igip> zH^=d;2ti~jj`1WSp{6{~CiY(BaI&ClfquT9j5g19(Bm?vfZk6$$KA$E?k%}oAXcpo zF?JQG;q>l#8JSf{-m4I+@b&Rf)dotq>^KZTD3m%qkr)JEGYT{Y?5mQX#g<<{jx4vv zV6bkPiTi~TvDW6}alx#OEF` zrAjk7UAQ=|; z_+UsX>HTOynweBhsmuJ~{Q~{c?Y*1b%Z<{txf;AiI6WZ{YGh1+sq&r9b8?EzWVc6d z*W-cfdO+FS>qE|BUz|Dc4U20nZZ)pw1Lm56V@w8`b9x+A+eH{gad+vsaq%5_t?etP zDlGFUp*nITq61f4v9vwyYXFY?!qxRe;DQY$8`k84yaLYH_&ook{)m|NKAl-~aBH*y{s(@6#|HoHH?*tiAF1@qu{}yylVS z6anG+F@r_KjHuR`+vZn{n?-LKmO&P5WHw6CIGo$O*f9?9=uKl!0ts*k8FBBzMUN#y4@2s3n?Vjo1J6V0RHR2}H^3ZdWb85zJ@EhlAOJ~3K~%N$^=Ds>;RTpu zASJLt$3ycdufC5`@%8cK9LYX?uoN1H;e0Pk8|Upk=SU zD@HC#P>t~%=#wi?1ysPgZzP48K7^7&;R|A_zg zPd}j}@xT1Xzucw9oCuZb{PG9{j&^uUjTt zWdhn^EM%ZIndxQV_KH9Df`HWX5oft<^4N7vb%V=`fM6uLchoL3C+6gcCu@P*`1tp- z$<-eC%X!ykcgf&ZX~sNJF{^sU3_b_&?|%1l{_0m3fQ66OCsu72EmY?*aWo4CS^g;qPzPbhPoeNx8=p(%a77OBKFFEu(Msovtc`v{Z48P3i%gEP|q zJczYDOEUvimkhJw?tQ-t;Kw7z6-*IGw} zMkGcg*SfjZ#@(fHO;#_hySQGPsT4f-#_n=Kfs=!m4W~oAzFfH1K6;u|ug#cw9=77z z3)dKY&cN-@2#q%da6%Kt*s{F0BH`Yj~?r@b4XH55;;?hLbz;vdXT=Ul!Q91 z!3cuAmB;FC8gIkJCm)OL!pp<(5O_32wwNbIOiDLuw~K2?mu1d0=8(atYRx&Lu}q0O z3HgYiYJ04c$#UfyzxeeJ`0bzml4Ag``;#%VA73wiTg!%{2w65dFuq&?y}&^hT;U(% zk_4{3y6QHaxfj2E`_zB=um8-y{oCK;um9J-)L;G8pYvxwf2vd%$cyV$EJB8?*J=14 zJ+@Qx7}tY1DkdQ;Wo&P;wrp@P3#iW@D%I`A4UVEI4xvdK!aD3Rz^^l=r6?3u1d{OVT^{OZ?V@cfz} zOY08{uU+w;SyycZI@qBTE2e^KG}hiH1Dqs@nNYWv1MZW9Za{^0SNNE>!F0vk#J3K~ zi@mDCuErcz9w~&+1_qPlP>EKsx1Wz;ab^(Pf3G2JSY#(vbf35@1~xl*P4v2ti_0$- zGLRX^3D&%K9|R?j1a==7u)j8r?+#}Ws(p12qa{z#;HZ5NDyjFP^a6Fm4a%TDt_K_! zexZPl&s7(4_!!q4&K9?0bhTfIDaN$DF!Z|kV$L+uif#I)MQ*4YPb0y?bBR? z?G6!+!_KMK^1}ZS^H|FKpN5&t-T!)}+*Oz(V&w48bQ|4G#CTtl-n=e}IcP9{NNIwb zC@&PfKpyDj*6X}{I(9qO*Zs9tFw#%zHv+d0Uwb5e``cgP`55}Hhswj1>(G7Ts2}%@ zwHhCv3v&P$JzxL&{DEkp*7i)^1_>0%Km7O&|M1`bQS*nXzxt~`i+}gKUxRF}C63eY zWvkG;I0i5?QG0ug*Y0yiB>lJySCau;b8_`^&Q8#n5K*Rv{ZmJt2f>5eL z=n{7{#vmAtjL9-2ykjQOZH|D!L9A--Zb^$XLSLSfOTxBM8Zx|)-jb$Ic76O;kyup# z#Bn8l_LcnI@BV~ee|}jAxH>-W>Rn`SqH9S|G}ws%M|h~&2q$xNn!)z<8IoisMR$P* zLVgMcr*#}q8?xfj#ci2pH%Cq&O3+5NSdnlEg8VH1F}}=8!6vc+6eVd4F%oEY)VX6% z#|l{`eXPahZ3Etjy_5QYM6JDn>zK(|9CJz`ilt^#1F2xgXz=NHkpj){K% zth~u$pmj^Tf@7xIVmzP;ViU5g)HxF#9m_Pdl5F-?8E%6zS7teBSSwK-C`M}PIHIjC zd*R&)n#6U_inWsY1b_DIT0uud$N{_M4P``@YLuM#?NaT&~=^*}YtE2i|SU z$^w^*ykoCk{!qUEHv+FF@VhYg70=Lzz(QzGEtFKW7^$)dv{W z9?>jikJ%_wE(8Ncr;}LKqFwX-GU;zCe)!1;`1r&3cpX+$(hvxEXD#H)Ra8l4&O!)0 zXd$FrmvLd1v*rm^DM%|bJWBTGTjF1T_Xqv_Uq9#n`d|JNfAZr`7N zZgVbW6^5I@fY=NJ zVY7@3S+X6Nyqza{lirvn+m%NaIalI(4EYG2E48XP4%Wj+ zeDd+z{N&>|_2wG~!NRMjg_&VyM<*@N8BM~N%08@GY?%GnUMkHy`V%f`?Y`JT z?UqhcY|!D}-kxVl@jTX2~@LyYidJ{wt8?N{q;7+6BY0J~OCIw)q* ziYVMm19;jY6?lB}`- z3nYc76sL+lhHmGy7%rIGS_^HH>*@U%2CZs!gm&C%i#oK)PbE{e>U<|T?xpU2Ejox< zr2;v;%_O-_aBJFoOtmolps9cMOS7qjG=@10E|Heq&r^7Sw0;5iUWH_1Va*ovmdaIh zcRs#)qHAbaSPOim*c_2;I0Rn3dct{1M6Y7Iybc@QmH%3`aRUapQy^}$@sr!J1|M$S z;w=bJ}$^Yt+jefIOsw_THxD`F#6^7ooA{}HRy7=wyg$k4NhlvDBHx27Xg<`aOR?PQ=1^1CE%QeMdA9;o%cGQ zaIPX**v=!32+p~%ZbI-vKb&i2%ae8ss!GUNIL6@EIJ>o@GrbKC?lCEft;U{t@>UD| z9deK@Gd0d-nEL?<@wEX4!&-L+p4|w~T^Z6z4?c+^PPld;);&)FIl3~Q5 zvvs{xH2}W39Iiof^j?QGLe*9;#sI#j841Pnn|}7I;Lc`AG~T&5av0zJJwkZ?`Vga1eZ7tZ-EkonLQz< zFPOElq?VYa9(x%0a2={tkH!Qx^(`S5#$e}0ccgHgt8r?*!9W67GmSKbALu{)UVNLeVXZW2KpHn1c#(vb*nFimN3t=t9n)L~>+lS?TFn5c&ONZyCoV_Y_Fw4mm$ z+9eD|;`X!vcf`1$PH~-Q&u_PReV$3{vpn*gFqquT=DNXR7~HXt=2@*Af)jqQQINe6 zV2We7?qv^&<{o-lubNLCM884^o8tuR1oQ0XCPGdl(mc6Yt?fJt6fAiOWp?BYTlZO$t`qS^`7$f8X3qWC; z28Gl$z|Gi@xlx$hzvwN05j=wDpC|tDpMT9)N&GKA`zw6(@w)(MV_ZaQKyFx&SqtY) z^oFx+(PMRf+n^)VLx0VVnphx)p)xto)fuUx$?i?U)G#+GHQX@Ey4e7VCL^f1PTnEq z`zk6SVc}-k+~S5x31$IlA+yf{Fq5({l{62yjA*ZxsP=xH*<%E4&stc>tnAsv_2Ij3 z@Z~$t@Z#A8P~v=?TxUO$Ry7L&Eany>x;Ig;n?t>js;zSG;ROs$ed!Z!&(a7aH-^Ae zs{&MIJMoOh$J>;J+Xz?l6R=h0#nmMoSE72j1%HjM z1Y!N4j0mi=fK@%)OSL`219=tzgGZM}&NXqk$>ZKibF;N%*0{V}3+kPA*Ww{Y9O!xA z*+dI>sKjWQAl#g@%AU@JF??U!lTMSFZ6t8>VFW;{OeqxfX)b-hgl9~p{#7w{|=|x=P&^%8&uA^^q zjXE_N)UrA@uiBb;uKg>qrg62*0B$oA!M;S^ZWBRc?~W3eOPEWjrwM;8iM1_3Xf91= z@$dtZ7!F>q?HKHebjMbyCK~n&{cfuP63KEZ!kJl{Ah;)5fPVDpOTK*n9fTIwnF{wd zra)Ndv|)z~X6sCu8IQwo90o@+Gg$?>HHk5-cR%5w+f(AVzxo4z@r&Q#fBN_T4nO?# zB`yzFpreNUtrsoEFk5S;Jef#YbZ?{BMH*?SPhAdOx<$GR>YB6M1w!Gb= zxxuf?62$Ofsnw}4cy;Ejt&O%j$7Z5f$dnErEE+PCM+6TWnzMh#9JXJ8i^mb-+4xM# z+BWh%F=;1WT8`Co-~>mQ$1c5`8|G~^b5~P}_vIgrmNaWK1!Tl>v9)Y;6SB55jO6P3 zHafE-Mg$ITSzD!9T8P%1q0sN@EPdfMjDL+g!Ua+gw6gKz&~~FdC$4((Rn2 zj~>bw_6Q(#IY#HI&r`@`pA5Yh>*qqsxztNw?+Bqrdq4I_l_)h6ngwwT(xN}#Cd|3G znJ7pthPiA<0oybtRxNb{aewXH8cRHLgSU*0t5vmMP<~uPR)IN}%!)P7egMc?23DXt zNGx|YRDR_)nfGmPXZ<*06h*sw=*{QPX)xZ-S*P6kF=58Ncbj?k$v>h=kS%AYR5cy~)o${Q#GPbb(8&HEnbZ2C5cr=dx8&#Ne3|7rHeCuX@i`xx3gUV2Tn4 ziQj(tE&t&kevbEEzR+L()hBrS#hbj0E0v99I4*}6!C(qbV{AW`a-q63-hJ@I##n}- zc?imxER+uOwifrh);o~xnpM1=6CRzqlvY!vHl?OB?;AKh7sfDn04&$uu_1g|KXQbr z>T6;UnG|Z#E&5HQZkPcEbI?InwVgyt92PQ_T?X~R`w#r|!#DB%+YcHHdwR9>_yo$X zT)HXI%#ARza^YwUfM)LN%7&-6XbCK~N!j2KifgVmI+Mz*9-vr1T3UKKlu(x{=voEtC?Kg|J~x+dKr5Xne}W5y8L!QhYUM*OLK^Ch*}* z(fwfMMD6r3n@J@gEpryk?1%xBbX!8Wb9FvSmOc6Q&HgAe=3Jl+u2#jM`!Lq_WK+Mx zvbW|=YZ2sv%=({SjYwAOaWji**CHNY|ORbZZLNhj22BXRu<25;kc0Qj_Vj0mi+eVWTtfH*&@>c&Glr> z<~o{hQO@B3w?ez;v>BI<^|+r z)`r2LfW~%(9iG%WEI5`09pC3SNiRrzUKe- zU;Z=y;s*@g-ZCoLRvC1ygyeXAOY%w>S&W(uMQek2opbt9Y| zLl9il62$OUkU{1yxC51mF8Bq^9ErBn?$H=+gNWAZd?Ys^Hm$mTS=>8$aS0-WP;t-6 z5N!A}e}Xm}9sDSXdIXXe1Rp5IqND5pts$LQ^oRn^E*XD*pF5nLsOo3T~qbOEat0_5S&$6Cs40Jkt%Suo$-kLDUP%rM-o z`Zd9|mblx1+00Au^ca9}Tsknp8mJ%D!^8 zBFnAc!^z`1XdEonKD_pbsQVm0b*q=tb$QW*oF`(~%(7JZWaEtSXkVoMEHSWpnLGJ(TSQU_?l)y#NL< z3ueC8pxt^+RTI(B+_#i?TeEZf0-UkYu|}73P19M$VU8Vr?0WiIczFJdUGtyvXf{XX zYG$J~1I9Pq!lL&rvl-PktF#LrU~^NDRo1%K-p@SUo|rYb4Pvk`tl2jPwK%uE72t+%fF;GO4q>#YZRiC=yD9lrSb zQGfV);!M#TM3&ZS^$aYDBHUv?LI|o2Sxw~P_vq^WmeO{|Udbl-qpd1VVr?(8*`Uj? zazX|YVwNc`7iOM>$aeO2AGXa*d-(+*EU?z%s>#dI>4hx=uoC1R_w<%VpWIpbRJCp} zJ8ZEHG-@a<#bzgE7N@1IB}5nsi&6>b*}u`TwXYyMK4$=;kCb50cFYu2#ase#w8cRQ zR-x4TpkiuOT5Ra9atWJSCN?>(+t+MHGStd;mQpPz*i1XsN_vBwK#7@&?`5#;^amWU z;OdyJ3Pw?l>;&LUUJNi3<~$8DoU3{y&`A|l0p}9WAkIqjV|2y8PN9;y8gg?CXVR*y zcJ%Nd_Xx%Ppm3t91UE^9MRMESOr5)g3jMR*=54qBEN2y?IaJJ*h&Vb!Y%phl3(x{K zDNWLrMD*PY5oV=?(hyG0mKa0m*jyr6Mx50@p%{i!XRnvD@i&9EW09Rm7~U_ZReSU$ z(udAwYG5tN-2la-AK#c=kx;5 z<~mimc3wQY;kxB${qOHA2g6V)tJRO%k3V>UAAbBHUOd0T4O?7rsHwe0v#PiNRX0$} z;vi_H?{1H58wioPa1c8(=rr}T;mbdLhyUmQ`|r|l{_LlJiH|;b2iFL!Q=~bm@1pC3X|d(5R!8r5qy^x3T3mZmA*TY?rzGJ3^T?Utn6#ns%jm} zFjBy)rxUQC-|=`N)&$HQ;|Sg66WzHX=f%A!r~&0Ap;i)i zN%iY8bU+lR6$%MvX@C~)I&ZT{e#3-y1Ld7_Rk5sFcZKZs3WW1%nR{%L8q|gn6Z@AS zH#N@1eJ^QR&%I@EXog;5<)kFFkGn@#sD{&Jij=)J%S;vKn!K1PNMtQl2_6@w0=Kzf zG5T#KraHI2yz=OY!VN^OAY);ePA;0PEC>I;J*! z&^fpTP2hGEN{L{@{_F1Ka|1k3bJ;ly5tJw*Ad}JDu~t$Htzs7nWblk$85#Q^w7*EA z=pzteJ&X4N)0j%l#`Om-5KmOOx`9J^f{{cV#>| zD7LT~SxHx_2TO)6IkK4vkcwypWX|H5)m;J@2d&mBxb?|{t^eW5shVjcqV+1nu~uIt z$KF~lEuOVt&i&joNeO`%?p{?|Rg9J|wyO&=b0V{Y9zYTZR2Gljn}6r|MK7LTFnZIe zFTZ-lUw{4${`}qKV3F2E{Y zVl;z63&&+(W)YfAD?%vY%v@@IF`1k98V}E~X3E&eOIG6tdmMw;>mccP zbr!|yN$GGc+mSqTtT`1$n0Fpv43|;Nl`W0+1Jc@)F57B&U{3Y$YIn`ttip||*7_bV@Bt#K(9Mnl9H;b zf$I@e)udpI5rWKeNvherU5Q!Qr3Gz{Wo;@|5lnOn0Y){k25T-H$FLD0gX!CEZv2;j z`I5i-&3C$7FM4(@T0i47&$LWarJ2h5Lk5w}l<3$|m%o@LR?VilwL2Y7AlH&=kmg#M zaA;2=n>$ph{uk^kz5x$g~ zx^=Wmv?HQ&6@fwoST%tXSI#=mlegQt52E(=s`=D{HZM8a0@$g!o-=!(*0NkF9|JT) zWr}phK|smPQMKa;4L6=oHv-0pAt>2@f1^n{bI3LYruxLWde+&+odsoEMspUG)&D=+ zh!o+rRth;dhBb8kJiCe=%?cO zV!JzLu0|t7>l&tt#b)H*Z4D)`P@p-jsw;Uaz^bh&POh5z!N>3Fv(G-XH=bXctJ>)f zNhJ`>oM^lZY>X&(m{feYUh2aSUQkG0uaq0W?Ac!?c^p@K^`{&D{=fYO|M;sf@PGWD z{}~^B_zqZU?$*eO1g_7oFgL8ZjDoJ03nDW)Mhg@M9AIIo+i$ckRaBKjDkp4Q94KMU zZg#;1i-T(xtGD$su#t%>8oe)c==N5%kB}gB8PPC}UPNewSypi^)mqlyMem^4%GKe1 zzw38;e(Oy(rWr9t0MW#L?Pv6HIIhQm=MQf%SK9BteAI8hc;q*a$+x3)o+rWy;^11_ zp}XtC=s)UyLAE4jld}z(QWmTi6Hsi9Lgj*)Ls0+l@BTb>|J?{!!Pq6OmV449Ei05p zI5iX2Y6ph*WforMgi5O&$$-Gsncg^BRy9Ezp(C7Yom>FqY2`w3iF=Oe{eFRWjN{H# z1|epiSj)aI5mj|h35BT}%0}1BJ9$P`%B)Qax7k=pvlF2LY8kO0m)6WSpOK=HN4N^$ z)0~)9UH_xCB*4&1mg@FU6?%ENf1L)vy*F2CIR7p~5V;D0p!>kew3httP*3|t;2h?| zTLjwQH-$(y@9Dt)^oI3YbXOWNZ%=@(3L_71u*^AyIbShGzZup!wzd7V}rg> zm{^Scy77oR)w7H2=331a-w)+m*X(J+BCQ1M8)-M)8)4<>7ucE;z@i(q`UyreYawm> zERng|MlLCwloqwAD2-F^pT8un>KtiRQAKbyH;4{VvLgm+-^P>;n#=Gx6>xBOQUqA6T%1Y&8ytl$30(bi%fN+TwQ4DwpMn02cp7zK37$?mS8S<#4e+WE32EjZfq-W zuW*Sn7%HBI%vGc< zC9KH98{$)l_5@1JI$$fe8eCt!)N8XtBkrojv-fRs*IH9Pf_J}RX2*C6L=4+9Kr)rM zt(z>u!h6X_7jJ8UN00n1x~X$}`c7tjOKRxp37S*YaLCRpsiDVkRZUiz^?SkE8*7vs zk+tYs&cw~z_WiM{T*&GObvO||P%^9R^Iv#>KGDV<#JET$=2K$4c_@y+!$VM7e7v0m z3QjflQ)H=hE)Y)jt-Q2m@iM^UaDQ}{s%TGiNv{`0D~;6V7%ryuE~m+$ak zr)R4XSOST8E;ZE1I7aUmz~p-U&H!jBYkH?1t{0qG@Igr{bzVZe{$wQby8@GhX#s$vYMSxMdPjt%GDq;IL~sMZyowU&zHWgK8lo4Pe5 zrsF=_*4c{g+AZsutK|};3Dlr7M#I6^nP!8Epyd?K*?MtN7TyIn^c&W9prgVotbP;&B7R0X5LU`xIIm( z`oX$ZpB_14*B*q3FabK%IopUZ_vlmSj*&I0Dp~y_ltH$ZWCFsv*rmOYB`dV zmZ10FdxxKV@{(^nJb;2Oao`xP+nIJd=XOvA`+3$pXR?HnJO)#RnXph0P+>5rp7pg5vy*6;l_Cum zoz#8phOAOskZCY#9M_)Fq5U?cPL6aqsR-ZWKy?b^5`j6h^Ry0FEwZXZ$>A)Uj4?FI zc`5-j6gpE2S)VXB9Fu0eRpOw@y{qtaYc7P*Os-7O6xg&L7z1?Yxz0|6aN3#Q$t_4- zu+G_`A~RIEF7beMP8#POVJW~6aY1IE>`=*ov8J?^p+Gth6~$R6oL#kTrbC;-XD((< zm|I(>%`q#xaTbCHSeeL5ajH=8zls`oZIF zw4n|9khg$ZAT)d+Ja9M1dc=<2EFJ!!Qzut0$?n$?&@5POqN#lb+rnS`57+2jZQZ$G zQK+@}l+6+u?nS_|4dtEFwblZyHv94#L6kH`kR_Nq^IVv>xw$e1X>bIQ=dBlH!|B!K z2U&H`J-YFyT0Fv;Y0|1z5beq{jIb~iI?=;0<+(xph}QIS$A*9 z*D9P~SPPU7=V&Yo0m-AsXY+jGWdxwrK1Un8jNr@n-_<*ByoKR_GW}^~H8!^IPu|-? znVIG40eM%+-HZddW)~^yu2AWGex>xw-+s=&|L;H7kAL!G{@vgH72bLG3hLw$hlUMC zTy#CI+^y24I>XBP!i>l?+AdO5t-h|3{dT2eW#jfrt@fdem5B}v_t@K8FNRb$Skj>| zV%4O9%mx!}3OtmW9D_K_TfmY@bIOLuWvxB0B5cV`qof>se|85MWT@ zaBq`bV>++_tC+P=NmLoAq&skouoCr@qRHvuYTb{~q7j_Af9`H#D0=a}tr>=5Gzghx zV%~u=)=T$Qz&a<#2q-Ry$PH`H9>rMuoMw^Dr)hQwZGaY?OLb~(q8P0;nAWu?W%h(7 zEL4)gwsLXfX+z252tGbR=eexXG(6BM`BFp}5CVG6zt(D|2LV~nj|FcZHCDg#a^X0f zPQyH>fuo-bJ>u`BC7R3!Yt2S#Hj36wRSh@~AK0A>wj!tD9DUiyt`i$+VO*FByVAWi z@9Ru1B{)P`HiSN>MTCZvwZ!8HR_>;pdRdqyoafT8E5eJ;^}5}6_eU3-eAsO^T56%{ z)?j-FGjHE#+IQuKZU`@CXG6u|djUWpLCtm^RxK6_ei?KTsfDm^eXS*|#&+s5hFMW4 zgQ<%_3%PZ>ZK8H}^jfTa;dfh?`GE1@JexhSm2yUwvL?>ebKr3t$Tg9*I{qV}3aTt# zE`-J4>cI{=mhkxa#NU1K%6|Fl&vkv{4gUDY zpWp|dydb&C?Vu?Te!+1(qwk<>3n?TYVO!sbSk-u^F!C5?rItI&N$;9DYZLf^JJ=jh z6<030U&t-b6!#UpWS7`ib1i^j9h7Rw=$c8mbR1XODV{Uo1&-k;?<-;=p=fQr%6u&; zlQIhwViyJ0Bk@)1_yyTC5@`0q&zB!+8X2OQ4Ae}h@JZw-#f3o&a zh^rEtEpcChm>EoIqBJ5KDDwX{uH4b*x%}2j4OKj)i>+B7;XSd^5Rn1_9kgL!==WcLx zEt*v&RxTo}vd@0Flh$Slxx|Qq(KyCYxh6&3)kY9ra}i-!^oX6t=$B=eybJfDmFf=0 z6vwdMTOi5mPmxtnWuOyDaZ0jvk}h7tF>fbVK~OJWAt2WRK_1p3g#FNA$@H|^Vb`(E z>YIoXYl-v#&`jc>Bdo2}#Z>z*3A0hPij@WB>P7Fy+xDK)x7DpAr-s80ADR=GD2BOOZM6u9ZjQAQ zPv@lhKowa%hwX^U_C3yZGBR*2pt{J|<8Tzn(NokcaU3ROQ^cXxlw*P_mOA zL|Mb}-+kwSAAkG~-hKOltVEVb3kl>}*6m;#Z%>bkIE>+UKQE4B@EC#LfBpq46YstM zE{)L2WnCpN{nIah&0qZM7xBwd}bjmE(-pCTM zs^}CfVh6ef7VMnWU#KIRG*S&(NeC9E+FQX}t>)T>!J3B$RNV*v9l_}gP1h(}rHYx8 z+FkiLIxdHmJHtyP1~aRB6O7)%pk0pWmjkuyqgCZ9RK^ap6S&=;c)b+<bH($Zg z*~S)$?%u)H{>;^N%;gQgMlAxsB}UUaW_9zfIwrS}xLyY~PnI5sMA>b%NM0j1TLCK+bavY;Vl;^m-w(jsO}lHEpcCGv$Z&L=Irqb>P%G(v zI69wPGmFkW{lzpO%%|H-|;{j&H72xLhu% zislY$$yb6a+m`6i?OYr-cw7!Wi~~#|qM&Bv0qC<5G-qL===5lB zUFK{>U<*@0Go|)mrRV9;B+I*bXzrY=M3f!lg1$pGId3(y1tc(YvH%ti!QD`$@Lp$E zO`@$dTekxsjCCtK-fpcx3c-S1^x!~a0s0=LMvJ5EZ#{dzn!_#d>ghy3;-SoBb<~>X z&hTS@G?PA@w3FyQL`OmC#uO-)R+=$ko=81m=BaGtY-2&Te(jct%QNQ>e(*k?KRb|l z^1wjEz+Ave(F8>dTdNeq%pIUhXHGh#5f6C$^Ampe`Imh6-M3&Q=DN|XN8sOnxA>bc zzQX0r2mI~d{@C9C;02T?hyfJvaJ}GqTyaEa>t))+?!KYl^_f9;WllWJQ`Vg~fkNh@ zmNBfC7-r2foLTqU4(t+KYYDSxU!yR-+ds^_x%341EICV>^Zo?96&O6 zc;87Ds-=_rd_{`6P6o+v$4Y1>HbGft!%&6|eh}Y#xYTDa-{ISr3m(5Q7|lJP7;a{U zLblx5t!WVI(S(qlu2LBdMJ0DnTu$pOLPM)i0IQOQu3ft|qeRtk6pwN5>)UEteMg9D zXCsXo?mWzi6k8POT3dh65g{O|=jZOb?I<&_q}6RU?WAmNcVW?x{W)&0YX2DN8@_*6 zjF&_+YkL7fvp~bocEb&>7=hcI1i)0m7&Pz0r)Gg=?9M~cV{jV+Fl%A93<{!?=1{HH zS+w=67cCoHFYA4h38eRrya#Iml$dKG!a*8qmqb)uI#9r?ZW0BD8}2m40t?9&zgox0 zDlq{JrEO~fJPexgnh$Z#Wnlvr&0<^gNExW+~7 z-OW9QfqtPZ_rkLXR^K9PpQh&$ zXwKmT20W8jw_G=D0pwak)D3 zs~hHe;(b-8>cw}TMu|^9eu*D^^gfx8s;eRlL`fywJ2j=1o4 zp7`fq{2IUe{U7n+%Z~sakZw?tUw`w6zyEK)z&DRK{N2C*YyRl74`I6yHO#>>T*d<) zu2)n}+~xwk(^9LNy`hG*AtUurlB|)AoJ8O1@36*3n#$_N<-O%sz6jTWd10gImvtFs+O69AnZWD})LF`{+Hx4_x(P?A#ncitu zz9}{hMQnV%TAz*r6%fkUIN-(^_q-bh8f~b~YHD_OunmOP#$%4lf$t{=VZ|(ELddoV zSLwE3?bGd7>geKRgD@zZvumO4d~0kV+V~;L+U~^UUGT*{7$bpPQ$b^Y;d_+f){Tfn z59*~>O#ulvpx1-6;n5D?@UEt^+OFQ9#7+?KfV;X=l|BCG4EN@EY$!}8Hx|I6dB4WJ z1(>__Yde>^Q|(pF@9B=O2)8iy2*Rln88pliN)tQi2BRxyaZ?ZoCQ=6a5NO?I+|1dH zhTU{7!0n*nwv+Y2Y(*JZt&XP(#Dv2^FA5G)n0dmz$GqxzGzr7ne2&Tm2GM)AwNanj z2oACen5zIA{j%%pMf)BBnD>q2wkAe19+A0FYc-KAE)7pwoqiZTaGRZz84p*;3TrK_ z|G%g++?C|0!RWDF)pM7ySpf+I_74yU%lkhH2q6WcNDHfgNJN0#xiek1`SI1=Ji&}w z)zwwDzjKyZ)r2w|8!Q0zih4uI>6_+EI+I+dN_Vj}OXY-z zsCv#GcgsDD>4Z(Dg;qrrnS~t}Zf8>rK793K=KO{+i%R5JELmMX{>dwT`N=1|eDMLp z7i4e!8eFeWymg=gAn3 zPu$MJO{Y5BEa9~5&TQN*jzQ*Wor~3m$1oF3pab&=HQAm)I*a|Xn00zv<((or!u*)J zp4BQPnh0C6QL_gc)QZZoV~Ar>w?%}+pi3N7{J79ed-wKR`|f|vclYkc>$3CAwsvnuiqfEkqxzoeLA=`mihft zv#rPybSQv5bYB9jboV|n6y`-$ag1SYgS_W1MGfI~G(l~2^Dr(dTV-1)1VQ^i`~rE9 z-CA+{XS{aHiNxi_Q-;t;nveyZs$wWv zr@Cq_x^(N>*&YSB_F6xyD06&XI4rOpyQT_B(W~((^5WVyc&8PfU^lB{uWS~JOjF-VNgiSrqZX!{DLd9AiEw=vu-%!*~J&OO0dlr>pPCRf|nPZ{FqG#m2(ADp{(8lhO| z)8lDXZgU)j4~C+n^bSjm7-TKFm+d`|u*NB)(z3Cyzq|6M&)@OxpZ}q`SY>d1x|yM! z(7}$-jHPw$xlL_4zG*1h=UTaIHMJ}(8KezW0JO)MQ!OQxG(%49CYgONwbdBiehI9e z8%||so;tPd&gw1)p+uW=z1>*3APo1SSa_fluuX3F<~*J1Nh@2&F$O;LFH2WZ&G-5q zcZzKrW(P(#VNaE+!YJ|evtgB1`F?3)1ny&R@G@kRXePm^;Jg>G6Q8_xs$thzSUQ)uFwN8`+aCs8^=6_O4+qCFq+es*i2}XIa)fV4b*a&p=4+5G+LW9Ms6?;H3n;|qI_tQq9}Y0 zY#bX;srqlrLdnw|s+?oQ^N4qdT2$Rwr6ZhrDSAmR;{Y2xUKjTzIGex!-76n`{F0yl;zt}W zVw-{*(FBG0c9)d)>2{^iyQJ=x@&&_#^GvQ!H*J>TtaW1^PImK`FW>UV&%fZ)&wkCD zH^1e@9 znPf8ePVOApXYaMwT8UBrpn#1*jsXAwu$2^LH30xH;w#_^4F&Ou8>W8`0HEagYwLSz zn)%SUy1Q80Ia<+p`ng)sSozvn0|36u)p{BkuM4ps_lSg$KI0J#AzSNb84Y(Vl+y||=6=7Efay>-#I(ah4A zZ8A6R9DbENbNW828j??hDu6kL{_XBJiT^dFkA&myq7XW3wrM=a7m1CXhk^Wc6RbRs z-?{stES$4&l8whuip;i$7#*7M2@0*Cv(gLl!3G|T31)y3^P(jGK)p%XSdA z8bU(TUa#RHn{O_86r4yozm?w;iHR=kc3gYOr>+$SmkmO1y|la(^)_)Ocip1r4nwtJ z*8pOC<-Jq3qS0n<2k%;L=s-KBUbq* zIAcA*tH9rM=%t!9Mw4gYG#~949rRhi0#e4>i!%RL$jx35Dj0A8bxe`ucKru7E6#Q2 z-;CCmgzzmiNr|Jga1|`oFML>=Ap1m5nCE%SHu7VzcNQ9UKl;ha!cUUy#}#&0l|V{iGF56)LdmpyRmYitYi#i=t>Y~!B# zH|hDson?+{RlBHV8l8BNv1Je}R#sgSleV82Z}u-pR59h0*X!LjrAmI;;SW%VsGjul z)Yi1F{h4v{6fsyq;Zje*fn=MZf-U7D1=Cqd|LtSsHGEaRJm5$`>t?z+QEmN!ZdScd zOd&g&ux)9n5L~cniF&ESdsZ<)Pk5h{H;XC@d*mQRn(8 zH)u8WKU)pVnQ_W1Pv4fhgmv8owe!E)ct^j&rVU(=rwpDG>ke< z2bIL;6QvPY>I^h6IHxo%r~GK5X^Vf<>n5?j7O>g{3O9_g(;XHpIQWqrKRn=Rt%KD` z2N4hF3gyl=7|LaMGvyt))<3+^!8~anaymI(Y|V~xE4yi6oyC8Sa(?;E$#tCxr!lmO zAfGTP$5U!kp@x;J$8Dm6?QE6}{Vp(6MTh;u2E&Do7KNJ}s<1KR$GKGermnIv7oy7c*1pNMuJInUl&=d=xm2L7T ziCgN&)A^t8Klm#3l1|-i3R25Rnv#_3QSLn~x*ak>UdUQ!zC62QXWcP$Ezi;^NdDz_ zbz7TF6N9^>?uYPLYI(nrcu$)NTA$qi!Xvr=YTx*uzr*p?B~VdAFNOjR$0ME4y7vF# z=Kuf=KuK0g+jsdm&nJsWZW$KxPNZYI9Kt}~d+c{eHlc{e z8wnx?AyG)m4I)!a=`Id>X5n}(fr+@G(V-Z-xoTqlJ~kgrKQMs3z1zDbD)gZ52}Q;_ zd-e{ZO3OMb+YhTxD_S-R@Q|hOc*1_hP@?U4%U80~E|ZlCgHF_y%~mJ{g!oH}Y<0t8 z3r<|nj&}C<-G_`C<;gYw`w23x9ncZvc=WhJX^ZU%Fcb>$@qBh}UTUKRrb}i!K$a7p zO^%K~f~r9CNR`klm>P^^;`&XUX1gkyV4EaK0Yx40)ZEe!z_N%%O#*NCvf#&$HdS7$ z$A;__q?xS1uIZNrk*&9f@s)G1zc81HdWXCdRJa3N0WJdnxF<*}mBt69L6ZhdG4G~b z_su`m>6j38O<&4SQ^=|Db>)#bH#{N*q6Eh3=HoX=^jixR=2F9+Be2^fJQACAg=PPn zK{x|Cr~?onvT_RZCXFyj){oIZekQqXY3xeSpuz|>83ElRi6A}YAtpAongMK2Y9`%z zc**6~YY9T0RTL0NURB#VdG z>bM$QS1hxPCfEP1n-m`ZHvw0!I!^gNHzd^KPMQhWfzcW$-8iBN8k%UKU$&e=Y*uh@ zS>@5QzE`0dgT4a4dOaI+n%A)u0f>;L&M*?pt=&S>mT^n3y%_sC%vBG=hK`a02*C3g z2m1eeKG$hS7`Jjy7#By^(wGma9Q-%wn?V~oI_cOE;585ju2yO?$>x%J1!E<(g7aEe z_eDCA5cRwTcu?pAR$y<*R-_?zQEp!4#T-APli64Ky20!#r%{?wMYG+u*C1i5DGDpv zyPcQh#8=3@gJ87>z^unR#)%XfOW|rrKZJH--Xy0)sT-~q0sozKYaNQm`Uy%8p@;TE zCuSJlH{ke^`4Z`41%6IQfD3@(q;Mluw&>OI;6~^g-fuhFEYJSH9fz)^XL7g=oDxo# z@)xVWLHaWBF}<7$%^na7qDY3SZaQK7e0fVry&tnpMDi;DJBxjsigX$9`xD#W9$3Qo z>qgcyW0dA|6n<=HV-kk0#Eqp{|37-F>R0KHcZHoC1^#OaLuib~Gs=56<1HJqO%V(S zSg%2^lQiy|GZ>Y!S|D!{-8Y?*r`}47JtJX(6Z=}Hqe_$rc0o3s>`2Dr8RxIAH9k$C zI@@mE;Hjg;;~5YmjYK4v1lkB z5eLnW5}dBQ_f_SgePf%!;qLOq^z_i`2Jza@KQ>4T(fFJ(>zDy@;^C(CrHv;oOV7=) zFQlxc3(!o6OGz6~?R5ag5XKpO%6nRXC(_Wc+v9pP($vOSy&*xu>$q=tq|x&Y z%r*4(J#Q0e2B6G;YT}k#+vK_9?W%L2?D|*yMp+TjVUC- z{-t$*wW-mo1(n~(U#q$0>F=`eSVASfhDC|2v`7-GE5RgO?{>_(wQ?~dc~TT;X>t_; z$uNA<8UL}gd|1vn{7exo+pWM$z16_}vqwVRg!{CDvxG8qEyh3?75|ZiTDs1vlp}Ge z2U^ROLDW@h7pUf7%EpL3*$*@I(|yPY;&P5PK`K>5SuAK^awR!q;R0$r-=&|ztg^<| zZh!&cEBVlJ0J0$QKD|5hZSHjzXW4mO9N(A8EQ1RY>x_vvx&OEg^O9m!3crZiKIQU- z;xU;6N!et9%nZt$W5W-V&?rb)iBg~fYFSb@vUBO3Z*pkJK8C8-{i%Qan{0Rp3P{bA ztwez)#xqo!gOPKvhx@cQEX*4etPZF^Hs&!K%fyj70mwX2gr9Cv7%f9pcg;&ErWm3BKA?KzwGjqB5`0aD`8`2I z?ZlJH*~UuSJsEUL{}OB>^3K5F8~!3u&IB5U0xZ1HFj341ZFjsnEMHT zaa2YN0$j9gDGpc0p@a?$x2_vZR3uK*s%M3S_t6 zpRsHy9<$nWTntVG?c)9_Y`?^k{`4HR>uoAvm*zXQ!R388Jc9#OU;}_9Mx&A`k1<72 z*)r~uSi`x=S~BR26|!sa`KN zLUm^tSUx(4LF$#4lyc}Rci?Z}!tuX~lEpv3n4dX%nN1^(>5=1s;z%4r3iaDz$4ExQ zil!7P+`UXqo>bSPG_N2BB^8bUozmKZOG0G9h>oNwSvf>BhW~dY5p}m^``FervJtXw zlEYx;&h7U6j9Z+H7hcU}tn327MG7iW(){@YMiAfk$($3zlufF3P#^hu4VM_B9ZZuI zj&2TSzK!6POk$|5Z{)KeFaJ6lRWWl{kdJhoilRjJqM$L@GJ{3dc;-#00YJfY1HS6i zSCxpmt9y&Ff4hi!E5JCBudj)L%}wM>ZIQMT|ZQU*4<2_*(524yC=xM}ylmMKAYCM2r?o4LJ$;8#%5Y?Su<03NWhnez7sLkIU&;bV zo&946M;Z7nrHI{sCdq)_&rF^_+87R!;{T_fQ*sl z6}24uY~fxEX2r>dhDZWHOt;>m*`raTd_KOf`ale44|{S;12({x+1I(R6*B=+Yrv)q z6gPCr&$l7cJkem&Iy_9tUbS$j2p5O;lHe;9?ih+61R8iVvJP+#Rn2V25R(@0F0j!u zkG3R*5V8Qtn=yz+Y=Eb}5HVm)E*LozO(?Zan;rwE|2?;p^N9X0fJw!o^{29M(3y)} zWc)|%_L%<)Co-);b}sY|?+beq_!RZqPhM@;m^g?P?3IE4ONZI#qg=)!npRjM=^J>= z!CM+aVn{VaMb;ZRlXMqrR{J;RUEi#zPH7oIL%x*Cyd|!0rqv0R&hs1yP^Gw>{G#g~m1Y2kx^>G>zucT{)+E5dqf_ zk0-HgWrJ+d-;Pmd$mlG2!PZDid*J*z!=?B<7umbleV_2|@WL%e2Q4{HvU_iQxfrh( zPiNLb6&$0Kbd%Ys1ol9O=|!Izu8TcuJXwISZ9+X#r@p0vB0W>` zx+P%{)TcCCz+%4iM4$32>b;;H)@0r2=qI*u8ip8s0E!FGTeM&+R#PA&t^E7QwUtp) zR)x`v6)pz|CzKlU7ebwPB4TJ3jhMDZMC$T*H9O?T`b z>PEFFQU6+aLyF>zJdttgoSYA-%{#v?{`b;eZC%XWf>9?RTnpOmcUipah->un`ns{k zt-NbwxA|TWb8&uJq)Ig%5+K)J{bdMgL9mYn?LZ$by|fK02GlAvmwIoy$Hq9`s{x94 z-rkww7@T}qAhQUfAJ0pfd?$c70CjkA?|c6qCykb5DaA-}c+c||L86GWaJT*<{RQPC z<+s(%J0#sPZ%p2`NYuqOMl{w@6EULf{D29@o4?cA2dtuEjb7CM_(^8-7f21tcWJ6t zvS>3?sJVCK-}OfNF|qk9NaXuU5b2*8{ek>-Y`0x^Foo)r<|qbRNtgvh?6*-QGeF>5 zyCsd`II6JCpS1;~{DLdg0&(ecmROgV$Y7d<=g6z+=IzIZjH2w6)|v{9RpHUVrwNDe zXw?ECE8$aZl(`nt1>+k+;ZyCPAJ6*8nu1fM(wcefO1m^^+%lCVX?*bT7ig_d;3gpujtmO%g5aT1t<)mBT*wdDTS=eg${qs5iv z-d&Fz%Jq(J7Vev{+`VsqnI0(qQLie!=|-^t-|~hglOtBt^?TI>@nR|A)-mh8l>AXHHxEYeN=1(T{~LNF66Nq3xd>_V@eZD6lR4}XQzD<3Du~Z>}$P~ zw<-t9lL?}c;^fNi>IXb;uId>nOV$!W#9VKVVD|CEa89}x>Cd7^or|lRSkIpHBRJOj zPNQ+FYP*(jL-euX-4C%pP10x?Zb@5+AxC*~$#_`Li7_PGuZjSd&V^0bjM|epS;uh! z7N04R-3lLl0lS3k+&}A88y*8DHKbP~2FzU&t0BLk8n6j6SBbyoY`~|^Q*m&X%5JM= z2uK@Ahg86`&}~`h=*Vs2HQoN>{yyU~$q~A7kdv#3q(uN63C@$^M~jX#^l68>m5}wf zgm$`T*ofv#zS$D^lEU`eZ|=Xq$dB)M0>c6DYXzwo7N!f@+a$CQYqQlX(RjVSKUt6$ zDL*ypM7NH>fwC(HrQOyid9I9LflX(@n1X+lu6d1=D7j(vA22I);HRXOlTxJguY0)3 z3CU>)H}OJ%M%ZJ$`YRaYjVP^yOE^Q!NNS$zZc-(fXUML2XMSuvT*a2i z)!r+DQyVR-d}VZ$1k}}l9muyFj&O~p_LRO0CaV!N=~P96WK&v(k1-VfpIzW1VzxKwtG3R#1;Ce-Mn! zxEf_5h-xuNd5LS75BLoc8O;r+GFHF&aD=0ZjDh~mMp;cYx*?2fzMwmI%rB*=4dmKA z(w0o~V9{;aHjZO3-QKJBTn)B1U+GX+4`z$dlDlI<#vesuyHyfL4*5qr)M))NUT&O3 zyyl4G1Le~YR%qUd56Cr)SFejm?hMFBexCw849VK6oCyUU9E=!^3@eL4F>4YZ;MMD1 z?Pn)R?mW?ej~GAWm~*b7Sj3s%Im8gX?x#{(q&Q|^SQvt}h};MpdU8~Nn?G8eG;-^~ zjW2rj>$ostXv{%Ard5(mrsnGC2WHr=*o+xZrLe!i$`=~AH+84PhyK<;lq<1o%3b=Q znykgMW*)wozTH?@L7UFs_mA&4|;OL zLsh!4aFkccglpN47jdLQCpKh^U+Xcd*UhXCj4YJiGC)ZPE!cvR|BgJ#u3CJ@BGRgb{NdVHQ0ZVG|WsJc8e1yI63#6 zh0Fc}3#?bJg?t(tvNg;`zC&pD+coeePUI%s{-|~XR1IR0dy)#63ji=qzYp^*1RN)}Fy7`t&gmwlz@n%(Ccm+C(h#{eS{b*>evyd>mGe8NmAbrs!*oJlY=w* z7Q*rW>kpItX3a&N<+nIVDr#WaR2d;?u6nSq0px@Zj!b2zp*OPJqZZyEd0-E6$$EMg z+pu#z;d87M>4Sg2B~%2Vy+1V>$!}MU49Bf!`_gPn9f&%2uenL5>r~^T~qPP>I;oLjtkc(LO!bj1=5Id($HedpNvJM z3-g~KgTQhZsyaMEPQEoquqcKnj(UiF{LbYm@L0>t?5!UQdm;yE3LCZW3fSTMGT zB&fHoZyTA%T|;i1YLE?KRl$|5{0P!qQJcC3AkK*3upz5V->{MIlko9Kz3n6jq^Nfb^V*ZC<@Q&xV*_?YDLjmRN7vMD|*af4jzM8x7A@Q3S1-(l?A*lQfx z_qBCs2)<|Rkt*Cj)Ugd>U_>F7v}p>?I&6sKWq+kTCU;agVd)T%=ATya8O;5LaP-cK zT`1+@``b3OUl=xun92lrQuoS=s4k|fOOFk8?5=H{AGuB~q)gupnKR_WTielx{ErRe z2Ty#&YmX9P@9lDjwJit)Q6j)u$y#dBq^Ob1uEe|aqbuUI4w&%Zc%3SnRG}Vb-XAc_ zKLp{C`>0qqN}qUSfPy!h{EMRDF}+(h;t^B9+iH0O%nn^x5fBaSb9Rk)$b@yTX;7{WstcZ5{yS%#&TkCK`FY$5$e|h6F`wQclTXg&kMl>vQ z1S`?+kmYN&jOsxYBk9yi}ie}3UXMjBiEPA#*~%>RRbI!)t~aMaJfRsUg<4*@tLd|47{5Kqt(m(Cjj z?qT~SOCf$4XdWy$p`zhCumvTJ6cW0zEi=Nl3wpVf5_5-|ain>mxxNS7%Yletg|JMz zZ%`YdA-VdWdsm$avyno=1kAXK)Lro!KREH+u%9tV{uS==J)U%nArmsfyuby0CK#|9 zM2M*8pX5m$Gle>V^>z3$n(})_l_Gb>UuF@_T(xULoKAdqPXD=&%l+(^@uHz`R*?!}k*HrB(ITro#`(=9ar!+wA zZ2=Wi>D|2;^x>>0{oh|wl`2hM5&|AY77a9`XeH}Cg=LG))Y8y(*eay6?6840gx)+y zV-@?6vKVs1ss-t37gKCcT`$Owaph*zFQ=K+IPORP=t>CHRyzdU%Tq6$DNHG7a?SNM zIO4xx(e-RPPx11vh$MTZ*kpfNEnPpic>5J7@62zoPB>nvP4d!p?*21VFx3&#gFoRH zb~qCTS~N#Q#O-_W@G<&Ox0ipy14GafP6j1Xi>2S=dqMTD1<{JjiFi_vxH;-60u6h@ zpcYzO>!-jUmwqO*06EgFVsiZP_-zT&Ot=r?HkWJl%6~b|G5WNX8cY9-^W)Z}K6`Hy zpwli8({m!|mj6$pe}wv}33GWetRq`FsuS~N1nZG0K$F5hR3x^g+$T`#E{OTlkEQkM zslu}F9F$A8Lf{>N!mQIr7ZpA=(qDRoWU`1Ff}na!VsRm?L1)KgS>GJgJYPYBcdbmR z;q3Us@q6N`1XMl#t*`U8@3gow^n!Ok#?Ni2{&&YA-u%HWf8K>!13=CJHjM4Wm?#-f zBC`+s4scv@CTEoSOl=TKNi{&KqI$-g{YMu&9Aj~{S*afNT_IDJg;$l&L{@BNxeIe+u}FJaFMW`7KXt zFaSINzrX5_fdWf?pUu@hd1{xS29D?adGM}|s_tf{99CoG9E|&xvrrRR@Yl(xkwm_? zrdqs6X!6=6^3ZLQbFUUaHoNpjohZqIR@#H3;Q#9^KfCi>t9s&=u5XNrAKU@OmT zl_{+EP!KQ`Dxazdt@s>bW^lEUpJ7EfAp)9J2|51lPuHkygDNVdD2(XKT@efqZMq|D z0Cf3Tn-%bnEBn>Iz|~U$kPX}_!(Kl=xgBc6H++i6 zZb*v$SCzMudS8VciG&-Cbf(65_ZY!mlCJ`JC0_lpjtJ7CdKf<6_|#^qy|b+*7FU#w zkAKHTC-7IdLGaK^Y_L{Pz~Dp)KSG~7BcX1&*@5}p3b2GH2On;VcOSZmy)sKn z8Px}xocz0*?t-1egz-D7-o&E6^JyHu^2H^*Fk@-0<^FrLg>#6l*!k_al!EbNhRK0a z^5?njU8A^|+5;xO{Wz8^!$|445gW4Ns`PSsV_2-m_qQSy>(8OzUt~Nq==ENY{tWgY z*G5Xrz2+76#GpX+n?Dp>{t+DBM$(cpv51VIV^I-wtY*Rq+h$kVfp+!#>pq5*e-0w~ zaW`%x;E*#`E@YPmHwRdssW!#@>PO}O4Z5=HuLEY4ODA_Knd2yjg_rdnq~eS zm_J#eW#nY(HgydfxhNKo#E3{C)biZg!nKf5kzfT5BB`H!2}H}D?1FJpWo$@*7i@v6 z(9ybmfg)0YCNetvKKZI41{615jK zrE5-)f~o<)I4~9CTIj#fGRsv*I^OL6(acS4Y4uFcH((D}T-88&MomTA`a@(?32V!s zX6X%lBvzv@r2U3O(ndp_Z%(kyNA$9)12)}&c&gU3DK;dcORfNBf4^YByq#*!OvJ9< z5T#8Lag&U>E3(@gX=?*p3_l&Iy(@dh)!sT6;Um%f(H3j48h2|cQ=a8L#z zKp!NT&%FU<3;AVY{l%{bVBsLBj1o*v-Z$PV7mp|BHm@|XbHiGG>h!+M8X$G24e>ZL z-T8)ic>=!OHnFQf?dUY6c~ytQEfq5fT!D-XgFR1N*+(SFAC`byjhvRKdAU-g$dA>4 z+;@JsQ_nx|D?MXcpD@1s41Y2t?D@fH^8CCtVusV=mLE~Q!`Oc{@ku# zqBHP74qO?K@484esIgq!*IMal#YFp?{rtHo+R@DD-0ql+mqr!CD?%_=@(=#Edl!9! z6elDFA6U}ml;&NIcQABkleLmx5j2$&p|<8svO4lBRx!ccCK8iOSd zDi~|3AR?{RRo%@2!$}p8mZSW_#4?+cDijMeq<9XKM01>+6$BOo|N1G5$>z6!f?5wC znh}VDD2TlkAp^rxVD;jTlfSri84)7BmoiMd4HOctB$}*@n|s1FO7u9yPP$+s6&>ZE zm^X845ubj-9{gnttOQ&n5!Bh{**bv#CQ-7u)dLDvZfiF!FDSfgPYAux#CI#CvN67) z_yX=LUb8aD=MkJWGt_zrFv@R)Xd3m{-E!u`K0~VC zfI~EtOzBY&F*26PJDyZU{oD ze3*2YaT4@Z99x6aU`W#Db?$4l#Y|LAAbVdKP>8?ziAJk*XpZzO0`&+PX4n_RE>=~2 z^I&E~@ifrGjUuCgPeF@51o}rH>cj6E&+BY4#11xPH9dlO4JE?3QbyxT*%|K?l1F;8 zdLH7IM_z}5o{n;JVJ$D#uU8H8;`0COv{_AydG(x9LnF5Y~;0swPjnU6ITq9Ms zgH|8efQ@_ZgW*v_lcQ~!_Lbe>P1j14E{zPOYPG_4Py5KrXoUC|HWn4``L71mim?bF zO0mCF?EL^Hj62iAr=^v9#K1~)Q`I#~3wg=>*8T`0RGZ?Q74*8-9gtPTZ-%i9>;}J3 za-p@Z|4nTR2A;%!f)L6v@+Qv1xiRt=Kc1&EdDiN#TH=UD$?0+64#rAHB^_&k zn;Wii_HIbpQ~=&)iJDGviR)^knxW(}q@n0;u+cdnfg!oIDLBM*G{eeLmBm@a&Zo39 zfK%|nu z&r1^1U$nMf33VfsQKbx`{LR!<(bD0%>|wjUWUEHCAJ95?m{ZZaEme!4(cm=HG7+9z z5tt65uOQWd{8546R_OtGMP9EA2(Iu;2*x6z?@)x#hwP-~KdfV@04YVLq_eW4CwI7} zDO3D~(7Ru>na(99FcIl00B;mR;sq>hP-DQBQh%U|^`X8qh?ueA3WQq1339A;4MNlh zxyJ-d?C))!S_F4%t}JA|?$0o7`}*omJAYJD;7AnCj(<5>igmU8kn=gT6+yD2pk||@ zA6QqTS`8HgL4D0l$&sz5q`BtMrvvAls&0z@AzTL zun;VAD!^_`D;n8YFU(l{`!63D!vO)Uma7bKQ9x$do*J%*pAGwrNn|t9<$HwkdTx;F z{fxk_gSIjBzj6GF+L@}n{-FL6{byg!^Re}O@k3)=M}b%FJoRC*f5%%UZ-C)|tNTa) zx#LARXM3+K9lO*Txul-yf2i?4X!9)r)k@x6bb@m}#DU8|5lowUu2t2A2}z%MBmE5? ziBzYC(!5|r#{=E*H0{7@Bl$Zt``Uq3y|^>P{rmLx$DU|?%mhuLdQjy(yZn)sx!^s^ ze6@J9f?l#(S5~twl{z|BAe{!B;{0&jO@4M?zl$k{9rLZ>_U%TBhP>VjlxuY}6zRb4cm) zM?Kv5PqR9EC^xkRH{1z>UjCx_zDh3I4q>w&*_vtvSGlc#Zz8h00MDYXk;IN z^?u4FUpAnPr6S>~GDMJb`g%avFpFg(tFUh=ps9+BxpvJtMBzY1t|UUZY}E#Z*x|g=N@%y(>0thhPWgD6Cpq{qO^{>etnae#XkpryE`?(| zJdVIo3IR9%7a{eHs8;iQ{{l!&2E>L?hG-2!BE}d|nJ<+-eFNmHWTIt9wgQGHp)de` zp5&;nUF2G-fJKGP$@x^4N|8gF%DhRTlr!s*%H*=m^eR@9)4gdI(yS>)S%#@W0xG07 zcMtG4;{nN1P??}eP-1t1X^iZcj^(0OxMG0bQ2Cx^tQ1aBRae%(QI!8xl0*Y8IiaG76 zrWMy@R9r1lt%L+B3;MK2H`Spd`ZZa>GUU?X-<`jrQLG8;IsY8TntTy;M;HXWQmkO7 zZu88sGZti4)f<+zRuSqc7p*mx|J=eJ_Vn4mCp0-c%FczQzXL%_-R3|2ziv(J7`^Gb zV0D)WVi7pS&k7~L$EU?SQwi-Eh4~-g&=M-OAl1=N34vBl@KpUT_T<6?d-Pd;!5)5s z{6QwIy5>4d9|~}znZV*E03z8?Ac`LrsI z4dwa+{JRJ6j`*ta@;W{j^O$%zJ$UEHwST@QC5KX@!p*{L!d2ewPd&^P!)pk})s07Ec57?R*WJyI=Li!(~9d)Bh?`V(NkiUbIU4dMS zqob0+SpB3zzT<;gSzkhvQ=*Z$+)$80P>l(=FHWRO*~0$T;+}=Gz8P=1&?goe-&*f9 zk`?~dHg~A(Y{@3j}}bw(}e2uW`zP#ZARvd&nD09(ViKa zI_=cu9yB~yl&R*Ydg?EII2*DlS6Zr8V{E4iUi-RJF|7sF$nPRUzvIq63^w#RMz3NX z6YRaqY^3wi2-?7?HQoqymvcPquWBxYi|34@{6mGsRie56z%!S)WFPto(kt))t+7kno-ZWKHFS% z=fqE9+{1C*Kv!J2>#i(7Sa-`=ZM=DOmWvXSqvI|3 zLtJPGvl>TnQUwe4zho-BNU^xof6-%a`J$e*VkP9-frzp<@n=$$H5tx$4Zs*+mZ*YR zXmt8S_ zUrsq*dhR?egDjN~nfUvP=u@1uL6Mp_1k)tEHIGLqAw6@4KP#5+@KV2=?gpwmjaafgOHEQB05! z6+N^iN#Xxc>#4y^VkrXPedvaB!3)@0Co?9Hz5EPSH13I-Y~-mY5wX`9?HOriKH_#0wq4OZpW;>1)_7HS%iaJ7ASIZdt>ONR25*(eLL56iAgG zM9qce^Qq(>Fj=Bj(I2MBz%6ZmOZ5=-hHeIEeO+==-yb&ZkH&@k{z!1*2UKs`pIhTW zeCX4a+?Y*{e&{fiDykawbL-3|OImy4cfg5zag=2m~5upZq^ zEZL(2H)9X6YWGYOSxtAVI%NAAdbICF)X9I{D9PRLR*(c2xBN#@)oDMD{Bu3g9ripx zq5Yy*hBS3@8`6VBDVAIC6%u1|_BA@)M)kUUl@rPfU55cVGQO;HzcP=uSqf>+q4Y2k z=%rre`A+yJ7g&H=JZoCyNNq#6ya5@OVy9)g=PE9HBGtP~f3r5K0p3@n9ja!-x0hT~ zQG9PRmgbWq>W-N2ckCy^*>m)6FMFxY>Y)1G=rEcvdm^X-uS2A|))Xr7Zj=^Xde zLWCwZYCDX)?};FdaXySW>U3e+XGC{;L3DH{ylkwpNjYoi5jY^RES;1vD8HMr9LOci zKRnrZY(G{&!_7WBA@1*=0tLx!Uv(#fPI?OcNZoYL$9?=r&S-vK#&*1Mp?t3t53c#$ zm@|>sUj``wpo}?R?_q;CQD%)<;oY%E5eQ9(xAz`l{{4?b;7JOGC5V>~TO=GyjP(mU z0jLnLq#^oAjN`@Y0Eu>Gga{0Gpm-7^6hsl654*-PBhsLkZ8EY_E1T?szm315&T@2j zZU}3nQR&JycG^dq%j|X(95%fRm!NvJ}G}WKoRc*90k7KJD@pe2vYiWw17b=Y# z?u@rLQF@=UHBn`l3N;r@TIOEKXwq*44S)szmr9RwEX3=ga1Spiv4>woX1Dy=@wgG2 zvlhLP%8=fv*dGHyrrk0bIxwYJ#V+V*lN)r0W59)Rm-$ecdl@3|W+rQ3=ZI`Y{ADO1 z8i`tjldol8rUH>?BigbGI;q$==QI&+9lCiA?tqzV+5V_(xg;^b#~Z~nWOabk(+y-RP9K zaN46Hs~yf}Zj$sXpY0QkCH;Zs%nAG=C~ywe{RLXznx8-#k9kHE&!ecwY2~|>(bShc z<~)JgS_=piZ&r)o2r&JmVz}8n=>&-&%V5Kk+)q8Jchz6axos|Nd8nI39 zux%3DSFS{^Fr3GOshaJ=T~96O=2MVVEd!$bzOLb!p@#16Zcw^ABqT(-8|m&Aq`SMjkrIiK4(XOukWT4-uiyW@ zpKpBQTxWK!we~)>OElPo)Z@!j{mq0*m#8a>op`~Hdh6^?yOs|k&W%V8enP;g4mbAK z7WGi|w$6zq2@l#{%V3DwNltth%|ymHcWkp(v<~ABv>JAwR-}?E3425wORtX~Vs36F z*%8ubsGrO}oUZ(r{2g+BFa?m+5TV#-$#e%wUA(D`i2OoXG4dd~%gw6vqKIK#yiis6 zoq_qVx9D2rcv_rTxYZ}-3=rge%y>I5Hx`_)aC7q*c9KFY%ATgXM-K>~fq)k}z6k5@ zIKsz9UE*&Bs=lM^+Q`^MS$D{TpUw;IEP_;9GBQE%c+Pz{p7)QEHg-f5nV+*#lv^JY z#(GFnj!URR8$dFC*RrS7*hd0QwQodA{0d7xtJz}7U_kT=agC~9F}h;4FmY!whf?X= znOW-Ckr&7i4vDs)(@~68AN)ghUGOk*pIvkfIEKI0Qpngv6kWYDnZny|7neB_4EtBj z)EF35R3LQ~of}q8gJ7-&r@8zMmnl;Eg4mArdqM{Y=|3*b?5|8=@{ZV5>F24OOgpk; z)9!Q)@%(R87FYA$L{>UKvTCZu0=`Ph9aI^DC5UD7`NL?-Q&5OJ@_}W` zlppm09ov6-i$n-x-UVxg@FUaj>>v7tln@Glcwg_B%=dF4<=e>v9V#D>fIiMH_VL1` z@Y<7%U;JaA@yoR*oZT(BvdJ~5z^`x~90(c(lT=j%sQ-U8?gmgla3ukHy$3wGPjDvI zm`B&Sk@1O^PYeCc#)G)pjFRU_2Wo|3!6yb?5jqC;jBxVaZ+s>Y7{J>y^B=|*i3sgD zZN?rjO?c07PXn$UG2IaY-;FNVy51n14APuw$YpR6&Nv2-HIu9PLa7l8X(PaSDgLQ- z2>DV~WrZ2)iKS@;mf;7wepHH-F}nh|)`>EETG(H)K42!75Dv5BUe<|d$$u#n%tA*) z_*Gtrw1Fg=@vBRi$a;`(a#x2vN@h|@mP4}UL_;ltm#LoaVLJ|)Q9lYDXlAo>Hj$;w zx4rS4>8B?uJf70Oq_i)HK0f&Bv;%#97@IjG=6IlPw(*G7ETG{+ZgIV!FngO7gqwo4 zLx=gx8&6I0vVKhJ7;ignVWgeM;aPi_vE%4wHsd2RXy&`$Y)Q7ZOfC7YzE5qvAaq{c zCLVEp^HYh%9nJ(!s?pC*-YK_@3DV@wU$siBMQ#ZaHQQ9Kc+-MW56`iqYv2D1GcLm+ z07}$thh%c30rbukxY`W5JxHgL;k(J=e@`-}vaMUK11#8DlaQI(6eUG%)jr}bXfRjb z@k!J7;J!iAS&2+-7-agwZ!O9IRuUelww45KiE9vL-;&2plHT3(G`7x{26U|cY31kwHrdY)Bc{rAjV%lmYeEh+e28SclMwU8^2u5$_?qtELqD z=MaMZt#lb>D z8eE%#WKNy@!SDZp5_(b|+pa%Xf zPrPnI%hceZyBwck!^+zF=6+GRHW@sA@avD@#JS5AI`@Tvs0R*rVSPckK5Q zZm32}CL8a9+&CSj-^bw2~y!*IbkZM+kF^)1`jOj*MDYKCD4=QG`ap+tURZO5zSkjai=x%#sG|&)Fs)O{e@bL0t;LaL)#}CW4!J4 z+2x+iTY3_ynrg8qJpNhx8`inhq={$op3b|HUAaT9F{PrXGhk7d$;Ghb%%B1@fjgFP!JI zfww79$0rs0d&O!MERMmD9}oBX88AI;mC*jo|#S z$Ba@xCP!zbcmc*9{TmjqphL0PgyKy!A+`9@!$zI4uU}UmMq2@@Fg@xmQ)6r+n?Ko^ z-*}Nn8<2sJ0E)QJc^a{Q+(|Szj$ng(IAQjgPD_?dXLJ+4Q7}RLL*BK(m4y0v3vP&| z>=If?CF^x239&}$+==|StpCBZz4k)$3(*`bpf1CCN;oJ8l%?cyS%jFse1077nu$Ip zwLsKvuLfQi@z5QgasZ@xrxK!d08#7yFdax5jD%dZ!iFh+A5ms(ildz?=tC)W!@QsU z8|yHwFq9o460-|#35+cM=Y(571^k9K0bJR?P0o@-jqVVN5G<70$Q5RfS~a*AQ&Iv7TC6bTEnE|xrl1dp zTk4`ga*~Spow;!pV)8p5`2lP(spNph{=pS0z8( zg%Zg;3{T3h@QRi34WZc)-FLn1` zDL^MP=1>T}OkTo*sdAB-CpZ9io{Xl|%k4(9mtiSmP*{UBJFHGscJOIZ<>L%sf|6LF zlMOJnSXuAdmYd4@luy`&XzPfdN!T6Zm!p zOmwEcGI!5i>DASd2c<(;@zc}>stEe~Mb40Gb;r@3Yq`!C0k%Co@lho4Pt#e7_3W%7j!J#qud-z2*sI$?{b2X~_} zXvSD^uQ*Ir=`VSS6kuC{{f|Qd56ER_QrtPA(K}y%YN~9+C34VKzlPBCY~_v-Dj)%i zG}f#{8N|%HTza~qlbE8w;r0WpsIaLEro|+xyC^Ds&@WhqLhdWNS~&k$nOjJZnZZ(6 zxge%f^XxO^i8bo7`yG5T+q#I&9)3t-Uv+by#O6Rj7G;VloHOIEp7hX9lx2mEt6=j& zE4)eyWR{gcZ~&#=L`k8@h4<&n+MC*h+~5hQEiGIKnfnL5-l-WjnWn_2=p~$bZI99V z{Yt)#qCZuBXZ6PgB=&HGZ@P=9=orrI}p8 z*$%khBOg$XvzC9VC}In`{S#vnF3?Oem8hWWW(kyO3TC=h6SyubWy4xp$PZhzme|2^ z4<&F%=ipcvhl$RAA$&8b_YAb)_US6T|G7MMOzf? zqAc1t!B9vs2%ZUP$ou?Fb&P{oS)^%6N)s{=@VR zi~0524?BRY$DJ`yaMcRpbH)^$87B(Rbe*cPt>Nyxk&4VkcUP1UEuRqqA6f|ocJLJ4 z`GC^2>|AYCBx_tu&hjjT8$7voHu|H_Q-bLJF-5nl1kqgz_D6Yqiz9kSv^p^YACx=pP*b;UN@KK_#Vx-467VyW+J8f;W{2QFPzM%l`$)6|4_k z=lfybbpt+F4n4BJAx+6!a^QeJUJG-jr%y;jh9+! z@NNpfwF0skfNJ=-v;p?@PS*A%9bA5OI_v5$sh$;o5lm5LLW%4)E7@1|Vz)E)@G$f^ zsSj^uO;k7zD5Kl2wFotlN6^4(VneYT?!0Nf*+7+LCXisBZ1q_i$hLf~@Sn-p#D zD%i_H8p!gS44Cp;z3mDAH&2S-V0l$|I-tZ!lhOl{)ke~{fiNUS87lp4#3Y|8aZyu^ z%!^Seh}Q})b+icHlh};s_+AjbgEOpeTlouaVw6b*)LkEAbS}7$JYaVFrf{emW1(d7 zNMf&EzW5u_a!E%-nk}$NhkA|2ytu;2%T(V*>5+;VXg;HKNxV8Ujj-16LG3r*r;fW9 z#^F(rf+xNgdmqbir|KvEPX_GG^XWio*Kuh0oyEsMo=yZ>8T7JoatNVIIaSilZN^!9*um zQ}=NX3bNIw4M=L@O-vv3QcJE4LKi)lDW`3xrK*pCU#0H;h+lIVk>e(7KW0bqCymOIn$8laft zBn7lclZ73h2}DZ^hbYV=j#cFrimxdU-boslxRW0=H}&$2GkGQUpew$3x-{w-O zfkuzo3Aj>`Xez8Vysfeh${}Gm4f)c(KA|T#4cMKvi^79>wyyUCm$IlF|3&9=ts6Ko zGcVqt4M8HVxarDM?Yr=r6mGNzlj?gG8;a`%`Qlk~FjDLBJnO(!IB>~-{hx}y7jrRl zk?FvUL}Ik~n-}*IgdDkw)nn_#GGlw7X@b*bHoXK}3V7{bokuM=dIGDgU&{0zbY|wc z^bW^RLb3QxCpStsnfuxtqHx|f*Gdf}y8B5sDyt#DKBthZAd>jUz z-(sLO^V|?AOB3;52tk}LYtMFrq^p#KOiJuCPxLI&H3^FZhJH6>lq|T=*)j-Ih-a}` zZeKa4_Jlp970VVPelT*Y*}htE8Abo(*h9d@_(!>Ftnj*jVE#OmB%dzjEuYG3oLsf! z*?zJWAO4kt8ehJQYdJZRMvfjaU-@6lWGbksDKP`Lg**0eqh^XSyacuFG7jkPU?r6W zvMtJa3ys6Aor%bx5>%f&!^+7qU2d6D72MY7?&jlx-6lNPchNJF;Jc1N!g`l& zLz1F1XkK?mR%*j)>X(_@7iS&r=-IO=(`0|PmZl1cBzz{8;wQCm6F5yJ3%Eb2R0KO> zv?WTq@t0-Q?2A9)4)eWZFt<;B5iYF(kS3w@Gurau+1{J`;`!@w)K&(*^63wUS901P zf`L7IxK3~t-~v1!GJU`|L8$8ei%o4Gl{ulkD2R@Y42?w*mmF5MmUeh1Yul~MSSi1p z&1C|b;E4bOms?ACfztu~98}kQ+NvMuIXP92m4atw^HJH&TGEn=TTrB@AugThG_BQ za(1T#D$MEn22-lo`J%J-Tg`re18QZel*x^Rism595~d>2U;MxqOr#H`eF0`G2HC-l z6~mYqgLt3{I4>Pv|1Px3n0#Z~-ZL6k1%3UJMl|3pui$|VPhF`zWHIP}`a6@jix8Xx z^Gxle@{X@-@xlfnP{-sz3Nw^h|J`V0rouIp0G-X%c$c7AAW^^3)uupU=Jk(q(088> z@kx@9)PZ!pPV`n>a3xoTK#+2z;giy>4x{^_7N$>(u{iFWJXhh3puG8p%K-`7*&Bk1 zP4XvS=4d+Z?Irw{&Fy5;+1z^i{sROt8+OD1Bx2F%vEK#v4?oM<@4d7?G11E)VypG_ z>%&a8KB1bgVu9%Y=ta^T9Q){xUNAsCos~exCl_5Y>xLdA&V?s(KqO#dIj^0cKHM&&1F*?SMacjhuG)foUi;iTMiR0PeUpuC>Q#i#%VzLyD%`R`hW!@YdIFh599Jo^+=Q1nfTZCz$!`O3u?1t`L z1cB&mG0%kbIsd&+9QQ>-k*|{86)wgTP28e%mZ2x_XzC?WNhh^1t`dLoN)_nSCyM=} zDBc7!*oZ7Va#^Pik>+erI1}|B1!sg{zhJvyO#e3p1WMbU5+88G_h-UxAtsD(zf%#d z`TjZk`#ZN6Np&`-+@u&Z)!4}KIe4{EoAHNIJYt}=>6(@E8kmo=D;~7Q?Bif^{YP*r#`QR zEC{bSGH!1*-po_-O^4=LpAvX_JhGbP*q!wknZ{>eu~7B17vV;vn+7}Coc`Zu))cP& zfL}h!*NrVN7!)G&{B+5ahq4SQWj2#zm)hd9IKA^T-b;q_QR&GMWOse?OgB_Xt{g9M zb*Iu5^{=u=Ap*Fsvo`fb8vd*}Rlh(nK_>E`r>fvhMU+M=sN+|x4qOdibJCyVOS)n? zC4he`uSrKz@xjAR|93uYa0f$UNQB$X2emB78hWmysRN?yRrfTV0zx`}qDU=lJ2pVoBFQ7~LHhnuG`cDTL)%+!xN(Lzkbj7F< z%m{2qvL5AU{V^F(gignz5J>}^^LpSo)WlgDbR5;L4rjFVQ3+fDqNhmsuIahv0-VxT zX?p|C|6oRkSb0K`GbdLdW<)c~X@)|6hZ%^+FJ3oyW9Id?@ot zNVNcSW)S^7`yYEh;WvgN0}}ka6aEskk(@<=m}Ic^v4hK&M~`vgjenWnh-rkJy3D-$$Wm~4oBAA!Zik- z-powWzE6G72(YQpn`z1p*g;MRu(1c8I8CpjZvqL%_&5`3PV+yN z;^kIK4?t@7ybCk2MP_$O@wc@_wu#agPHz&Gq$(wYeEh()BP5Bs#_o zp@Uc6Ki=z4I$Yk9r2Kf(JyF07-BbGXUxuYeQMbr1bK#ePmym>7z!#!}&rwYv_vL7v z()bLJCVH7bU};W!xC=MY+a64>P^6< zMy{ABeVen5h00K{m*+fl?DeElZf3;v{`uW|h9p-{6^F_VoGb5tnsI4?c^zW0a}le) zaK}mdUt80{ei3n_+_lCLPsw1R2+np@@CsolS3j6V1R2L;?`YlLmSwtsvnp(*eSrK# zouFT?F(l-Z0k)JnO%?I&QFthfoQlUlz0ut zPn&LCS~MxLwdVPt^>O3V%-QU$>zlu{1Ys|S)s3|F)>pB?x-5$CdBU9EfCY?yVzH#_ zl4t{^V00vi2}%%!fA`2M+T;Dc$-cpK8T)q|LOg2Jl%eUTHTgH;)edja&+K-uCLak| zteD9)PHZPgSyPmzn*s$XmxMgOl(@9?h&P;BUkUjnsDDU)9nVz$x$<^K%>ys`^S`Hs zTZ=2xk8%=E+{;*PyyBdw*`N*`$HA~re!>o9|HX86uruo0ZYn$u&`sZJD)lO4 zt0I$0g4E!&&v(VjYs*B*d`V~RjA4s3Vfd%`gN@d~Qo3U(|6bdV8x&LRd6Br?Y_bC0 z*LTv_fj$Y?3F7ezt7F)$h8yOUUB)UrmxfhyZnhpT2?w2&X|0<$2#yN%QSEuX`dR&h zON7Z|RLH1-j>05I;?^)>WwHa6pxv-TEqQoo*eKgV=Dt& zAEN}PU4LQ{Ms&3;Y$Qb2O!G;YscjgR`Mmq@-FHF{xXT*NV*P&(uiVS?lcRPoF|a8(jkKiGe=<`;)~d18iWopqUcL0B%|NC#MW~6v%xjZ8-|EhAlu- z*kh&C<&WY$i1hecHoPr}yXP^aMGiBpZBU~T#4W?5&-h3+_>QE8Z_4h`y37jfwd?Pw zRR;I(SD@uddu7*?J$bSM<5IB5AiHSFisft6e41ucPMV8Htr~b*jwek9gd%yVOYOfL z4Kl!8{s{c{*faL{?zl|jNFm8+kUhBPCTd*_@$@T?Csqllec0&X-t+TVC1_r ztBqKzML~C_w|~^NCQHLJG*2-5Mi}BL$(^LW=P@z|)7&BXR47nz@%hpL@t;4%CcCNI zBIm@jZWf&|Cw`;Ar{K@1W*?F_7{drpWTXM332T`RP-JAm7vxAtl zYN8j2BBjdX1hQv|c?Rj_FVEr|KNGe1O{18<)htshn`uk!IXSnkCPly+<-wz*&T7Z> z4Pr9nn((;~H-R8_25bO9T(+toYyuV(70V%><Txr+vFDlZTdv%8E%$FQ`235|wEk7z=k65rd@s*}GQy8T=A ztOk3(mCwnQH(zk{v4521`4%IgNVx?QV)qHquc?xWiWM7}9nq*#o3P~()DZk-E?4EF~|!E10ym4{f7$w&x{dH^5*5zw={(r zJDeaEo?lu6={MRIc7u)lk|(P#@1uK?9u8?Qo8Mlfga``yf5)3RG4N8a5Scvu#=kcG z6c;txEW&nPbn7`R_1*?>Gw={%5yY zQt%QD!l1{u(K`WK)Jo>Y6rk5%C<3Fi%i0gq6yO8+TH{tT@<9wAuO4>3sBBf{xHB}7 z#%!mw!mF?@nrocVtU^_Wb}OmX*|JM^K_@?}Cza`M(UPQ1Q~~z+M_1}bo16~u*!Tea zgW>C?G(4pbZq*|JT?N0n{FP0@8q|w=47JQ08w&nIp zf|jaBbgQ}biSidMQC@IVx9x-!{e`rDyX|xGC9^6yssV`2c(7fl#3%F1A-mg#WATl+ zP5p=m!Mt`}-W-3*C|c(Znd{ldKx(0ckp{HaiSfX!*S8y{3e3yDW6V5J^Gs&8NLx*s{&sNF2{V}n!h0uLrM7B3I|30$ zpDJJ699PM27_w&sC(ZbWFa+Ov=~p8C^WE3#WK@@|!exu=iuI0IGQ4msNY=Un~eppFc{n7IHizjC9#XKlJ9cu0T+0wYCK$MZVgxZZsgeD{6Z7mMJ<$wzHC zIS#44tla|&B#jJ%rFQv;;Or@dQVi)M=@3=ze{l}e2S`L7MiIH~E7vh!ryqWh_2_&wIl z_kFIVCrvBLR=s)7`dWPBVl~(p|8W9#|lY|03|gW*h?^0;{{ zaf|Ht&65lRIl1eJleH>7`b8eDJwev`(e3Y#yKEeYdSBjAM%4AqM(-J{Cf~k82Z*dE z7-?`FAu|xB)TQChbVXN^L6}zn(jPo}VBJ5Yh!;awa z(}&s?66v+GFM3Y8znXg-6cdIFrgMx7tMOaxN#rSvYXDQJq6GMx&FeB$tpM3=B`WN1DA4R(FmhSApZTbKC3ON|yH2CI%U+H!UX@>L(hQ-u?NP>?IS|8MUI0%8|i#7ci z432Z}#SB4$+oCn901GRD|2qNf>tZe5cC19c`gn@?ha{5s#Wy-QycxUCz=p!CfAdvL z^@YzIJpnc<;u8*^S5?iK8mi#Zlv4k74k%KVIhwS4_UdN&5)a;y70le0n!fXPYRhJ> zXiO%VR2Na$w9qK5V}yooVH!0H+^CxcQkyN~fiQ6{QPt_0AY1dn%a@v4%u42uMFd+y z!FBHnNJ6oZv0_zVAm6lgM^TBqTy5I8H$~H_74Y)!0`%%BGHz}d z+{^ho2Xu!le@+6wmfcG!+xl?`^W_4lbC_c{1H-u5VsXCY(Xhd_*neKjv=7C?g>q~T zuL?1eM>03jLDfxB&b!N++WQ{Al!tDi(m|#J>RWhDsbTf$x6hEmm~a)q`3 zMXvE$Y9Pq(`rBf;+Y&BKfG0;oKx%Tjc;TwU`MI#!!RwpAbD~?YkwCFXGrRVzJDYSY849!4>+aC zVl(V6Knp@1VPDrh(sLwj(d-~#u6T$Z{KGq`_=4pO7Y)Rb2M{yV@n6_rQvxm!?6whN z%nPUh7kGz71ImDWg|pJuClA3yvgcJ5prnQPP7uPn!T;hK*kW~qO&U&{Y-$`<1lW09 z@UmqlbUt=5?vIBE*4*t*4k(>YF?+Pr@M3+eewMcjfaLIPuAK7WR;j}}$ZpD5+3CI7 zSy>RnAE<>xUrGjv*N!^deG;HR9dQ>m%pM<*SmyUhvN8NU_#D%_V1Ws`=t2Xk&wKVB z~%ihKWypQQ5Y5aGyARwT^Jrj^0}xTh^$a72r33D8@{8M3?CT zJeU?`s+8E{H>BiLQ9|&`P#e{tIAErZ3DVjJS^cJi;8HN^%pdbD{g~|nY9%TebVf+w z{OdTnek&*e;(6}<^Q%j?m0pL_6RSz!44U$-xAGo#u(k0u?s=)GTa{r|!%IwV^{QHy zffNmIh)lJ3)UOGu9^z>6A`kH`nwGKWztTRobkQYmJrcCOqLIlkywI4ZkT(1i9<|^u zyTBc(^ScV?`FM+ZB@|nC`g#2-iLkQP;g^0i3iqcv9pQROmgvPj_>U~k5 zeUInfDsbz`(@#Oc6H$SFb{>vQju#K z{MPoAck2?ehap{o#`(VR)58xtdjW z@jvTW_wlg7a*=!5sO;X7>!Qkq@+vR5Yo<8qhlYQo6_^F`ZckIN?954UXegJu4umFp=l{>L<0wOx*y4k5JQa_iq38rATzmFSjE&#fK4an2A#~g=R|87C z<+c&?De0<=f1^&krj0zudp%Hj5Sld0X$#D!A2#p#G1( zON(u3&*8DA<6i9!rbYIxeCs2Qg#(Z3oLaXr)v*TumDh6I3tZkeb{Pu5Ox31ms2H%K z2l@$yPvKL?aiG|LHq(bG=>RK6=tT`CRwmq{x}@CFRI=0895~4U!?CZp!}AHx5yZz; zF7_3J9*ud^*0P21F5apxxN0}o-Tb+yGeRG%=r=zwIhGeyn=PyoHwCBP z{b(`X`i8ncY(wUndFD{U#c#&_fZ0>%@7+W*?!W{7U)&!1--)`@pO4rIKc-7YLNQI+ z8P1bnucLtJQW=9Ag&XT5E_0CCFhlYjWWo8MD~{PVRXAUr<%$*9a`0ondshSd_7~@% zua@5(V6!be@E6G%$*2nRM&q@!bu(lc-I8{GDq67jHSd4dDRUI*KULlwq0S=LQ4|&( zp7pfKOJBP%-LwlK)yb7e(fdXQ(?UZj?@5F?&-GWx_8G^iWWoets070a;Eew}k=krf z-Ua-5XSj<}FtzNmBeRK8Br!4@YKJ(F>1<|qsrC!T0ggI)<#KUsLrk_p$|W5x;M&!{LXUOtr+K>7(1Sj@ce=%4lVTQi!Q|v(xMh&tt7TsBgVT-A>2MoKD7UE?fMlnY|MG@VvwHl&zp5Bw9_m07h&}GcdiMHgnuT;CvDo>NX>AIlA zbOdqn*2Ug~QVouMsyN(z{JpGrXO}#@L=o11I0b{a2|qiwvgjE{GoBRu9kGV(5CbC+ zZ$3ax<=`cpn(z_4NjeC=xr$5=_lf-kJEA9XdXujoPB!`d;*AMt!XWk#jnm8-XBH{^ zxYz^d>$NrLnSb&MZQ{2f>r83=rXtc47TZHUmo`IlC^p$?>zjnsL|y(rJ1J<&L+s*k z4guU4dq|%`{EG}2g?ji5vXz>+;>UF!AMUcHouS)3YH&_0toB zNtNaib7wJeOdC!UU56ylb&qL0X8DHJ#IP)gPG`N&>UdPA`AnX9FgHe6+I<=+6%lL} z+2q6qg@*>b!-^gaSZ)vvU+9Gc>^QhGPjY|tF^0(m;G;7#kO{Ve(%yed|o3Sy9j|9UKP zA$HhwQUYihy`3h~b$j?&mfv0kzRSUMP2fBM(r#LFvw00GPP`9^Yu7(TzH7RJK268z za);{I_)){>fJay8Y!l>Ko4tlCAdH@T(Tf4fkbIgWhd4752u?x z5))a{Bo=emS?Jta7lj%UI~X`|`zlRx4yC521giIl<0|UbZ-}<+afTT7f6m(@;J)i* zUivp~__Pr{#U9um)1Q*}!zF*6;dy|?=S3YT%+m{xABezzoEK9m_T*1}K|TM;(sQjn zrf9_Ji$0Qk#SZfn>o5};3!c}fHgt&s;jML4;Dni7vYhAt6=YK8Q_fjV1NO22w$8TBihUw7+pg+Tx1nZN-1~qHUxq4cuxSIdMc+#is?veo{B(lW4MV*w{-2Ns}X#0m)4K4rW6LyU; zch*0Q$=s4lkNv5KL?jUgY!z3D>Ti$VkJ+ifulGYu4|Dily|~RDtd@prDVu5WOutWd zq(uL^mFnvIzl;BUdK^&YP|YTif*iW!k0NsT*(Wz_G!!>%ddnK@tT^HjBz~S0?joEN z#4e$a&BTv8DU{gezxK?up}dlI#~`Hp(OnQTnTS8 zji8}eDF42#1R*$;z;2N8F~2>(Vyu~)uF=D^cCwMQzO!&5<|! zoA3ftG$+~pJsle-^pCWZ^BtbX@G9oKNrhkmmG`KoSk^FTOF$Qc8f}LKufY0 zl7-zEgy`1_Vhwq}dOrz<^$_f~5q0oEj+|&G)&szeT;Jf$G9E|jdn*K=1={JBQZ>2~ zapM-W&1ssSL;g^r5q%pO8`&_11Kvvu4Ktp_*@nR@mp~-XLnlUijM{*c?e~7d_I;BH^#}HS$F~@-PHA0j5}ByLF9u?4RB+%|8xBtsw0o;}CJZ z%sHH`Y-nBYl6r7=O!ESeQ6gQm77L#HjCH5|8F3RbP+J>aNvfy79%Ttu^U4gK94uVL zUn2Pdhf2~jUO!qMXTT}`k)EmNp96PfMxq-(IB#+t`WVdVZx$19p^DdtWu!8cn#(ji z?;C)oGgTM2#{#D)Hxvns*uhfM{#sZdqp`rJK8Y=OU4kNL3;ye` zS;~~`BU$n>w5^Ja)(l9%Aa59rdR!Eb18XB?uIR>%r#T4VRFU{fK!8q0_xGj>62OXc zC`B2`b2lKs^6|b-YAbZ1ydrnt^JuM8(G;Ge#%b;qyOY1{?<|j1uo>DsA_CM4@Ydei zxyF1RWa!(qGZR!-i~glGpxhgwBlFJ^Rz9ffsASuLt+Bf!a*O7zGSz&eCYfrERl;yc zIE7OnKBz**dFC}dufCD~sjW?_y>@%0km8QR?C7+$p#f}f&{B7+G%0@&6JWD<`Kgjb zl}ndpDI;=D$AdXL2c{kBjQCz~Z?k3Xp9p}IhJFD6k2c_SgC%QE5N~1y;uk zc!DT%7lbD8gLsiz6I{iF&(`BhF*&owMvt7+w~v#v(Hbjs&mf@OQmE%nN=3$t)9jx% zIO$)BE2gKLeq0=cG z+e|2C9EyO|FOzyRzRe$D`XThzUC6}G9f9xs&dO0whJ1_TxJ-N#C0Frr%&o}=-b&ti zqMs22u^3~yu;$tO?SAkC?*aFH^qN76E~PBCu3EZ%^?uEdr=ZbhG%>P17Pyj7EDJG^ zkg>NWf+Ohs?aRe8r0FDq$1h?6(A?sAV8*6CyiA`46x z;LdBJ5#96@FyQ^WfR}vIa?WwOutv@a2#H!jl99AYa0nq}R(`S@2g6n+-kyG~31KK$ zIa7|sqJ@4_LtI16-I=|KABf!k{`cQs19+Gb1*wJN0C}GkULkt+oda$%lUWIFBmclS z2mHpr18xJ%kuGIv5Am>bb@3e&J;e?9z%vcx-^^BNhG*Y(!~I04{efyEa7#~FE@D%F ztb-Ky6AiS+%sTe2J!*XQ1l*-;imk$GPV#0b!n2Dg$ODP+NkM)KyhW7J{$2J)Kh4HYgjq&rJOZ^l-xWYaF@RdUz2Dv@?;Vib#sA&!lSY+k;N>L** z9Y&zZRLO_51_+H4r&_5{XZ^gJ^xdH01%;dBTf+ZtX9G{(9IVC5%Sf0m90Lm!TxLDK z-mb*L$(a}DuN5QeY)SiRfwd#`k!wuQO}LzGlG--GwDFriY_sRyp)`s|DSkAVFDBOx zUxJv(n`lhQ9TjAUXfgh7Q1M~?@FR40k65EMs>3|EN~vDSd_kJY1OJ76WKD*_Q{*|~ zQ5`P>DnV_t9~sMhS1<~LFPN<3bY`5bl(=KBFd-T8o*_D8+agx3u;tH;sp>tDPtJ5V zsX}IIu@qHK$%PXkI{LV!sa3SCfYKNgC1u!k0b6RGr#^vSOOMX3nCTqbn@aNgFt*Br zA*gJ?6+Ex~8m=?<2*ZBKuk6emGi?|T&HAjOOa=TX)PEqcZ+^?Gz}#8W?2*8+-kwMd zW+SXOh%YgtGOnLzGCQpUcW}0}y2d(io+kNVc7QF!-}@;O*OzELQJx4|62gvDvT(pQ zIx4`LnmLI&Hg1ryF45PDJz54}Wy-v$m~jmHv@I99X1h9nV@`(^2*CD{04~4qDy5L` z=Gp+iJ*D#7;4pV86bP@q__^Fjw2+6io=nH2Jj*H?B|F7afWA~aio*tb0Rm?BOke9y z1;08WxcF=8YaFv=iP!gaY_aR;8cxmv4m7Y;Tu?UwGQposJySm5p+}U1p7rqCb*JYs z_b%0hYa`G{o6hw7_$uB%UJux;Pzv;(5g{$I$t7|Fl)eE!4b|C+AZ-IpA0{jgRH zAoG&afTXeaf>T+j(O3}vY*q{*Xa>$3`8LOOXZ&HsI;6y4c`+xm(=V`$li}J&)TQ^` z2MiGm_x5`b1PwyrAbQq*3)}H{Xpnh*PPc@OV4Z4nCno=W4*%<2aJoJ|mVfh}FX@vQ z;vEy{s2MvuqN<_ub5n)~Hvcs?KyUD98Ot)<;6%S(KKtX(ec}-Pa_OXZdYPq&iv=X2 zK0(yGnc>S-ByTY1ktAxHAjq3^d64n)0PTrXU^3jn@N>|SQ>enDKYj`#i_GT_v0vsu z0|8tWpT7onq;1lG%3d~KXF>j?%>kYIi@!S0Zd=+a(txdgLO6F~Sga)iY06L1hY?q@ zN|L~6!ocBnWSO|+Q3!ld;WsPleOf@(Bn_%%{VyFS0&HT!&jA_T`xR|ZkP*@g)i}N_ z-Wx3Mp5 zVLE`h;rShba~l6iC>9STPA|UeZ|tp3kVs_@h>Ud{U$N7q__)5Wms5Egc4n|V$+bmS zAg*1DAOepjo&7m14KBnhMEu@6{_8UXNb%$HSQSza>S&KLs3(=a_4JXvDeobP=!WmD z2O9%|5YzFOKlCKk!`$VzxGwsbL@5RZU#R(UV*(0rnXS{)Z@{ zxsdon7H_Zu4E%WWexvR;Zm_m{0=om%&isHO!HfqD;ik%ALBU0L;?0+4Tk8w&n@KlVGjYHj zwvGsa&^s|@c(IhStGKhHgybnwJ3O%D0@p~A9 zMEw$$$Rpi~_=drxQYI6mEPd@ggt0EUCWPcj`t<)*cIM$w{@?$f8DrnKjC~(un;}`U zX3t2Lti>REMM;ruW+IF&5o4Da6p@|C*yC+agfQtHS<2d2hwt6{`dq*NfA@9&asM&b z>)hAtKG*BK=6N3Hb)qlWf40pzrQ74x-v|A}G5xH(SMKNTc=BMoZlw(UKY=eNDr&Kj1jdc7CrTPYDz|0x`6Nmh4E7|qT{`7H>l~ASII!!D7X zWIWZ~&o+-edi`c~GK6kR8NC?vk=~t;I*j@ zfKdVnJ!89ry8WH2-=B3}u!}T;?~33puz$LC5oOA+ioMO^MXq*h7jRtd35*pRKe|S7 z1Q{n>LNpArJ@=~bD?}ta`!m=t_h_S5Tm*qWc{C2tpepvBl5dL)m6C5aHIYR^2N2tC zHIbS_xA+RZW4-c+Y?BQ-dH>!cMJ@$sj`I?hw~sV_fKlT1FC#}lePP`f(Z2EU;DE_amL)n?`YD%Lvn`c1G+kaL(s9G0dFp_EYN$fbFp;3=g0()7EgAUPng1<O7I;Q z%aRoUv-of7JMxD+YotBuZ4>9X|4NWp^s3OsN)IZeXz@Zd7ovLd@c9<)-|!?w(a2Gh zSYj5~bCFf!uUe2uKaC&cTs-jb1|)@&%2IZ%I#&EV!n$ORdqlS5#Wqd$moz)JaGjXr zeX?+8Uyl%<&gW%*^Cdgc^;R@)j`yKl zkQCf`Qn?3_%~nSDRc{%sMVAT>Z3my2!D93f?Ght*HZ4lu96YLCKciyeqYrCA&0w>m z2T?Z1%F*7Q#iX{RTR(Xj{;^{_OS(6p<9F2x?ns-OU#$NN@9i+gAs_qn^&v@})Z`l_ z)+eNLMDOwLuqX>`G4@!Ozahi1a@fV7J?8oH;zJjU{%Nr(xYt#$DgBBR-+9)mOW3t| z4@H$q!=yh0H6r*w7)!Bs^K}-EG!u$__tleNeZ1tW;)=LUl=JS z5Qv-E+{nNVNjkoVrtI2N4sS_3%lt8%XoK3HuB*kxFg3f0GHQSCUN??Lv*K-2KkOkuYp zwXWl~DfKAu^>ASqcZthYiF==|#1~8fxw**o60P{h6BZ$S!sB^K@^LM55Ffm|1bo1^ zRjRPn9t@t6a4AYa~+yG zM!NpscqwRvt>J(k*t&K~aqn!$_||Zw?}%g)1#;1~86SY%nUa{$Ql`rTx+9Mq>8SjM z>#&VF1`U=oe00?XaI`1yO&gj)U4n{I9nw;oT|6{DAkkQk_-&$RWBZ}>H_o%WeGEB@ zEvNcW5;@qALhQ8Cek%7{>EG082w8xjF5W4geH(5au2gg5r`Y8~{y=}uF^z@l((Pl1^>&YG|? ztSv&q8s;QuySoKOE5TKERnR^~QZdKx72&)TSJbPFIHbqVS@AZv4xYGVZ3jx9yJ4F{ zyfH{2X&u>e7IlqM2z5=DzL%7|4AEiqpKjc7-?Yj4O8cT9-Xr>+XlLm^YxxguM4czufmV3*cjN#Z^fy1^p>o1NzsrD|EbnT9h83xZ5iomeJ4(QE| zLSc!Wjr&EVKCq^dRhruV`4(~4GLvf=hU_*j0#LlH!=ALk7ZG$aKv;f zX?qH~*FEVF(lZFv7rbfk_g%vXjiXN@5PTI>hXdoufX8&R9xn!3Ca()6IqT6LaoG#c zC@}nb2ij|~n_S=>r)J%KjXSt=mpu`8?Y6U^oOXQ0Om@%GmHSZfmp(JC%GvAkpx4mr*j-Qr<3i@K2nMbmp?ngR= z(=GS|WGz`m;B_G=lHSJG`D5YPbL%qeZ2S(hT(xL9prw7)2bk(g1=5-f~)JL7q$ zYNIf~C-uDuVdP6y|2z>|;qJA4z@))-P(Q|cXaLGPzrM;8j2$PmMY-G%|K}RQqE_Y; ztBz2ek8fpGd01xazbP3Pl8xU;_U6Y3InuS}IC)K{qfFZ6VgZ-t0Mf<`hido^a1)IT zUK3>7)8Qa8TKNyc<2+&6Ri4h`fnlxb&X02_pA|#_dz`yO)my%fgV;Z{g*v+j!zaAI zcX>=UxOY~ZP&C{QHuVm05QP#NCqs0TU@I^!`AUsV6NMUjOphtr3OvQ%AXUi6Gfz%;DU3I z!}NDq4x>`Kj4~Hu%?)^WOnY=6H6z1^S}4z>yk0j>b7I^ET3h>sh6MQqrFu`^B8R_k zx1ukvX@tU03wk~sdDL-l(!*Y;-g-Hmo50QFG+7;~b*8Dp=f#~wX- ze6IL7@6e%3`LyA_9?`vzy><^r8`WnN>GqQnX}S?Dl54qrT^WF5AGN^O5w1H7Tdjlz zwGz&F7rUt_3*)s5WM9-gllachXu}A>^Zur0gPUjM5NHvQX%aMp7I8?MfL;*F^?`=u zXCD4YUG8_(DB*OBA}S~ zlq=?#=@==r3tvelP2xC<`^$Vo#1dw|n@joNHSO{L`=;>%e@F`i6BzCqDhKu3YvuD0tIXzMNE>mTOi={=VA>-0%C zjKYS+RE8sK{W`g*ysXQwT4ILsgv-mroQKALCx6HSN(`E@fJL4#?l1i5L|KMjvTf3q z8Z<%UCM1tZN;{(OTyd`uYIa; zJS*%G!X>UWzd=HF1wB$0#~3z1ZBj&z8~>(Ny6J56q8lYaK7+}2E+(fGO8D=Y-iYxV>?X&>p*(BR*Hztp7X!g`!1Q0V!H zW{xJkm*+Azf^CE5#?y=;C*DsOYVAd5rDYB#vMK7;Y8t7@mDT?eWGldFzZl8>sjH2k zPCDaJnsVQZX&w(q?H3l`7uv5Z*~Z1#&hJ7m(daD%gtdZbbS=M^t! z_i&Yf6p?*IAgAoGr$#}HE!zxmT)lwf`Q?v^?8td%WxhE^O%+}Z7TXWsE(vn`%7gm0 zb(wry5A>}M)0T|D7ik>uVTn=qw~lU%N$%J?_;OXm$y)uwPsGtwC&(XVO3Rw0Ter(q zYo_7dMH9`LOe8?DVoMDmSvfb{q7$A|s*%1TM4|GzGR6?O8aI*gNz)S685vGSBI9b9 zG7o#LW|=T99>B33X$+*LU`52@k2?#D5pqPu^A{)hnmFowtbGRqM5WVa(^0qCQIYv@ zWRmg$TQBderCi$rphciSi(d$PwIryNF`mOn&shS_2kGJ=2PKgty^t}DD>c!O4tf#3 z;AWG6ThnRrec~sX1B3@|ZbtYM~9V*K=NId3<{7u~MF zMAANBuNR4Vpw!emr!QT)tte-8(;O(*BlLv)74#(l7wuXLlRDnggry5h8KrxXSV{K! zTnXMvly(sM4|?AK+9>sB2llNZj50QL-e)_1o&kS!egnGgr} zo#$B9T%*}+dEgC@w(P!6T4 z-1`OggOGNMxs!RIu;U`vxpnDj@Cs=CTurhGSrAz&Q-ZX{bnFKWDfVoH*%X{`mea5C zyUfR(i{!#fVuZocbc5M&vfs5clNY)f4R6pZZQrHuODgD1Pm6~vnw2}l?A~{txxulKVt3Lb)knp`mRRe}$FY{jH&|UzsCTUgE!eeJv4AA;!Pbxr^konbN@KdRnfAI%=-pVPFls#t zSTZ*X)1Obkuy&rc(Fvti41|HlL>bR9Ffn5@hV9o83I4V5n7P+uGEDgAScrqiMzVJxPdIqqu(?dpSNHNZBxhyy zSy{>pXSNk3_`{n#bkEcihxWRMww90I(DVKs-&w}0M#FJ>%fM^x27ynTSWR*;qS&ya z<>Ei;vfh}S1aG?f2yB76s|K$ITLRPG zQL8ps@}ymEnSmO76g)GkIpg_@1?^VSQshvA^+7nDXXok~Y6d1xg!o|&E|S#3P|mej zI~a`_Abr!!iy1L$Rh#?Q1Rb4v^+?ZS;tZ;X*7~NKPCdDDvsU$Wh5D60;CaExDbj4w z6x}@ME~UmL*E1CSlck&%*6F1y%R0-TbA<|h%(x|)6Xr{me0@u4cr`4;YZ;0DSHdaD z3`w(D{5Ku_m1F_FCh{RxcGrXw>~8<;;1V&R^TiA85R~m+mhj>s3%pn8Cjm2G!1f^@yq_)pa^2Z#jC90OpME#|RB=Wu*y!8h+ znUj-0!hkfBCv~e zY!FIkM&cL5I(xvg@CtnFiGZIjKy~}Lp-z@hImtRj7vt`TB%503FqGNBh$78;?|j^vi=(p7!(*L_by2k+m6JM-x@WgQ|^;P zqN=tj0t=Z4jxH;DRMiL-Std;t8kFLT@~WpObTETn5^IaFgXW z{T}H8|BQBc+o7CSv>fr_gY}hgv^Pan&{jRzo+3G3uLpEg<(47x9fE2*vA1S zyrG7)j-5YfFwvPgTeSb^Tg5ut$nWZsbI<@Dvx&NcZeZYU*!QID+U9nQ8XD<}-^hRn zx(ir792Rl7SywpK7gTj*EfeJuSR-gs>Gtl>McxnP^L@(uo<&{%T=B+PZXtEE5m&ee i|9?~T|NkIfbE5a&(%K^?rN|ouT;|4Cjow~HsI7yv+v^-JCpP!8wg3RUHtVvjUFdm|OTQ1%UBNFQ@u4Eb%^a8~3Ka8xP1n|5qGY909y`NG zbb?vfbQ2qNexC#m+zz}})~zY!#0&WT^jp!kH27dXn4g$`LBDu;dT+#hxGDL5_OkkX z5zmT*-J6+j`26xyjGfprWK;_zdI=2VTmR~td+l4eA^PexTFh&Uc<7njgG>8(@Ot~? z|5Xq^{`FYDM zzu{Bx0xMuG>8mQJ>%;Z);LBg)Ukkn<)|;vBr=$CuKVMs5{hnsoKt1*GUd55%cOlYV zVDG))#mg?v%}&8i-6q)a`9RK_Y3!aN-y)6WKZDhO>|Y!K?KiIXJO?p3^#twbB)kK^ zQmbBNIr3VUWMAI_U!!Ty;W`bIb)8qUe;2p=O3FP-dv{((Q@W62nOja zxrZLmKQ<6p*%Xf0-ta3Fq5f1b<2L9o(UXZ+jxPuv_}AwP;{rKDNEHt@VcsX zRfQFguFQ(_Lc!RyYt_b?kWJC?2(2qa*>Y}@yQ6{WnXiMxzZ2ura0zzEF)IWxu@)Qq zHa15v=(+`&n!2{#+IY^b^Rl&FpPSV&)tMM|+tpdS^;VAQ%93~iyEvAKY;R1f+VG8v zS(X#M*qr+A&eel|u~2-zcjvP`IYHc{Q0g>RDzUrSl z9WLtcR@^<|yx0A!$!)+_q-=3}ln;s5RjGVSH4v_%QpIXz6 z%UY>}S%+Nv8$nfQ79%rR~ON6(HwYBqd^7v^z(zlopf^Soq%x|V_RQZ1+W zVz1|=(s9_M=x#}9;Pvju(TjFPc#*eD{J`_nlvx_nk|(B(T%`vxZgY6)<5zX+ zE?Uf1-W;kKdXE&|x!t$j#!K-d9MNI#DhPox_{6Pb;p+D+=3vzo+{x}?JxB-P_3ebp z-*&qh9UIF57Hk+;*~Q2m%SY_Blorpgd)WEY=xYY2fQB290XB&mM$BI8Uxl0f5nu{R z2+?aiG?7iJja^L=m7zm`iUw=75;g;am)keKI9JGFqt#A-#z?B%=k|(mI&6*nnaaGC zMQui|vSzf|8rx}e{7@r<3PA<@gTqnJWd zv_^7>Ysc;F@<&`qcI~riIHnNfAp~e;c zf$gteeoeqSLvZhX%?4k(4z0!u+u!@7Oz+l%g7Ik9?5;WCE=6bTn4S4S1~10=Bc$hk zx-dCE=mxLo&tIdhULn0$)<%#++MSE+jIXl(5w;BM!4Wq|zDu`HXc+@cxhY(RU1trR zlX?s5bg_y|+|#&sGL}U@P^lgWf#;t~nOz|~ys}t*N`eI4r4A5p%TqWn52YS*IDV0FD={tmfj+_hsAOVk)V zh2_}pUy1<;0whZAmB>XrV8!NJc2C7x+!sHZ(NMvsLOiW_--4BsR(u;5C{Z0h!`0sR z|6Yjsx$*O3(Yr}PX?VAo#-MnZugl^YirJ8 zc#Vk}9}wE_j`q+-^ft<4#;i|Vk9&)YT!~aZ(O>bq(v2d?jm3+ua1|J?jHJZ zb(C?IQSJ?8cX0T~pb?7MysBATfs<0SV+1CaFmvKv(4~nmkET%mf#dC?Yncdn5b~i_ zooX!;wz%|)Nd2*i0r?Br(pYAah^j4#n29~Yxw-g!AYinj5iI1agg3Q(5R?iFUtAw- zI^^fV^daB(Zis8wJ!;LtPs)P|qV)Y>oQ=W>8HM?WFt=$CCu*cLQIw=%BY0Vn-&?}o z`yPMW_ds&*%#@$u(!Z$394KB_9XrpQMv|5{MR5>!28<6;NG8Eh9(qBM8AlQd%vybT zu!z}=gisn5tO!)KZ*|lwz^$n4^b13NS0%+q`*kQTqpb!Hk8j$AOwoyt&86Y}L1LdZ zBO5%Dsb=_XadoTkCf+d1Ax%-Ur|NGvIGSv-37Y974T6 zY7CA+g;&U)*uPv>n2_O0qo=8R{~u>R*udqN@rNLmyib`HHr8dK2`?s+H#*@bW3)r# zV6@$ia9@E%P*t;OolAg{AN`?gWYQGCEHO4klAjdT&_G`QLnnkf8*)ZOu1OJX4FENo>bz92@yT?;@H3wfZyvW_-FAQ%wu zVj%qImW3zGJR4!Cy|3}>Xa@XWk?U*!&*+F|ZPJuJk_!>sBoNV{V9Iu|d&|b#{u^o> zAqgP$<+*1+G_}gm4CNN$`3K624as;Xk;tyMaO-`^S%?wqk3L}Z1tAtI@MkqjDD780 z{Z#)Ob&=R|R>e$E(y*~|w31P>gL<%E#?N2USVQNN)NFNbGc|+mT2S1>@cVyQxNptF zdWS{%92ph_u>d)RUmyyX;4ICz+zFq)Mr~CHg7hror^TI3m=sZToJ?ARTCv*XM??1# zzCv(*ay{#aO0;GBX}s@G5n~jBs+{NSB;EuT!xd52Fh7gP{9w?OaLDreb6t`G=vlRG z0wZzJl{p|=pfR?~izMxm=z)Kt$MN&#hc&Sq3P!hqN$1X zOuw8~92N37Zx9j`ggv5nG8NY!Dm#M8@la~3n&NbDP57VV{1d>*CWHUfV+CtJE*+by z40i1!ICFR$sZ;_+a^)nv0?LsU!y_jS*dDe~zhxl@2@~9<#*F+1^TKfZRqWt-21Pq? z%A$SInwa%7=OQvqZWyL|8&Y1%K%(~yiFD{!NzNmYZ_K$bJdeQft>$pWpw*UH4u(V4 z!m`2#QrRpgj;7P5e{$p4C=Hf4^-_9K$|Zv1e-!wVLQ0@EFr3koO>aGtmWe=Vq?4Gz zcH&sn4x|5^;tl?%J}kl|Rd2<(9WIow)zlpuQZXIhl&o9PrEEzQPH1|>l*)Oqi2*xK z75PPDb-y%;h~qUl&FeB3A%+hJl+9$At^5sU2bmi{` z4VBPs$4NLYr7DLN@y$S^L9m?V2JK}}Iy~+GS{0U~%LHv*bs$2lUJTx-Niy_qc1-zB z7CiNaw`eb_UkeK>+?#a{_tXUL_$Td0OnV6Pj``yZ{$%^`x)R5$R!Q5pD#cko}Gqst-wz=(WTWSyP zZE~#_w{fX9LP=fxSB+Br`RmNy(cT33svB3ov%NKsQ51-zwh~ zyu}ay>FJ_QW(6@@#7*jtVcaq2sgV{M^4%qnM)H|DZ#slQoUJ@IFyc|Umt_OFseZ`} z9$fynH)Aedx@R{wA$HH6nx7MKER;Km*($NX`5U}Kr#F9{3o&MtEvlG6Qx|%Xoz=X! zWX{e#Gp0uCKx7$)czY^SIj}O2Fz-D@8@sbFQ9UXU$h1rWINNX%ucsJA!i#R1aIMPe ze3@c+ylP})#_-Nml}%~UXXGS*O)-W#TObD~PSJ7;k?i)%c>#r!rN*Y~f!)7wNnB$O zEav)(T(-k1bkw9a^nN);m17<-Ns}7(hC&TUW}33+X6-%rYE7^H;34!LIwrlkUC}e4 zbheQyJ0t%5;ccLFVTEmyfg*H6s1}w%?1>l3?_OBG%yj^v_ACCAZx~m3OKPLjtMh@) zJFCCWU*Vn9esP7tP}U~QT^=Kq**dFt0s*RAfUH9+A7m_F8OzCFU~)dhRi1g z2|GQ=qxnhsGG9^aSS4`(#X<3^plLQn#wY%Rfj~!W<_?9hQlw0(d!)7H zoca<*dNz+_oWFk`i)B7U9_eNh3M_BN_0HXpHn%l`|4hkRZd`g}kR2U~J53~_3_vkC z`k;Nnn$ex+B7$Tdn6nc~id{^lI?0+EA$!^lkv1Hp(7G8U;Ty=dbHDy`ON4AboC{WX zdiMU@*(m?|29#q2F4CH(U|M`d&qVJ2qc9W3WkwoKB`{rZkI>iw6U*vG44~pGXB*Jd z-5Weidv!Hl&+D3fOu#gDcDkvZ9%%X1;%+qy%J6F3p1sY7!#3>9ixJ_^Z<()-t?EL) z%j{2KemWRFEV5Ju-u21N2k{4-sq9$_oCfxGJ1P?8w2rG5rm8F8COyaoQ<6V2fq#0; z;jE6kaozb{Yq_?F!u=SdNKV7_<{W-}ujPFi%g%_t?R49IffN`3b)a}Ly0v^fE6aWhbaU)Sgg<7eT1JWyiHYJospQ^7 zN_$YLPAw9yMAv$5fb(1r{q3*DESWj9 z$mlUYI68)3u;mhb;`quOdH3P16SOA`b2?SSxGzUc@D@*L=Jm_?V)(IIA>b&mwA97m zc*;8ND)i*mf~(_#`)?F3G)J@{Nv0s?R*Cw8uS6f$tJCrdUeZI@3;zzdiA05ruqrhP zPTtp@jGaXOcBzFZJ8|B?4?u8>L!-EcZN@2sTq@4G;q2C|x|dQb?;lVpJH&Y$M6 z3Y}t}8a(*eULHPzNGWSZWx#@}XmPh0v%Qe1y%nDYj;<$S$>kkZveE!XR%8N!Cz$ zlk<5#68^ae20^FIE(icgEX04oFObtk#{mQn#tVrFNzn`$F=N9+h7O%_1spK`Z`(*^ z;(uGW06|x*|2iC!8S~>R0)sL*fKW4|W#7PB!HKdDl|>mZ?}8K z%>`s8mFdQpP^l>7=XOC4mFb`g$`R6{9I#immlH$HjE8jJlX~e76?cODWXd>S5XS+J zSSpgyN5oB(yBagEIP;-Bk?ZvLv2&N*dd3sLAl(aOs5C(+OcLp&>;y*vwm}FhSplqo zPw6~%tszca&(J)D##Lg#-_9|bU&d4le*nZFPGy1mI)AH%5n1h7c9M6Jw!b0v13^BJ zg1$?9=kbzrfUi@L@%{{wafLEcJS6#inO;sdMll|L?6FX_%6Ed_-ayWKLo}wU5N=ti)gwrkBUtm7NQDOVDfe`^kIF)`RM-~aCNAu1 zr;0>TrfnbrNNFf0*jP3PoBy&={;jzG@l0c;_RoUzE9;gd^ z;5gh$A00#iuT$E_s@KagrDv^-+ef=gvFx>i(o`5l9tpfksYEZ!PG?6J?6~@;-#+Y! zl^-fpr4Ek&x)qdK5UjezE4Q9u%#(ePVj5PSmI%DhS#`qB^|BW@8Gy#)W*$Td=r7q^ zJW5?5U@%;xKx8zVr?9OgJ)h#XBR$ElU@8$m_39VBW`qn~Bq?g~fQ4PFqKodZlA4xd zDbnI_6gKFl5;xJ?num`76UPx^qVpZ%xWI;&*n=TR>BdXQpF;EAH59+M_rhl36RGt6 z1mNoey~Ic1R8A_d8jH?Y97KGVdlthNBhEA4+Cu!w1b6;{tu z^$swn@kqGt8Li87CJ<44H;>NIB#VtYp&B6zgNR6#@fsvss|7k119m=3kfi3z$<>;N zX#rn92vx#2f+}Z^A#eU-IDwF#HLq7 zE=)T2Vfb4Y%f*ou8=lfVPN($F^5~DsRG7ZcLEQ{mCt9B4OliU&xO=lp2FauUK?q>4 z@yf07X!Pqv?@xM?QP7({HE0Z-tQJ?;5)y#MKfODmfr30Q(0P&W*H( z>v*SB9(o*M&2Tw28AnJGqn4X^RpOG7ywCzIKxLwGSP&Zj_nYblYPOP`?nNQ#B$7Al z8^}3&`_BAwjNKU$T`c7N!(nT8Zpw#v%?vQA`y82$V8ffM z>cKBmV8)`}?`1gIGM&<^p6d$dg=rxa`wMjt=-fyg@6@H9pGr z1$IF$%0o&v3Am?yA9lvyp{eROd$`nPcHPvKes?K1=1f-3?{qIGKt!Cp?Uz}L{**a*i2gKepS{>AAoGWxBan*mK1}B)9crYSz*r zCj}I^27Z;v{ZV1)xuLb!)1Pxi+RR|&HTEzz(4Q0e(*uHI%zNV_33t7yWT77VwBy$* zf4y4bT$fOHG5=(RkBYO%zj+2utfN2YEPGgX_TjPdT~*Y#f-`cl=p}tP10pDZ!@wqgr`Zt9>9V^cCdS?I#-r;{eWwzGBITXz3pPGNUNkcOf6t2~Ov3neu4(A0Fh4HFcW-*@9=CtpQGM89(nGPvl`gFndwxSjA}4*+RY zqbM?qGMl&?G!h`sF0~bUaMN~mJn?A+6L~?DJKr|We($p(b+m!hjai{P#ubOtw(Ani zPA;27&GPMtf*~;qT~G7kQT;$9rro@!_-UzDQrH%is@Tje6u{U^6&(u6wS2TYCGTP@N2Coj3GzV5?+QZi~&JKIH1tb)k7Qv|w13_zM^j@Gk;CzZbtbg(;}>b@YU zjqj~On1fANGvhr#7>@)SI}wK2Hk!1^)wGVKyS}3$bC(vSuX3xW38^6y)Lz-}V(qK9 zK{;-I1&crRFCr(h&W@2BkRFr&8z;a^K6bT%haQ(A!qiJ;Q8Ue_aT>YQnP}xv^I2bD zjhk6ut@W_fnwse0o~`NupfX*9EW$y@6r$^>pOl=?eU3+J$ufON2RjAhU0?!Wu@|gP z{0rhwWkqeP#9}>AiE0XrxMAxlpmQ^PC?fC|$v^y($54iOW7UVcKdWDJM>Thp57l}9 zq}O#!FyIBo+{ev!_h;KAPICGDO^Vy#;WzXg$_Ji6V>~%nIQQt~>Nd+V(OG(lLV-YL zYt8V58vwb|3q&)+Rjw(*UCc(}Ch$+^Hy886bAQ@)hYC`4KiGML3V$bId?XOybvy^2 ztn?($6KZBQtoqDVPLR~Vahg#GwX(X*M;Lp8)3z~RhcAM3V>OQ37vYCG_64QAk zCnv_liKU%zMu*2Q%wYzq2st1==G)BFv9Bxav0G;#h-8q^O0vQ}bKD#{^W!o-Y~9w( z@DPUxip!h)3^6u2C)hbZ7uLTQBMjJk-2dTpXUt_*YBjU3)8UlNp%n>Y11f@`RBER# z6VOSViI>f1KK)nSQa1BV(;YPu;Rt~a-KRu6x;0dCe zDn=0$@Y`;=(d@c^!RrgO?eLS6LTsy=u(Z~Q>5(|4+e2ARO?fP~kar>dNZs}7Qz?1M zLxK_FWlh^*b5uj7OPPF59y6(O9Bu*nNc{(fR=9r>M1P!WTKM3BmsPWooeX9iFX}z4 zkpf&zLIve2u?Jc&Qt)e@R4HRo{}QR!ZPmA{f0zC3SA8l&t;}VrJ2pyca~^()3eCzY zZ(rq+TqQBTx~;*g)cPL{Qu5L}eC6n3MTl;yG1q98KVnG9#s{H0ZDWVhTWt!COB@ZNq4F{Xw4iJ0rFndcY#Y>l-dJxp6~LTT$2k_#WS{V6W*cIxo9 z%S6nQ>NATi*De;DG~gKU0KJXob6ty=?@LBhJ?L6Yap>!U0@wVguv2j(Wjh|u;^u4JE&e=4)*X9tbA0Ie>ZOj_ zzfsEKm0r&_zJ0d;aqSu3)D)FO=TT!Y|$&! zreLRNeC?GU7lOff=ZF`Vw;4CS@JZyWmOB@KRZ}!AECs({!9l>Ro%A50cCcP$XpV+Z z-mF)1G<~P;c_p|O!(>>ON@UjZvt;m!O~ulLnvk!0JRJ29<$yL1`Vt;9%G8W|F^(rp zV3_f3dnNS1ok!3oDDe2{lPImvzliNaonGDHAn`OQw@I|`Zyg$1LN;WBCBC`4wS!aT z%lc%2vhj@-^qsDfjgNJbLeCk8ga?-c91;CK)<0rN<+)iwdzHN!*AX1nwU((OffFTrB29+E!9sNwhRFAc)r@_*5r(Rl=%;aRS=l9ra0r5P7agv7-g!i zixY%gn2j57E5Y^eu|FIA(>{&oep><|()vHR&jNxIEUSOyFxf7KBOK8-gPR)i#!s4G z?)Phwgw5(w#;nZ(F2j+FO0Mkp%$lN$n`~0_#*}Jo281N3YFhyqCNrmVQBwyk!%3?B zBgYAe>4c?ds>#0C-1XA>LGSSyRwJl8gU-qDEqVR7Kl;vg30W^-CO)9|ez;Ctx+tRS|Lu%Fv z`k5a*@npq!_0EY<(vc9M8m*i}Wd(40DqE4*Dm)@G<(Jy(Oe$N}^-(+zA$$y0$B{iB z=b(&MnHGaC!p&$x7qP4Ebw4V*pcOXRL`}*`3CAoR8+7#1oL8FBVH^P;6R89e z0py|zAJbqYDZw!PkG7L4@pkt>wqXgi~MeNdKy7tq;t0q;60VGUbX7!a^7A=)rDi>(b zD}UIylx9NoS*uLBMf5v|;(DZF*T+(o%*BzG7VV1~2$fRAqPgHgmuFziI<2~-dX@OY z2rKsj5M-rHZ-~RNVM#*HFV>Aot;ds#00q`ex+_>kK(|wevu~Q+mz&(#t@G zle_j&t2JInGg=67;3fE*TI!&tTs<{Q6{26gvgI?THA+(zBRbmZPpyBbdp8w%RTn=; zcoDJt+>;RZlO(+(X&aiKeNzGERi=wlS#8)_GTz(}``D0cZnK(IBmL9GF)(0In`T}l zRy(Q@p}o7z+=2xxEj^?zYcGVSQ=iT&7dd6JU+rcwr#v3jGzc7Zw4J<5U%7~;^oYZv zFrx6SmI9Jh6nfzAGgJu6QbB?&;l@FoWHY7T7-NU91=?DVi+I<7$!a%fO1H)6H83B3 zFNM;jaIc>JZK;BV{xSOq!DG#2kJC?UATUE^m+E!4gw0kkwXFu7w4XktmI3hrx{pO; zzQ0TZBSwGHX%CXq{cS1c;L9WnHoT&d8FZeDz2K|>AAy7j6T#cnQVq3M;(RH)B`39` ze8*dmW?&?wF~iJ$N~cQ*zTXE`@09e|wa$#9oJRZ7Aof?paHd&`ra@&oivE%*LgN6K zXgDJ^qXTnskw`ln-3O(;Vi@meGv=xbiYD2XsJc^OL-<}!K6kc^CN9V@7jj>hh^C3cJ!}GRxl6@ z*-a07Emds{N2II=LMa=0*;2b(CXsq@RVjlRTi#iz(_(OAO##{ImKKt9Jd2@b`KYTcwFFgK=;+ca^>2is;|kqtebMeM}s!IfqE7FZ~f?NXIAPQUt^^&8uMkik;24)^EEKB zb8ma9uEC^CxWRPIDzF<36ge3|GAlNz8ou~p}%7z zOBGr8ckx}?ygfNOI&wE)@Fe8tt`XCCtvy#~{o0iQeK%+OT~3_x77HWgMxVfx3XDoO z99*pK8r&tCV>k;vN|e^J)%V}((J3GH{07NGTSflGzQxe2FV1sIUCV*<>m>N<9NySXrmps-ZrjlWdG`j4k zo#c4)RVs1{l%Q!`%1_DT0z@$B{#5l?isGRMMIwS)0pujd{y$AO-lG2 zl2pe6S`ZuyY&#d+rEw!6{kwznI~)M}?>_9D2Ft4@cTW7cj(78_{*btbzUzxx z=VgSgRibv@=R!xPg+BoL3}bK5;w=joF>dplil=QXuQZzd@DWOHLU9ED~YXF z_T4YFUOjU^d>ONrySa*N*ikBNHRZo$VDJ|bIuSPSc4}#wFzFses@*>I7|BLUjFGyr zE#>|)5REyBN%KI3X0KFU>@VpypUTg!pZ`hdw|L2k`i;_7l1z|rk$Z3) z40`&Ii?Yv)>{4%Ii9Lc*|byOvr>N(;rY8uZR6+Z2`Y);cZreGkT1gk|At zUKnIHlF{bBnGF;%Ke^~AX2o(9Ur{D`Yl)qEvgaS*9@mmRekl`h{~%*6d)kfmQ;%OX zkGA|prF{;qU%c=QG~Jp^_3Ua>7k=CcplrIe)9bSjTUC%~Dc$Xr`$99RjwEC3 z`IhEWCvW*Wc9~9hkyT_gWBs$8H~%%^;7}5*^MdE|Ig(VHhQyey@29sqwQldB#B?+V zxI2H~Fg(ki+FM%OffCbRK;1|2b7O-g0i}w&bVG!j7dgm@0@!)|%0ydS%`MpBhn`dy zZI+YX#4-^UMvjwTSOC0P@iEFQJPXVnO1N`Gp;8eEAk(_e^ebP&Dz}H9%GAj3L724p zE%LAOH4P0VuB61{vmAxZ;(ep-CYjHud=!y!&o!k zZm$E11ga_-+OK5W+uiyH7((kSvJ$bn(}@+G-jMP$8M#r&mu&PO>#3K@hTl}*@HEFO z!$0J9jzGLS?OF$_iG&8IFbi5rSe$;fURX6MF{y$HLp!VY&Lei9@@~N<>xp~yubA7u zlf&8jmpzQT{VL6Wr~8bBG{D11PMW)O%NNwbKY@wws@*>G(_v>1@)V1ER-@J~%iDNn z!0pdKV{p?2NFo$t9Oc*j_})Fug5l?)@d|Y9ei0pUPTvh|XgbdH_gHUK^nASZ-)M<$ z9Cb1jkd5Bg!IgE~@Br(qPB@0`YJDUgW8`EJ82}0=QmXBMjw=V-qa65&5?A25$w8al zw(1W(io^L>QUzIWrOx(arK2%O#Nq>=sZ4iR1=5oAr)@sA7hCib!qK*` zq1D@Fo-(~(>`3wO)FzyBuoaC7s%(tuab}%m-kj>8VkZm9{@G0F#T0BVumV}R3=h;T z-6i^os_`C>Syr7yu5C%^8GSxt9>L_`#bsdumYZMs-+F8;Hn0E>q^zR4i3RLO_=&?_ zr3JLdcR$*UYt}7yCx?xgbCL7t>|+B&9>8NrO+J8v{za7onZZDeHY7`^Oty zkfBC~tJV?8ch_t}`IwRHRu&w)r)q{aHjKla&HGR8jj~iAS3vvpxsq=B)6J<50-l

Sp4>vafNL$ld(8@Zd)DO|kUGE?Aujm|8C~cA-*L@MIUMjGLAmQJaOn+GoS3XFg z2iAK9Sf%;T@B=G}p{-8K}n;BSk$7uY>GG}4M(|6c)_c|vg;;=lSb mu(~UE{y&xG|F6Y)`#pl-(bLGfFbk}G1Ej?j#Og(iLjDgxsO>TU literal 0 HcmV?d00001 From 505f0a5bed9bf7f930ca393c0a30ebbc7b8bdfc5 Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Thu, 18 Feb 2021 07:21:29 +0000 Subject: [PATCH 02/82] added notice for deactivated account --- webroot/css/global.css | 28 +++++++++++++++++++--------- webroot/panel/account.php | 6 +++++- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/webroot/css/global.css b/webroot/css/global.css index 6ae540e7..b5df3ee5 100644 --- a/webroot/css/global.css +++ b/webroot/css/global.css @@ -70,13 +70,13 @@ table tr:first-child { } table tr > td:first-child { - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; } table tr > td:last-child { - border-top-right-radius: 10px; - border-bottom-right-radius: 10px; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; } table tr, table td { @@ -121,7 +121,7 @@ table form>* { white-space: nowrap; z-index: 1; box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.75); - border-radius: 10px; + border-radius: 5px; } .btnDropdown>div>button { @@ -157,7 +157,7 @@ input[type=text], input[type=password] { width: calc(100% - 12px); /* Factors in extra border and padding */ max-width: 300px; - border-radius: 10px; + border-radius: 5px; } input[type=submit], button { @@ -166,7 +166,7 @@ input[type=submit], button { cursor: pointer; border: 0; padding: 8px 12px 8px 12px; - border-radius: 10px; + border-radius: 5px; transition: background 0.1s; } @@ -196,7 +196,7 @@ select { padding: 5px; width: 100%; max-width: 300px; - border-radius: 10px; + border-radius: 5px; } textarea { @@ -210,7 +210,8 @@ textarea { resize: vertical; font-family: Arial, Helvetica, sans-serif; font-size: 11pt; - border-radius: 10px; + border-radius: 5px; + outline: none; } /* User Messages */ @@ -223,6 +224,15 @@ textarea { color: var(--color-accent-1); } +.notice { + display: block; + background: var(--color-accent-1); + color: var(--color-base-1); + padding: 10px; + border-radius: 5px; + margin-bottom: 20px; +} + /* --------------------- Global Elements diff --git a/webroot/panel/account.php b/webroot/panel/account.php index 34ef3e8f..165390ad 100644 --- a/webroot/panel/account.php +++ b/webroot/panel/account.php @@ -26,7 +26,11 @@

- We use SSH keys for console authentication to Unity. Users are not given passwords for this reason. + isActive()) { + echo "Notice Your account is currently NOT ACTIVE. You will not be able to login via SSH or JupyterLab until you are a member of at least one PI group."; + } + ?>
ssh -i [downloaded key] getUID(); ?>@unity.rc.umass.edu
From aaf3d1f639781eb127dc1e2739cfdcd1b9883772 Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Thu, 25 Feb 2021 23:14:27 +0000 Subject: [PATCH 03/82] added changelog --- changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 changelog diff --git a/changelog b/changelog new file mode 100644 index 00000000..f12335fe --- /dev/null +++ b/changelog @@ -0,0 +1,10 @@ +#### 0.4.1-BETA #### +* [Feature] Added notices for inactive account +* [Locale] Refined en locale file + +#### 0.4.0HF1-BETA #### +* [Bug] Fixed issue where some users account wasn't activating + +#### 0.4.0-BETA #### +* [Feature] Added Multiple PI Support +* [Backend] Users and PI Groups are treated as different entities \ No newline at end of file From 87c917403cefe6453fda8b440c51a461a41fe45e Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Thu, 25 Feb 2021 23:14:49 +0000 Subject: [PATCH 04/82] Added version info --- .gitignore | 4 +++- resources/config.php.example | 5 +++++ resources/templates/footer.php | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2f4a316b..6147dd05 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ resources/config.php -resources/libraries/composer/ \ No newline at end of file +resources/libraries/composer/ + +.vscode/ \ No newline at end of file diff --git a/resources/config.php.example b/resources/config.php.example index d6ac107a..acdf2405 100644 --- a/resources/config.php.example +++ b/resources/config.php.example @@ -21,6 +21,11 @@ class config { public const PREFIX = "/"; // Site prefix public const MAINTENANCE_MODE = false; // This will activate maintenance mode, which doesn't allow users in + public const APP = array( + "repo" => "https://github.com/UMass-RC/unity-web-portal", + "version" => "0.4.1-BETA" + ); + // Hardcoded paths, change these locations if you move them public const PATHS = array( "templates" => ROOT . "/resources/templates", diff --git a/resources/templates/footer.php b/resources/templates/footer.php index c23d86c5..d19af279 100644 --- a/resources/templates/footer.php +++ b/resources/templates/footer.php @@ -6,7 +6,7 @@
From 0b94731c999f34e8809aead6ff056ed4965c0f1e Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Fri, 26 Feb 2021 00:18:23 +0000 Subject: [PATCH 05/82] better css templates --- webroot/css/global.css | 48 +++++++++++++++++++----------------------- webroot/css/modal.css | 6 +++--- webroot/css/navbar.css | 18 ++++++++-------- webroot/css/vars.css | 32 ++++++++++++---------------- 4 files changed, 48 insertions(+), 56 deletions(-) diff --git a/webroot/css/global.css b/webroot/css/global.css index b5df3ee5..ff992ad0 100644 --- a/webroot/css/global.css +++ b/webroot/css/global.css @@ -1,7 +1,7 @@ html, body { margin: 0; font-family: Arial, Helvetica, sans-serif; - background: var(--color-base-1); + background: var(--color-background); color: var(--color-text-dark); height: 100%; overscroll-behavior-y: none; @@ -21,7 +21,7 @@ body { */ a { - color: var(--color-accent-1); + color: var(--color-foreground); text-decoration: none; } @@ -33,7 +33,7 @@ h1 { font-size: 15pt; font-weight: bold; padding-bottom: 10px; - border-bottom: 1px solid var(--color-base-2); + border-bottom: 1px solid var(--color-background-dividers); display: block; margin: 0 0 20px 0; } @@ -42,7 +42,7 @@ hr { border-top: 0; border-right: 0; border-left: 0; - border-bottom: 1px solid var(--color-base-2); + border-bottom: 1px solid var(--color-background-dividers); margin: 10px 0 10px 0; display: block; } @@ -65,8 +65,8 @@ table { table tr:first-child { text-align: center; - background: var(--color-accent-1); - color: var(--color-base-1); + background: var(--color-foreground); + color: var(--color-foreground-text); } table tr > td:first-child { @@ -86,10 +86,6 @@ table tr, table td { white-space: nowrap; } -table tr:not(:first-child):hover { - background: var(--color-base-3); -} - table button, table input[type=submit] { padding: 5px 10px 5px 10px; } @@ -125,15 +121,15 @@ table form>* { } .btnDropdown>div>button { - background: var(--color-base-3); - color: var(--color-text-dark); + background: var(--color-background-panel); + color: var(--color-background-text); width: 100%; text-align: left; border-radius: 0; } .btnDropdown>div>button:hover { - background: var(--color-base-5); + background: var(--color-background-panel-active); } .btnDropdown button { @@ -152,7 +148,7 @@ form>*:not(:last-child) { input[type=text], input[type=password] { margin: 10px 0 10px 0; - border: 1px solid var(--color-base-2); + border: 1px solid var(--color-background-dividers); padding: 5px; width: calc(100% - 12px); /* Factors in extra border and padding */ @@ -161,8 +157,8 @@ input[type=text], input[type=password] { } input[type=submit], button { - background: var(--color-accent-1); - color: var(--color-text-light); + background: var(--color-foreground); + color: var(--color-foreground-text); cursor: pointer; border: 0; padding: 8px 12px 8px 12px; @@ -171,7 +167,7 @@ input[type=submit], button { } input[type=submit]:hover, button:hover { - background: var(--color-accent-3); + background: var(--color-foreground-hover); } input:focus, button:focus { @@ -187,11 +183,11 @@ form label { display: inline; user-select: none; font-size: 10pt; - color: var(--color-text-faded); + color: var(--color-background-text-inactive); } select { - border: 1px solid var(--color-base-2); + border: 1px solid var(--color-background-dividers); background: white; padding: 5px; width: 100%; @@ -200,7 +196,7 @@ select { } textarea { - border: 1px solid var(--color-base-2); + border: 1px solid var(--color-background-dividers); width: 100%; min-height: 150px; max-width: 600px; @@ -221,13 +217,13 @@ textarea { } .message-failure { - color: var(--color-accent-1); + color: var(--color-foreground); } .notice { display: block; - background: var(--color-accent-1); - color: var(--color-base-1); + background: var(--color-foreground); + color: var(--color-foreground-text); padding: 10px; border-radius: 5px; margin-bottom: 20px; @@ -266,11 +262,11 @@ div.pageMessages > * { /* FOOTER */ footer { - background: var(--color-base-3); + background: var(--color-background-panel); flex-shrink: 0; text-align: center; font-size: 8pt; - color: var(--color-base-4); + color: var(--color-background-panel-inactive); } footer #footerLogos img { @@ -280,7 +276,7 @@ footer #footerLogos img { } footer #footerLogos>*:not(:last-child) { - border-right: 1px solid var(--color-base-4); + border-right: 1px solid var(--color-background-panel-inactive); } .footerBlock { diff --git a/webroot/css/modal.css b/webroot/css/modal.css index 5d8b46a8..a270e12f 100644 --- a/webroot/css/modal.css +++ b/webroot/css/modal.css @@ -13,7 +13,7 @@ div.modalContent { top: 50%; left: 50%; transform: translate(-50%, -50%); - background: var(--color-base-1); + background: var(--color-background); padding: 15px; width: calc(100% - 30px); max-width: 300px; @@ -43,7 +43,7 @@ div.modalBody > * { /* Search Box CSS */ div.searchWrapper { box-shadow: 0px 0px 10px 0px rgba(0,0,0,0.4); - background: var(--color-base-1); + background: var(--color-background); position: absolute; top: 40px; z-index: 200; @@ -61,5 +61,5 @@ div.searchWrapper > * { } div.searchWrapper > *:hover { - background: var(--color-base-5); + background: var(--color-background); } \ No newline at end of file diff --git a/webroot/css/navbar.css b/webroot/css/navbar.css index 7b4819f4..a6e1235e 100644 --- a/webroot/css/navbar.css +++ b/webroot/css/navbar.css @@ -1,7 +1,7 @@ /* Navbar */ nav.mainNav { - background: var(--color-accent-1); + background: var(--color-foreground); position: fixed; left: 0; top: 45px; @@ -12,7 +12,7 @@ nav.mainNav { } nav.mainNav a { - color: var(--color-base-1); + color: var(--color-foreground-text); background: #941e1e; border-radius: 10px; display: block; @@ -25,15 +25,15 @@ nav.mainNav a { nav.mainNav a:hover { text-decoration: none; - background: var(--color-accent-3); + background: var(--color-foreground-hover); } nav.mainNav a.active { - background: var(--color-accent-4); + background: var(--color-foreground-active); } header { - background: var(--color-accent-1); + background: var(--color-foreground); height: 50px; width: 250px; position: fixed; @@ -48,8 +48,8 @@ header>#imgLogo { } header>a.unity-state { - background: var(--color-base-3); - color: var(--color-accent-1); + background: var(--color-foreground-text); + color: var(--color-foreground); display: block; position: absolute; top: 8px; @@ -65,7 +65,7 @@ header>a.unity-state:hover { } header>button.hamburger { - background: var(--color-accent-1); + background: var(--color-foreground); padding: 0; right: 23px; height: 60%; @@ -113,7 +113,7 @@ header>button.hamburger>img { @media only screen and (min-width: 1001px) and (min-height: 1000px) { nav.mainNav { - background: url("/res/mghpcc-image.png"), var(--color-accent-1); + background: url("/res/mghpcc-image.png"), var(--color-foreground; background-position: center bottom; background-repeat: no-repeat; } diff --git a/webroot/css/vars.css b/webroot/css/vars.css index d3cf692b..00baf17b 100644 --- a/webroot/css/vars.css +++ b/webroot/css/vars.css @@ -1,22 +1,18 @@ :root { - /* Background */ - --color-base-1: #ffffff; - /* Divider Color */ - --color-base-2: #eeeeee; - /* Footer */ - --color-base-3: #fafafa; - --color-base-5: #dddddd; - /* Footer Text */ - --color-base-4: #bbbbbb; - /* UMass Maroon */ - --color-accent-1: #881c1c; - /* Darker Maroon */ - --color-accent-2: #7f1a1a; - --color-accent-3: #9c2020; - --color-accent-4: #a92323; - --color-text-dark: #1a1a1a; - --color-text-faded: #666666; - --color-text-light: var(--color-base-1); + --color-background: #ffffff; /* Site background color */ + --color-background-text: #1a1a1a; /* Text color with --color-background in the background */ + --color-background-text-inactive: #666666; + --color-foreground: #881d1d; /* Primary foreground color (navbar, buttons, links) */ + --color-foreground-text: #ffffff; /* Text color with --color-foreground in the background */ + --color-foreground-hover: #9c2020; /* Active color for buttons/links on hover, with --color-foreground as the background */ + --color-foreground-active: #a92323; + + --color-background-dividers: #eeeeee; /* Colors to use for dividers and borders with --color-background in the background */ + + --color-background-panel: #fafafa; /* Panel background with --color-background in the background (used on footer, some popup panels) */ + --color-background-panel-active: #dddddd; /* Used when an element in a panel is active (such as hovering over a button) with --color-background-panel as the background */ + --color-background-panel-inactive: #bbbbbb;/* Text/divider/border color for faded/inactive elements, with --color-background-panel as the background */ + --color-text-success: #009933; --color-text-failure: #cc0000; --color-text-warning: #ffcc00; From 29b5c6b83b588604b9d8bd71bce86653e7ea1018 Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Fri, 5 Mar 2021 17:59:21 +0000 Subject: [PATCH 06/82] updated account settings --- resources/autoload.php | 8 +- resources/init/api.php | 3 + resources/libraries/curl.php | 66 ++++++++++++ webroot/css/global.css | 39 ++++++- webroot/css/modal.css | 3 +- webroot/css/vars.css | 4 +- webroot/js/global.js | 19 +++- webroot/js/modal.js | 4 +- webroot/panel/account.php | 173 ++++++++++++-------------------- webroot/panel/modal/new_key.php | 65 ++++++++++++ 10 files changed, 265 insertions(+), 119 deletions(-) create mode 100644 resources/init/api.php create mode 100644 resources/libraries/curl.php create mode 100644 webroot/panel/modal/new_key.php diff --git a/resources/autoload.php b/resources/autoload.php index 7b2267c7..1dc567c8 100644 --- a/resources/autoload.php +++ b/resources/autoload.php @@ -1,7 +1,11 @@ baseURL = $baseURL; + $this->curl = curl_init(); + + if (isset($headers)) { + curl_setopt($this->curl, CURLOPT_HTTPHEADER, $headers); + } + + if (isset($user) && isset($pass)) { + curl_setopt($this->curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); + curl_setopt($this->curl, CURLOPT_USERPWD, $user . ":" . $pass); + } + } + + public function postAPI($path, $data = false) { + curl_setopt($this->curl, CURLOPT_POST, 1); + curl_setopt($this->curl, CURLOPT_PUT, 0); + + if ($data) { + curl_setopt($this->curl, CURLOPT_POSTFIELDS, $data); + } + + $url = $this->baseURL . $path; + + curl_setopt($this->curl, CURLOPT_URL, $url); + curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1); + + return json_decode(curl_exec($this->curl), true); + } + + public function putAPI($path) { + curl_setopt($this->curl, CURLOPT_POST, 0); + curl_setopt($this->curl, CURLOPT_PUT, 1); + + $url = $this->baseURL . $path; + + curl_setopt($this->curl, CURLOPT_URL, $url); + curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1); + + return json_decode(curl_exec($this->curl), true); + } + + public function getAPI($path, $data = false) { + curl_setopt($this->curl, CURLOPT_POST, 0); + curl_setopt($this->curl, CURLOPT_PUT, 0); + + if ($data) { + $path = sprintf("%s?%s", $path, http_build_query($data)); + } + + $url = $this->baseURL . $path; + + curl_setopt($this->curl, CURLOPT_URL, $url); + curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1); + + return json_decode(curl_exec($this->curl), true); + } + +} \ No newline at end of file diff --git a/webroot/css/global.css b/webroot/css/global.css index ff992ad0..6f62fe71 100644 --- a/webroot/css/global.css +++ b/webroot/css/global.css @@ -53,6 +53,26 @@ hr { transform: translateY(-50%); } +div.checkmark { + background: var(--color-success); + border-radius: 100px; + padding: 5px; + display: inline-block; + vertical-align: bottom; + width: 20px; + height: 20px; + color: var(--color-foreground-text); + font-weight: bold; + text-align: center; + user-select: none; + margin-left: 15px; +} + +/* +main > section { + display: inline-block; +}*/ + /* Tables */ table { @@ -64,9 +84,8 @@ table { } table tr:first-child { - text-align: center; - background: var(--color-foreground); - color: var(--color-foreground-text); + border-bottom: 2px solid var(--color-background-dividers); + font-weight: bold; } table tr > td:first-child { @@ -102,6 +121,14 @@ table form>* { margin: 0; } +button.plusBtn { + font-size: 24pt; + display: block; + width: 100%; + padding: 0; + overflow: hidden; +} + /* Dropdown Button */ .btnDropdown { @@ -200,7 +227,6 @@ textarea { width: 100%; min-height: 150px; max-width: 600px; - padding: 5px; display: block; margin: 10px 0 10px 0; resize: vertical; @@ -210,6 +236,11 @@ textarea { outline: none; } +div.inline * { + display: inline; + margin-right: 10px; +} + /* User Messages */ .message-success { diff --git a/webroot/css/modal.css b/webroot/css/modal.css index a270e12f..59cf0a6f 100644 --- a/webroot/css/modal.css +++ b/webroot/css/modal.css @@ -16,9 +16,8 @@ div.modalContent { background: var(--color-background); padding: 15px; width: calc(100% - 30px); - max-width: 300px; box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.4); - border-radius: 10px; + border-radius: 5px; } div.modalTitleWrapper { diff --git a/webroot/css/vars.css b/webroot/css/vars.css index 00baf17b..1ab321dc 100644 --- a/webroot/css/vars.css +++ b/webroot/css/vars.css @@ -7,13 +7,13 @@ --color-foreground-hover: #9c2020; /* Active color for buttons/links on hover, with --color-foreground as the background */ --color-foreground-active: #a92323; - --color-background-dividers: #eeeeee; /* Colors to use for dividers and borders with --color-background in the background */ + --color-background-dividers: #dddddd; /* Colors to use for dividers and borders with --color-background in the background */ --color-background-panel: #fafafa; /* Panel background with --color-background in the background (used on footer, some popup panels) */ --color-background-panel-active: #dddddd; /* Used when an element in a panel is active (such as hovering over a button) with --color-background-panel as the background */ --color-background-panel-inactive: #bbbbbb;/* Text/divider/border color for faded/inactive elements, with --color-background-panel as the background */ - --color-text-success: #009933; + --color-success: #009933; --color-text-failure: #cc0000; --color-text-warning: #ffcc00; --size-mobile-switch: 1000px; diff --git a/webroot/js/global.js b/webroot/js/global.js index 2d9f446b..34d5ec8b 100644 --- a/webroot/js/global.js +++ b/webroot/js/global.js @@ -61,4 +61,21 @@ $(window).click(function (e) { if (!e.target.matches("div.btnDropdown > button")) { $("div.btnDropdown > div").hide(); } -}); \ No newline at end of file +}); + +$(function () { + setTimeout(function () { + $("div.checkmark").fadeOut(500); + }, 5000); +}); + +function downloadFile(text, filename) { + var element = document.createElement('a'); + element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); + element.setAttribute('download', filename); + + element.style.display = "none"; + $("body").append(element); + element.click(); + element.remove(); +} \ No newline at end of file diff --git a/webroot/js/modal.js b/webroot/js/modal.js index 522fac5e..d2e1bbc9 100644 --- a/webroot/js/modal.js +++ b/webroot/js/modal.js @@ -5,8 +5,8 @@ function openModal(title, link, message = "") { $("div.modalBody").html(result); }}); - //$("div.modalWrapper").fadeIn(100); // With Animation - $("div.modalWrapper").show(); + $("div.modalWrapper").fadeIn(100); // With Animation + //$("div.modalWrapper").show(); } $("button.btnClose").click(function() { diff --git a/webroot/panel/account.php b/webroot/panel/account.php index 165390ad..db171254 100644 --- a/webroot/panel/account.php +++ b/webroot/panel/account.php @@ -4,20 +4,42 @@ require_once config::PATHS["templates"] . "/header.php"; if ($_SERVER['REQUEST_METHOD'] == "POST") { - $errors = array(); - - //form was submitted - $keys = array(); - for ($i = 0; isset($_POST["key" . $i]); $i++) { - $key = $_POST["key" . $i]; - if (!empty($key)) { - array_push($keys, $key); // Push Each SSH Box + + if (isset($_POST["add_type"])) { + //form was submitted + $added_keys = array(); + + switch ($_POST["add_type"]) { + case "paste": + array_push($added_keys, $_POST["key"]); + break; + case "import": + array_push($added_keys, file_get_contents($_FILES['uploadedfile']['tmp_name'])); + break; + case "generate": + array_push($added_keys, $_POST["gen_key"]); + break; + case "github": + $gh_user = $_POST["gh_user"]; + + $keys = $github->getAPI("/users/$gh_user/keys"); + + foreach ($keys as $key) { + array_push($added_keys, $key["key"]); + } + break; } - } - $user->setSSHKeys($keys); + if (!empty($added_keys)) { + $totalKeys = array_merge($user->getSSHKeys(), $added_keys); + $user->setSSHKeys($totalKeys); + } + } elseif (isset($_POST["delIndex"])) { + $keys = $user->getSSHKeys(); + unset($keys[intval($_POST["delIndex"])]); // remove key from array - if (isset($_POST["loginshell"])) { + $user->setSSHKeys($keys); // Update user keys + } elseif (isset($_POST["loginshell"])) { $user->setLoginShell($_POST["loginshell"]); } } @@ -31,113 +53,41 @@ echo "Notice Your account is currently NOT ACTIVE. You will not be able to login via SSH or JupyterLab until you are a member of at least one PI group."; } ?> +

Any changes made on this page may take a few minutes to take effect on Unity.

ssh -i [downloaded key] getUID(); ?>@unity.rc.umass.edu
-
- - - -
- -
- - -
-
+ +getSSHKeys(); // Get ssh public key attr +for ($i = 0; $sshPubKeys != null && $i < count($sshPubKeys); $i++) { // loop through keys + echo "
"; +} +?> -
+ -
- - getSSHKeys(); // Get ssh public key attr - for ($i = 0; $sshPubKeys != null && $i < count($sshPubKeys); $i++) { // loop through keys - echo "
"; - } - ?> +
-
+isActive()) { + echo "
"; + echo "
"; +} +?> +
isActive()) { - echo ""; - echo ""; - echo "
"; + if (isset($errors) && empty($errors)) { + echo "
"; } ?> - - - - - +
@@ -148,17 +98,26 @@ function downloadFile(text, filename) { height: auto; } - .key-box button { + .key-box input[type=submit] { position: absolute; left: 0; bottom: 0; - + padding: 0; + margin: 0; } .key-box textarea { word-wrap: break-word; word-break: break-all; } + + button.plusBtn { + max-width: 605px; + } + + div.modalContent { + max-width: 600px; + } + +
+
+
+
+
+ +
+ + + +
+ + + + + + +
+ + \ No newline at end of file From a960cbec5727afd3c309bf5f2488ea9791e49e4c Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Tue, 6 Apr 2021 03:02:04 +0000 Subject: [PATCH 07/82] added support ticket php - no php yet --- webroot/panel/support.php | 148 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 webroot/panel/support.php diff --git a/webroot/panel/support.php b/webroot/panel/support.php new file mode 100644 index 00000000..3b1ab3be --- /dev/null +++ b/webroot/panel/support.php @@ -0,0 +1,148 @@ + $user->getMail(), + "name" => $user->getName(), + "subject" => $subject, + "message" => "" + ); + + switch ($type) { + case "soft": + $soft_link = $_POST["soft-link"]; + $soft_details = $_POST["soft-details"]; + + if (empty($soft_link)) { + die(); + } + + $mail_data["message"] = "

Software Request

Link to Software: $soft_link

Description of Software (optional): $soft_details

"; + + break; + case "bug": + $bug_issue = $_POST["bug-issue"]; + $bug_steps = $_POST["bug-reproduce"]; + + if (empty($bug_issue) || empty($bug_steps)) { + die(); + } + + break; + case "feat": + $feat_message = $_POST["feat-message"]; + + if (empty($feat_message)) { + die(); + } + + break; + case "gen": + $gen_message = $_POST["gen-message"]; + + if (empty($gen_message)) { + die(); + } + + + + break; + } +} +?> + +

Request Support

+ +

Before submitting a ticket, please reference our documentation and FAQ page for a potential answer.

+ +
+ + + + + + + +
+ + + + \ No newline at end of file From 980892272d2d14175209375b6c4ee3366a86949b Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Tue, 6 Apr 2021 03:02:21 +0000 Subject: [PATCH 08/82] added prefix to ssh generation --- webroot/panel/modal/new_key.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webroot/panel/modal/new_key.php b/webroot/panel/modal/new_key.php index d319cf2f..ca483d8d 100644 --- a/webroot/panel/modal/new_key.php +++ b/webroot/panel/modal/new_key.php @@ -51,7 +51,7 @@ } $.ajax({ - url: "/js/ajax/ssh_generate.php?type=" + type, + url: "/js/ajax/ssh_generate.php?type=" + type, success: function(result) { var pubKey = result.substr(result.indexOf(pubSection) + pubSection.length, result.indexOf(endingSection) - result.indexOf(pubSection) - pubSection.length); var privKey = result.substr(result.indexOf(privSection) + privSection.length, result.indexOf(endingSection, result.indexOf(endingSection) + 1) - result.indexOf(privSection) - privSection.length); From b7319824f1e0b4c85fa99b069f25e94245d95627 Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Tue, 6 Apr 2021 03:02:43 +0000 Subject: [PATCH 09/82] remove panel index --- webroot/panel/index.php | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 webroot/panel/index.php diff --git a/webroot/panel/index.php b/webroot/panel/index.php deleted file mode 100644 index 8f75d379..00000000 --- a/webroot/panel/index.php +++ /dev/null @@ -1,7 +0,0 @@ - From 4bb05df0f03c413fe128ee48653d9501b66d77ad Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Tue, 6 Apr 2021 03:03:06 +0000 Subject: [PATCH 10/82] css global changes --- webroot/css/global.css | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/webroot/css/global.css b/webroot/css/global.css index 6f62fe71..401b7e4b 100644 --- a/webroot/css/global.css +++ b/webroot/css/global.css @@ -32,8 +32,7 @@ a:hover { h1 { font-size: 15pt; font-weight: bold; - padding-bottom: 10px; - border-bottom: 1px solid var(--color-background-dividers); + padding-bottom: 5px; display: block; margin: 0 0 20px 0; } @@ -197,7 +196,7 @@ input[type=submit]:hover, button:hover { background: var(--color-foreground-hover); } -input:focus, button:focus { +button:focus { outline: none; box-shadow: none; } @@ -206,13 +205,17 @@ input[type=checkbox], input[type=radio] { display: inline-block; } -form label { +label:not(label[for]) { display: inline; user-select: none; font-size: 10pt; color: var(--color-background-text-inactive); } +label { + overflow: hidden; +} + select { border: 1px solid var(--color-background-dividers); background: white; @@ -231,9 +234,9 @@ textarea { margin: 10px 0 10px 0; resize: vertical; font-family: Arial, Helvetica, sans-serif; - font-size: 11pt; + font-size: 10pt; border-radius: 5px; - outline: none; + padding: 5px; } div.inline * { @@ -363,6 +366,22 @@ table tr.tr-unassigned, table tr.tr-unassigned a { font-size: 20pt; } +.btnExpand { + background: var(--color-background); + color: var(--color-foreground); + padding: 5px 10px 5px 0; + transition: transform 0.1s; +} + +.btnExpand:hover { + background: var(--color-background); + color: var(--color-foreground); +} + +.btnExpanded { + transform: rotate(90deg); +} + .btnClose::before, .btnRemove::before { content: "\00d7"; } \ No newline at end of file From 6f035ec3ea991e82235bf9a2b327677620571b07 Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Tue, 6 Apr 2021 03:03:22 +0000 Subject: [PATCH 11/82] added getFullname() method to unityUser --- resources/libraries/unity-user.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/resources/libraries/unity-user.php b/resources/libraries/unity-user.php index ed0c2d00..0849951b 100644 --- a/resources/libraries/unity-user.php +++ b/resources/libraries/unity-user.php @@ -196,6 +196,10 @@ public function getLastname() return $this->getLDAPUser()->getAttribute("sn")[0]; } + public function getFullname() { + return $this->getFirstname() . " " . $this->getLastname(); + } + /** * Sets the mail in the account and the ldap entry * From fc25f2c7f5ebb5b12b1f3e795569593db8293e64 Mon Sep 17 00:00:00 2001 From: Hakan Saplakoglu Date: Tue, 6 Apr 2021 03:03:46 +0000 Subject: [PATCH 12/82] updated navbar items --- resources/templates/header.php | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/resources/templates/header.php b/resources/templates/header.php index 62faa6c6..553ccc68 100644 --- a/resources/templates/header.php +++ b/resources/templates/header.php @@ -26,21 +26,18 @@ About"; - echo "Contact"; echo "Documentation"; //echo "Cluster Status"; if (isset($_SESSION["user-state"]) && $_SESSION["user-state"] == "present") { // Menu Items for Present Users + echo "Support"; echo "Account Settings"; echo "My Groups"; - - if ($_SESSION["is_pi"]) { - echo "PI Management"; - } + echo "PI Portal"; echo "JupyterLab"; } else { - echo "Login / Request Account"; + echo "Login / Request Account"; } ?> @@ -48,7 +45,7 @@