Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval(base64_decode("ZXZhbChzdHJfcm90MTMoZ3p1bmNvbXByZXNzKGd6aW5mbGF0ZShzdHJyZXYoYmFz..

Decoded Output download

b'
if (!defined(\'_PS_VERSION_\')) {
    exit;
}

require_once dirname(__FILE__) . \'/config.php\';
require_once _MONSTER_BALIKOBOT_CLASSES_DIR_ . \'API.php\';
require_once _MONSTER_BALIKOBOT_CLASSES_DIR_ . \'Carrier.php\';
require_once _MONSTER_BALIKOBOT_CLASSES_DIR_ . \'Order.php\';
require_once _MONSTER_BALIKOBOT_CLASSES_DIR_ . \'Package.php\';

if (!class_exists(\'MonsterModuleLicenseValidator\')) {

    class MonsterModuleLicenseValidator
    {
        private $module;
        private $licenseKey;
        private $licenseChecked = false;
        private $licenseValidity = false;
        private $baseUrl = \'licence.monstermedia.cz\';
        private $shopUrl;
        protected static $validations = [];

        public function __construct($shopUrl, $module, $licenseKey)
        {
            $this->module = $module;
            $this->licenseKey = $licenseKey;
            $this->shopUrl = $shopUrl;
        }

        public function isLicenseValid()
        {
            if (!$this->licenseChecked) {
                $this->licenseValidity = $this->checkLicense();
                $this->licenseChecked = true;
            }

            return $this->licenseValidity;
        }

        private function checkLicense()
		{
			try {
				$data = $this->request(\'GET\', \'/license/\' . $this->module . \'/\' . $this->licenseKey);
				// this should be true...
				if(is_object($data) && $data->key == $this->licenseKey){
					return true;
				}else{

					//check monster_developer module
					if (Module::isInstalled(\'monster_developer\')){
						$developerKey = Configuration::get(strtoupper(\'monster_developer\') . \'_LICENSE_KEY\');
						$data = $this->request(\'GET\', \'/license/monster_developer/\' . $developerKey);
						if(is_object($data) && $data->key == $developerKey) {
							return true;
						}
					}
				}

				return false;

			} catch (Exception $e) {
				if ($e->getCode() >= 500) {

					// our fault...
					return true;
				}

				return false;
			}
		}

        /**
         * @param       $method
         * @param       $endpoint
         * @param array $data
         *
         * @return mixed
         * @throws Exception
         */
        private function request($method, $endpoint, $data = [])
        {
            $c = curl_init();
            curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($c, CURLOPT_URL, $this->baseUrl . $endpoint);
            curl_setopt($c, CURLOPT_CUSTOMREQUEST, $method);
            curl_setopt($c, CURLOPT_HTTPHEADER, [\'X-Host-Validation: \' . $this->shopUrl]);

            if (!empty($data)) {
                curl_setopt($c, CURLOPT_POSTFIELDS, $data);
            }

            $body = curl_exec($c);
            $httpcode = curl_getinfo($c, CURLINFO_HTTP_CODE);
            curl_close($c);

            /*if ($httpcode != 200 && $httpcode != 201) {
                throw new Exception($body, $httpcode);
            }*/

            return json_decode($body);
        }

        /**
         * Validate license for given module
         *
         * @param $module
         * @param $licenseKey
         *
         * @return boolean
         */
        public static function isValid($module, $licenseKey)
        {
            if (!isset(self::$validations[$module . \'-\' . $licenseKey])) {
                $shopUrl = Context::getContext()->shop->domain;

                $validator = new self($shopUrl, $module, $licenseKey);
                self::$validations[$module . \'-\' . $licenseKey] = $validator->isLicenseValid();
            }

            return self::$validations[$module . \'-\' . $licenseKey];
        }
    }
}

$ownModule = mb_strpos($_SERVER[\'REQUEST_URI\'], \'monster_balikobot\') !== false;
$admin = mb_strpos(strtolower(get_class(Context::getContext()->controller)), \'admin\') !== false;
if (!$admin && $ownModule && !MonsterModuleLicenseValidator::isValid(\'monster_balikobot\', Configuration::get(strtoupper(\'monster_balikobot\').\'_LICENSE_KEY\'))) {
    http_response_code(403);
    echo "Neplatna licence";
    die();
}
if(Module::isInstalled(\'monster_developer\') && !class_exists(\'MonsterModuleLicenseValidator\')){
    $moduleName = \'monster_balikobot\';
    require_once _PS_MODULE_DIR_ . \'monster_developer/validation.php\';
}

abstract class monster_balikobot_core extends Module
{
    private $licenseKey;

    public function __construct()
    {
        $this->name = \'monster_balikobot\';
        $this->tab = \'shipping_logistics\';
        $this->author = \'MONSTER MEDIA, s.r.o.\';
        $this->need_instance = 0;
        $this->licenseKey = Configuration::get(\'MONSTER_BALIKOBOT_LICENSE_KEY\');
        $this->ps_versions_compliancy = array(\'min\' => \'1.5\', \'max\' => \'1.7.999\');
        $this->bootstrap = true;

        parent::__construct();

        $this->displayName = $this->l(\'Balkobot\');
        $this->description = $this->l(\'Napojen e-shopu na Balkobot.\');

        $this->confirmUninstall = $this->l(\'Opravdu chcete odinstalovat modul Balkobot?\');
    }

    public function install()
    {
        //remove old override if nothing else gets overriden
        if (file_exists(_PS_OVERRIDE_DIR_ . "controllers/admin/AdminOrdersController.php")) {
            $md5 = md5_file(_PS_OVERRIDE_DIR_ . "controllers/admin/AdminOrdersController.php");
            if ($md5 == \'bc9338c7fe7f52863066e54211c42af0\' || $md5 == \'6623325bc37253275a1a139118981519\') {
                unlink(_PS_OVERRIDE_DIR_ . "controllers/admin/AdminOrdersController.php");
            }
        }

        $hash = Tools::passwdGen(32);
        Configuration::updateValue(\'MONSTER_BALIKOBOT_SECURITY_HASH\', $hash);
        Configuration::updateValue(\'MONSTER_BALIKOBOT_INSTALL_DATE\', date("Y-m-d H:i:s"));

        return parent::install() && $this->setValues() && $this->setTab() && $this->setDatabase() && $this->setHooks(
            ) && unlink(_PS_CACHE_DIR_ . \'/class_index.php\');
    }

    public function uninstall()
    {
        Configuration::deleteByName(\'MONSTER_BALIKOBOT_SECURITY_HASH\');

        return parent::uninstall() && $this->unsetValues() && $this->unsetTab() && $this->unsetDatabase();
    }

    //hodnoty v configu
    public function setValues()
    {
        return true;
    }

    public function unsetValues()
    {
        return Configuration::deleteByName(\'MONSTER_BALIKOBOT_API_USER\') && Configuration::deleteByName(
                \'MONSTER_BALIKOBOT_API_KEY\'
            ) && Configuration::deleteByName(\'MONSTER_BALIKOBOT_COD_MODULE\') && Configuration::deleteByName(
                \'MONSTER_BALIKOBOT_COD_MODULE_2\'
            ) && Configuration::deleteByName(\'MONSTER_BALIKOBOT_ID_ORDER_PARAM\');
    }

    //taby v adminu
    public function setTab()
    {
        return true;
    }

    public function unsetTab()
    {
        return true;
    }

    //tabulky v DB
    public function setDatabase()
    {
        $sql = \'
			CREATE TABLE IF NOT EXISTS `\' . _DB_PREFIX_ . \'monster_balikobot_carriers` (
				`id_carrier` int(11) NOT NULL,
				`code` varchar(50) NOT NULL,
				`service` varchar(50) NOT NULL,
				`name` varchar(255) NOT NULL,
				`service_name` varchar(255) NOT NULL,
				PRIMARY KEY (`id_carrier`)
			) DEFAULT CHARSET=utf8\';

        if (!Db::getInstance()
            ->execute($sql)) {
            return false;
        }

        $sql = \'
			CREATE TABLE IF NOT EXISTS `\' . _DB_PREFIX_ . \'monster_balikobot_packages` (
				`id` int(11) NOT NULL AUTO_INCREMENT,
				`id_order` int(11) UNSIGNED NOT NULL,
				`package_id` varchar(50) NOT NULL,
				`carrier_id` varchar(50) NOT NULL,
				`carrier` int(11) NOT NULL,
				`carrier_package_type` varchar(50) NULL,
				`label_text` varchar(255) NOT NULL DEFAULT \'\',
				`supplier` int(11) NOT NULL DEFAULT 0,
				`label_url` varchar(255) NOT NULL,
				`sent` tinyint(1) NOT NULL DEFAULT 0,
                `delivered` tinyint(1) NOT NULL DEFAULT -1,
				`order_number` int(11) NOT NULL DEFAULT 1,
				`order_count` int(11) NOT NULL DEFAULT 1,
                `price_type` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT 1,
				`custom_price` DECIMAL( 20, 6 ) NULL DEFAULT 0,
				`id_employee` int(11) NULL DEFAULT NULL,
				PRIMARY KEY (`id`)
			) DEFAULT CHARSET=utf8\';

        if (!Db::getInstance()
            ->execute($sql)) {
            return false;
        }

        $sql = \'
			CREATE TABLE IF NOT EXISTS `\' . _DB_PREFIX_ . \'monster_balikobot_orders` (
				`id` int(11) NOT NULL AUTO_INCREMENT,
				`supplier_id` int(11) UNSIGNED NULL,
				`carrier_code` varchar(50) NOT NULL,
				`order_id` varchar(50) NOT NULL,
				`file_url` varchar(255) NOT NULL,
				`handover_url` varchar(255) NOT NULL,
				`labels_url` varchar(255) NOT NULL,
				`date` datetime NOT NULL,
				`count` int(11) NOT NULL,
				PRIMARY KEY (`id`)
			) DEFAULT CHARSET=utf8\';

        if (!Db::getInstance()
            ->execute($sql)) {
            return false;
        }

        $sql = \'
			CREATE TABLE IF NOT EXISTS `\' . _DB_PREFIX_ . \'monster_balikobot_checks` (
				`id` int(11) NOT NULL AUTO_INCREMENT,
				`id_order` int(11) NOT NULL,
				`checked` int(1) NOT NULL DEFAULT 0,
				`error` varchar(255) NULL,
				PRIMARY KEY (`id`)
			) DEFAULT CHARSET=utf8\';

        if (!Db::getInstance()
            ->execute($sql)) {
            return false;
        }

        // in case of update from previous versions
        try {
            Db::getInstance()->execute(
                \'ALTER TABLE `\' . _DB_PREFIX_ . \'monster_balikobot_packages` ADD `delivered` TINYINT(1) NOT NULL DEFAULT -1 AFTER `sent`\'
            );
            Db::getInstance()->execute(
                \'ALTER TABLE `\' . _DB_PREFIX_ . \'monster_balikobot_packages` ADD `price_type` TINYINT(1) NOT NULL DEFAULT 1 AFTER `order_count`\'
            );
            Db::getInstance()->execute(
                \'ALTER TABLE `\' . _DB_PREFIX_ . \'monster_balikobot_packages` ADD `custom_price` DECIMAL( 20, 6 ) NULL DEFAULT 0 AFTER `price_type`\'
            );
            Db::getInstance()->execute(
                \'ALTER TABLE `\' . _DB_PREFIX_ . \'monster_balikobot_packages` ADD `id_employee` INT(11) NULL DEFAULT NULL AFTER `custom_price`\'
            );
            Db::getInstance()->execute(
                \'ALTER TABLE `\' . _DB_PREFIX_ . \'monster_balikobot_orders` CHANGE `order_id` `order_id` VARCHAR(50) NOT NULL;\'
            );
            Db::getInstance()->execute(
                \'ALTER TABLE `\' . _DB_PREFIX_ . \'monster_balikobot_orders` CHANGE `supplier_id` `supplier_id` INT(11) UNSIGNED NULL DEFAULT NULL;\'
            );
        } catch (Exception $e) {
        }

        return true;
    }

    public function unsetDatabase()
    {
        return true;
    }

    //hooky
    public function setHooks()
    {
        if (_PS_VERSION_ >= "1.7.7.0"){
            return  $this->registerHook(\'backOfficeHeader\') &&
                    $this->registerHook(\'displayAdminOrderTop\') &&
                    $this->registerHook(\'displayAdminOrderMain\') &&
                    $this->registerHook(\'displayAdminAfterHeader\');
        } else {
            return  $this->registerHook(\'backOfficeHeader\') &&
                    $this->registerHook(\'displayAdminListBefore\') &&
                    $this->registerHook(\'displayAdminOrderContentShip\');
        }

    }

    public function getContent()
    {
        $output = null;

        if (Tools::isSubmit(\'submitBalikobotKeys\')) {
            Configuration::updateValue(\'MONSTER_BALIKOBOT_LICENSE_KEY\', Tools::getValue(\'license_key\'));

            Configuration::updateValue(\'MONSTER_BALIKOBOT_API_USER\', strval(Tools::getValue(\'API_USER\')));
            Configuration::updateValue(\'MONSTER_BALIKOBOT_API_KEY\', strval(Tools::getValue(\'API_KEY\')));
            Configuration::updateValue(\'MONSTER_BALIKOBOT_DEBUG\', strval(Tools::getValue(\'DEBUG\')));
            Configuration::updateValue(\'MONSTER_BALIKOBOT_COD_MODULE\', strval(Tools::getValue(\'cod_module\')));
            Configuration::updateValue(\'MONSTER_BALIKOBOT_COD_MODULE_2\', strval(Tools::getValue(\'cod_module_2\')));
            Configuration::updateValue(\'MONSTER_BALIKOBOT_NEW_STATE_1\', strval(Tools::getValue(\'new_state_1\')));
            Configuration::updateValue(\'MONSTER_BALIKOBOT_NEW_STATE_2\', strval(Tools::getValue(\'new_state_2\')));
            Configuration::updateValue(\'MONSTER_BALIKOBOT_NEW_STATE_3\', strval(Tools::getValue(\'new_state_3\')));
            Configuration::updateValue(\'MONSTER_BALIKOBOT_NEW_STATE_4\', strval(Tools::getValue(\'new_state_4\')));
            Configuration::updateValue(\'MONSTER_BALIKOBOT_ID_ORDER_PARAM\', strval(Tools::getValue(\'id_order_param\')));
            Configuration::updateValue(\'MONSTER_BALIKOBOT_SUPPLIERS\', strval(Tools::getValue(\'suppliers\')));
            Configuration::updateValue(\'MONSTER_BALIKOBOT_TRACKING_MAIL\', strval(Tools::getValue(\'tracking_mail\')));
            Configuration::updateValue(
                \'MONSTER_BALIKOBOT_EMPLOYEE_PACKAGES\',
                strval(Tools::getValue(\'employee_packages\'))
            );

            $output .= $this->displayConfirmation($this->l(\'Nastaven bylo spn uloeno.\'));
        } else {
            if (Tools::isSubmit(\'submitBalikobotCarriers\')) {
                $default_lang = (int)Configuration::get(\'PS_LANG_DEFAULT\');
                $carriers = Carrier::getCarriers($default_lang, false, false, false, null, Carrier::ALL_CARRIERS);
                //var_dump(Tools::getAllValues());
                foreach ($carriers as $carrier) {
                    $id_carrier = $carrier[\'id_carrier\'];
                    $value = strval(Tools::getValue(\'CARRIER_\' . $id_carrier));
                    $bbCarrier = new BalikobotCarrier($id_carrier);
                    $bbCarrier->setCodeWithService($value);
                    $bbCarrier->save();
                }
                $output .= $this->displayConfirmation($this->l(\'Piazen dopravc bylo spn uloeno.\'));
            }

            if (Tools::isSubmit(\'submitBalikobotCarriersCustoms\')) {
                Configuration::updateValue(
                    \'MONSTER_BALIKOBOT_CARRIER_CUSTOM_TOPTRANS\',
                    Tools::getValue(\'CARRIER_CUSTOM_TOPTRANS\')
                );
                Configuration::updateValue(
                    \'MONSTER_BALIKOBOT_CARRIER_CUSTOM_PPL\',
                    Tools::getValue(\'CARRIER_CUSTOM_PPL\')
                );
                Configuration::updateValue(
                    \'MONSTER_BALIKOBOT_CARRIER_CUSTOM_GEIS\',
                    Tools::getValue(\'CARRIER_CUSTOM_GEIS\')
                );
                Configuration::updateValue(
                    \'MONSTER_BALIKOBOT_CARRIER_CUSTOM_GWCZ\',
                    Tools::getValue(\'CARRIER_CUSTOM_GWCZ\')
                );

                foreach (BalikobotCarrier::getAllAssignedCarriers() as $bbCarrier) {
                    if ($bbCarrier->code == \'toptrans\') {
                        Configuration::updateValue(
                            \'MONSTER_BALIKOBOT_CARRIER_CUSTOM_SERVICE_\' . $bbCarrier->id_carrier,
                            Tools::getValue(\'CARRIER_CUSTOM_SERVICE_\' . $bbCarrier->id_carrier)
                        );
                    }
                }
            }

            if (Tools::isSubmit(\'submitBalikobotSuppliers\')) {
                Configuration::updateValue(
                    \'MONSTER_BALIKOBOT_SUPPLIERS_STATUS\',
                    json_encode(Tools::getValue(\'supplier_status\'))
                );

                if (is_array(Tools::getValue(\'SUPPLIER_API\'))) {
                    foreach (Tools::getValue(\'SUPPLIER_API\') as $id => $data) {
                        Configuration::updateValue(\'MONSTER_BALIKOBOT_SUPPLIERS_API_\' . $id, json_encode($data));
                    }
                }
            }
        }

        if (!MonsterModuleLicenseValidator::isValid(
            $this->name,
            Configuration::get(strtoupper($this->name) . \'_LICENSE_KEY\')
        )) {
            $output .= \'<div class="alert alert-danger"><strong>Licence nen platn.</strong> Funcionalita modulu nebude dostupn</div>\';
        } else {
            $output .= \'<div class="alert alert-success"><strong>Licence je platn.</strong></div>\';

            $hash = Configuration::get(\'MONSTER_BALIKOBOT_SECURITY_HASH\', false);
            $date = Configuration::get(\'MONSTER_BALIKOBOT_INSTALL_DATE\', false);
            if (!$hash) {
                $hash = Tools::passwdGen(32);
                Configuration::updateValue(\'MONSTER_BALIKOBOT_SECURITY_HASH\', $hash);
            }
            if (!$date) {
                Configuration::updateValue(\'MONSTER_BALIKOBOT_INSTALL_DATE\', date("Y-m-d H:i:s"));
            }
            $output .= \'<div class="alert alert-info"><strong>Script pro automatickou kontrolu adres objednvek je zde: <a href="\' . _PS_BASE_URL_ . \'/modules/monster_balikobot/cron.php?hash=\' . $hash . \'">\' . _PS_BASE_URL_ . \'/modules/monster_balikobot/cron.php?hash=\' . $hash . \'</a>.</strong>
                        <br/><br/>Script kontroluje doruitelnost novch a stav expedovanch objednvek. Nen nutn pro sprvn fungovn modulu.
                        </div>\';
        }

        $this->context->smarty->assi'b"gn(
            [
                'balikobot_orders' => BalikobotOrder::getOrdersHistory(),
            ]
        );

        return $output . $this->displayFormKeys() . $this->displayFormCarriers() . $this->displayFormCarriersCustoms(
            ) . $this->displayFormSuppliers() . $this->displayOrderHistory();
    }

    protected function displayOrderHistory()
    {
        if (!MonsterModuleLicenseValidator::isValid(
            $this->name,
            Configuration::get(strtoupper($this->name) . '_LICENSE_KEY')
        )) {
            return null;
        }

        return $this->display(__DIR__ . DIRECTORY_SEPARATOR . 'monster_balikobot.php', 'orders_history.tpl');
    }

    public function displayFormKeys()
    {
        $default_lang = (int)Configuration::get('PS_LANG_DEFAULT');

        $fields_form[0]['form'] = array(
            'legend' => array(
                'title' => $this->l('Licence modulu'),
            ),
            'input' => array(
                array(
                    'type' => 'text',
                    'label' => $this->l('Licenn kl'),
                    'name' => 'license_key',
                    'required' => true
                ),

            ),
            'submit' => array(
                'title' => $this->l('Save'),
                'class' => 'btn btn-default pull-right'
            )
        );

        if (MonsterModuleLicenseValidator::isValid($this->name, $this->licenseKey)) {
            $paymentModules = PaymentModule::getInstalledPaymentModules();
            foreach ($paymentModules as &$module) {
                $module['displayName'] = Module::getModuleName($module['name']) . ' (' . $module['name'] . ')';
            }

            $orderStates = OrderState::getOrderStates($default_lang);

            $fields_form[1]['form'] = array(
                'legend' => array(
                    'title' => $this->l('Nastaven'),
                ),
                'input' => array(
                    array(
                        'type' => 'text',
                        'label' => $this->l('API uivatel'),
                        'name' => 'API_USER',
                        'size' => 20,
                        'required' => true
                    ),
                    array(
                        'type' => 'text',
                        'label' => $this->l('API kl'),
                        'name' => 'API_KEY',
                        'size' => 20,
                        'required' => true
                    ),
                    array(
                        'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
                        'class' => 't',
                        'label' => $this->l('Logovn komunikace'),
                        'name' => 'DEBUG',
                        'desc' => 'Ukldat komunikaci s Balkobotem do samostatnho logu.',
                        'values' => array(
                            array(
                                'id' => 'active_on',
                                'value' => 1,
                                'label' => $this->l('Yes')
                            ),
                            array(
                                'id' => 'active_off',
                                'value' => 0,
                                'label' => $this->l('No')
                            )
                        ),
                    ),
                    array(
                        'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
                        'class' => 't',
                        'label' => $this->l('Expedice z vce sklad'),
                        'name' => 'suppliers',
                        'desc' => 'Nutn pedchoz konfigurace na stran Balkobotu.',
                        'values' => array(
                            array(
                                'id' => 'active_on',
                                'value' => 1,
                                'label' => $this->l('Yes')
                            ),
                            array(
                                'id' => 'active_off',
                                'value' => 0,
                                'label' => $this->l('No')
                            )
                        ),
                    ),
                    array(
                        'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
                        'class' => 't',
                        'label' => $this->l('Odeslat email po naten sledovacho sla'),
                        'name' => 'tracking_mail',
                        'desc' => 'Zkaznci automaticky dostanou e-mail se sledovacm slem.',
                        'values' => array(
                            array(
                                'id' => 'active_on',
                                'value' => 1,
                                'label' => $this->l('Yes')
                            ),
                            array(
                                'id' => 'active_off',
                                'value' => 0,
                                'label' => $this->l('No')
                            )
                        ),
                    ),
                    array(
                        'type' => (_PS_VERSION_ > 1.5) ? 'switch' : 'radio',
                        'class' => 't',
                        'label' => $this->l('Expedovat pouze vlastn balky'),
                        'name' => 'employee_packages',
                        'desc' => 'Zamstnanci budou mt monost odeslat dopravcm pouze ttky, kter sami vygenerovali.',
                        'values' => array(
                            array(
                                'id' => 'active_on',
                                'value' => 1,
                                'label' => $this->l('Yes')
                            ),
                            array(
                                'id' => 'active_off',
                                'value' => 0,
                                'label' => $this->l('No')
                            )
                        ),
                    ),
                    array(
                        'type' => 'select',
                        'label' => 'Jako ID objednvky do Balkobotu odeslat',
                        'name' => 'id_order_param',
                        'options' => array(
                            'query' => [
                                ['name' => 'id', 'displayName' => 'slo (ID) objednvky'],
                                ['name' => 'reference', 'displayName' => 'Kd objednvky'],
                            ],
                            'id' => 'name',
                            'name' => 'displayName'
                        ),
                        'required' => false
                    ),
                    array(
                        'type' => 'select',
                        'label' => 'Modul pro dobrku',
                        'name' => 'cod_module',
                        'options' => array(
                            'query' => array_merge([['name' => '-', 'displayName' => '-- dn --']], $paymentModules),
                            'id' => 'name',
                            'name' => 'displayName'
                        ),
                        'required' => false
                    ),
                    array(
                        'type' => 'select',
                        'label' => 'Modul pro dobrku 2',
                        'name' => 'cod_module_2',
                        'options' => array(
                            'query' => array_merge([['name' => '-', 'displayName' => '-- dn --']], $paymentModules),
                            'id' => 'name',
                            'name' => 'displayName'
                        ),
                        'required' => false
                    ),
                    array(
                        'type' => 'select',
                        'label' => 'Stav objednvky po vygenerovn ttku',
                        'name' => 'new_state_1',
                        'options' => array(
                            'query' => array_merge([['id_order_state' => '', 'name' => '-- nemnit --']], $orderStates),
                            'id' => 'id_order_state',
                            'name' => 'name'
                        ),
                        'required' => false
                    ),
                    array(
                        'type' => 'select',
                        'label' => 'Stav objednvky po objednn svozu',
                        'name' => 'new_state_2',
                        'options' => array(
                            'query' => array_merge([['id_order_state' => '', 'name' => '-- nemnit --']], $orderStates),
                            'id' => 'id_order_state',
                            'name' => 'name'
                        ),
                        'required' => false
                    ),
                    array(
                        'type' => 'select',
                        'label' => 'Stav objednvky po chybn kontrole adresy',
                        'name' => 'new_state_3',
                        'options' => array(
                            'query' => array_merge([['id_order_state' => '', 'name' => '-- nemnit --']], $orderStates),
                            'id' => 'id_order_state',
                            'name' => 'name'
                        ),
                        'required' => false,
                        'desc' => 'Vyaduje aktivn script pro kontrolu objednvek.'
                    ),
                    array(
                        'type' => 'select',
                        'label' => 'Stav objednvky po spnm doruen balku',
                        'name' => 'new_state_4',
                        'options' => array(
                            'query' => array_merge([['id_order_state' => '', 'name' => '-- nemnit --']], $orderStates),
                            'id' => 'id_order_state',
                            'name' => 'name'
                        ),
                        'required' => false,
                        'desc' => 'Vyaduje aktivn script pro kontrolu objednvek.'
                    ),
                ),
                'submit' => array(
                    'title' => $this->l('Save'),
                    'class' => 'btn btn-default pull-right'
                )
            );
        }
        $helper = $this->getFormHelper('submitBalikobotKeys', $default_lang);

        $helper->fields_value['license_key'] = Configuration::get('MONSTER_BALIKOBOT_LICENSE_KEY');
        if (MonsterModuleLicenseValidator::isValid($this->name, $this->licenseKey)) {
            $helper->fields_value['API_USER'] = Configuration::get('MONSTER_BALIKOBOT_API_USER');
            $helper->fields_value['API_KEY'] = Configuration::get('MONSTER_BALIKOBOT_API_KEY');
            $helper->fields_value['DEBUG'] = Configuration::get('MONSTER_BALIKOBOT_DEBUG');
            $helper->fields_value['cod_module'] = Configuration::get('MONSTER_BALIKOBOT_COD_MODULE');
            $helper->fields_value['cod_module_2'] = Configuration::get('MONSTER_BALIKOBOT_COD_MODULE_2');
            $helper->fields_value['new_state_1'] = Configuration::get('MONSTER_BALIKOBOT_NEW_STATE_1');
            $helper->fields_value['new_state_2'] = Configuration::get('MONSTER_BALIKOBOT_NEW_STATE_2');
            $helper->fields_value['new_state_3'] = Configuration::get('MONSTER_BALIKOBOT_NEW_STATE_3');
            $helper->fields_value['new_state_4'] = Configuration::get('MONSTER_BALIKOBOT_NEW_STATE_4');
            $helper->fields_value['id_order_param'] = Configuration::get('MONSTER_BALIKOBOT_ID_ORDER_PARAM');
            $helper->fields_value['suppliers'] = Configuration::get('MONSTER_BALIKOBOT_SUPPLIERS');
            $helper->fields_value['tracking_mail'] = Configuration::get('MONSTER_BALIKOBOT_TRACKING_MAIL');
            $helper->fields_value['employee_packages'] = Configuration::get('MONSTER_BALIKOBOT_EMPLOYEE_PACKAGES');
        }
        return $helper->generateForm($fields_form);
    }

    public function displayFormCarriers()
    {
        if (!MonsterModuleLicenseValidator::isValid($this->name, $this->licenseKey)) {
            return null;
        }

        $default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
        $inputs = [];
        $bb_carriers_options = [];
        try {
            $bbCarriers = BalikobotCarrier::getAllPossibleCarriers();
        } catch (BalikobotAPIException $e) {
            return $e->getMessageList()[0];
        }
        foreach ($bbCarriers as $code => $name) {
            $bb_carriers_options[] = array(
                'id_option' => $code,
                'name' => $name,
            );
        }
        $carriers = Carrier::getCarriers($default_lang, false, false, false, null, Carrier::ALL_CARRIERS);
        foreach ($carriers as $carrier) {
            $inputs[] = array(
                'type' => 'select',
                'label' => $carrier['name'],
                'name' => 'CARRIER_' . $carrier['id_carrier'],
                'required' => true,
                'options' => array(
                    'query' => $bb_carriers_options,
                    'id' => 'id_option',
                    'name' => 'name',
                ),
            );
        }

        $fields_form[0]['form'] = array(
            'legend' => array(
                'title' => $this->l('Piazen dopravc'),
            ),
            'input' => $inputs,
            'submit' => array(
                'title' => $this->l('Save'),
                'class' => 'btn btn-default pull-right'
            )
        );

        $helper = $this->getFormHelper('submitBalikobotCarriers', $default_lang);

        foreach ($carriers as $carrier) {
            $id_carrier = $carrier['id_carrier'];
            $varName = 'CARRIER_' . $id_carrier;
            $bbCarrier = new BalikobotCarrier($id_carrier);
            $helper->fields_value[$varName] = $bbCarrier->getCodeWithService();
        }

        return $helper->generateForm($fields_form);
    }

    public function displayFormCarriersCustoms()
    {
        if (!MonsterModuleLicenseValidator::isValid($this->name, $this->licenseKey)) {
            return null;
        }

        $default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
        $inputs = [];

        foreach (BalikobotCarrier::getAllAssignedCarriers() as $bbCarrier) {
            if (
                $bbCarrier->code == 'toptrans' ||
                ($bbCarrier->code == 'ppl' && in_array($bbCarrier->service, [15, 19])) ||
                ($bbCarrier->code == 'geis' && in_array($bbCarrier->service, [4, 5, 10, 11])) ||
                $bbCarrier->code == 'gwcz'
            ) { // paletov pepravy s mu_type
                $inputs[] = array(
                    'type' => 'select',
                    'label' => $bbCarrier->name . ', ' . $bbCarrier->serviceName . ' - vchoz typ balku',
                    'name' => 'CARRIER_CUSTOM_' . strtoupper($bbCarrier->code),
                    'required' => true,
                    'options' => array(
                        'query' => BalikobotCarrier::getCarrierManipulationUnits($bbCarrier->code),
                        'id' => 'code',
                        'name' => 'name',
                    ),
                );
            }
            if ($bbCarrier->code == 'toptrans') { // toptrans vnos do patra
                $inputs[] = array(
                    'type' => 'select',
                    'label' => $bbCarrier->name . ', ' . $bbCarrier->serviceName . ' - Top Comfort',
                    'name' => 'CARRIER_CUSTOM_SERVICE_' . $bbCarrier->id_carrier,
                    'required' => true,
                    'options' => array(
                        'query' => array(['code' => 0, 'name' => 'Ne'], ['code' => 1, 'name' => 'Ano']),
                        'id' => 'code',
                        'name' => 'name',
                    ),
                );
            }
        }

        if ($inputs) {
            $fields_form[0]['form'] = array(
                'legend' => array(
                    'title' => $this->l('Speciln nastaven dopravc'),
                ),
                'input' => $inputs,
                'submit' => array(
                    'title' => $this->l('Save'),
                    'class' => 'btn btn-default pull-right'
                )
            );

            $helper = $this->getFormHelper('submitBalikobotCarriersCustoms', $default_lang);

            foreach ($inputs as $i) {
                $helper->fields_value[$i['name']] = Configuration::get('MONSTER_BALIKOBOT_' . $i['name']);
            }

            return $helper->generateForm($fields_form);
        } else {
            return '';
        }
    }

    public function displayFormSuppliers()
    {
        $default_lang = (int)Configuration::get('PS_LANG_DEFAULT');

        if (MonsterModuleLicenseValidator::isValid($this->name, $this->licenseKey) && Config"b'uration::get(
                \'MONSTER_BALIKOBOT_SUPPLIERS\'
            )) {
            $suppliers = Supplier::getSuppliers();

            $fields_form[0][\'form\'] = array(
                \'legend\' => array(
                    \'title\' => $this->l(\'Nastaven dodavatel\'),
                ),
                \'input\' => array(),
                \'submit\' => array(
                    \'title\' => $this->l(\'Save\'),
                    \'class\' => \'btn btn-default pull-right\'
                )
            );

            $helper = $this->getFormHelper(\'submitBalikobotSuppliers\', $default_lang);

            foreach ($suppliers as $s) {
                $fields_form[0][\'form\'][\'input\'][] =
                    array(
                        \'type\' => (_PS_VERSION_ > 1.5) ? \'switch\' : \'radio\',
                        \'class\' => \'t\',
                        \'label\' => $s[\'name\'],
                        \'name\' => \'supplier_status[\' . (int)$s[\'id_supplier\'] . \']\',
                        \'values\' => array(
                            array(
                                \'id\' => \'active_on\',
                                \'value\' => 1,
                                \'label\' => $this->l(\'Yes\')
                            ),
                            array(
                                \'id\' => \'active_off\',
                                \'value\' => 0,
                                \'label\' => $this->l(\'No\')
                            )
                        ),
                    );

                $helper->fields_value[\'supplier_status[\' . (int)$s[\'id_supplier\'] . \']\'] = 0;
            }


            $fields_form[0][\'form\'][\'description\'] = "Dodavatel, kter zde aktivujete, budou mt ttky automaticky tisknut s jejich adresou pes vlastn API.";

            $formId = 1;

            $suppliersBB = json_decode(Configuration::get(\'MONSTER_BALIKOBOT_SUPPLIERS_STATUS\'));
            if (is_array($suppliersBB) || is_object($suppliersBB)) {
                foreach ($suppliersBB as $id => $state) {
                    $helper->fields_value[\'supplier_status[\' . $id . \']\'] = $state;

                    if ($state) {
                        $sup = new Supplier($id);

                        $fields_form[$formId][\'form\'] = array(
                            \'legend\' => array(
                                \'title\' => $sup->name,
                            ),
                            \'input\' => array(
                                array(
                                    \'type\' => \'text\',
                                    \'label\' => $this->l(\'API uivatel\'),
                                    \'name\' => \'SUPPLIER_API[\' . $id . \'][api_user]\',
                                    \'size\' => 20,
                                    \'required\' => true
                                ),
                                array(
                                    \'type\' => \'text\',
                                    \'label\' => $this->l(\'API kl\'),
                                    \'name\' => \'SUPPLIER_API[\' . $id . \'][api_key]\',
                                    \'size\' => 20,
                                    \'required\' => true
                                )
                            ),
                            \'submit\' => array(
                                \'title\' => $this->l(\'Save\'),
                                \'class\' => \'btn btn-default pull-right\'
                            )
                        );

                        foreach (
                            json_decode(
                                Configuration::get(\'MONSTER_BALIKOBOT_SUPPLIERS_API_\' . $id)
                            ) as $key => $value
                        ) {
                            $helper->fields_value[\'SUPPLIER_API[\' . $id . \'][\' . $key . \']\'] = $value;
                        }

                        $formId++;
                    }
                }
            }

            return $helper->generateForm($fields_form);
        }
    }

    public function getFormHelper($submitName, $defaultLang)
    {
        $helper = new HelperForm();

        // Module, token and currentIndex
        $helper->module = $this;
        $helper->name_controller = $this->name;
        $helper->token = Tools::getAdminTokenLite(\'AdminModules\');
        $helper->currentIndex = AdminController::$currentIndex . \'&configure=\' . $this->name;

        // Language
        $helper->default_form_language = $defaultLang;
        $helper->allow_employee_form_lang = $defaultLang;

        // Title and toolbar
        $helper->title = $this->displayName;
        $helper->show_toolbar = true;
        $helper->toolbar_scroll = true;
        $helper->submit_action = $submitName;
        $helper->toolbar_btn = array(
            \'save\' => array(
                \'desc\' => $this->l(\'Save\'),
                \'href\' => AdminController::$currentIndex . \'&configure=\' . $this->name . \'&save\' . $this->name . \'&token=\' . Tools::getAdminTokenLite(
                        \'AdminModules\'
                    ),
            ),
            \'back\' => array(
                \'href\' => AdminController::$currentIndex . \'&token=\' . Tools::getAdminTokenLite(\'AdminModules\'),
                \'desc\' => $this->l(\'Back to list\')
            ),
        );
        return $helper;
    }

    public function hookDisplayAdminAfterHeader($params)
    {

        if(Tools::getValue(\'controller\') == \'AdminOrders\' && Tools::getValue(\'id_order\') == false)
        {
            try {
                // order for all carriers
                if (Tools::isSubmit(\'submitObjednatSvoz\')) {
                    $result = BalikobotPackage::orderPackagesForAll();
                    $this->context->smarty->assign([ \'balikobot_last_order\' => $result ]);
                }

                // order for one carrier
                $submitOrderInfo = $this->getSubmitOrderInfo();
                if ($submitOrderInfo !== false) {
                    $result = BalikobotPackage::orderPackagesForCarrier($submitOrderInfo[\'supplierId\'], $submitOrderInfo[\'carrierCode\']);
                    $carrierName = BalikobotCarrier::getCarrierNameFromCode($submitOrderInfo[\'carrierCode\']);
                    $supplierName = Supplier::getNameById($submitOrderInfo[\'supplierId\']);
                    $this->context->smarty->assign([ \'balikobot_last_order\' => [ $supplierName => [$carrierName => $result ]]]);
                }

                // print labels for selected orders
                if (Tools::isSubmit(\'submitPrintLabel\'))
                {
                    $orderId = Tools::getValue(\'orderId\');
                    $position = Tools::getValue(\'position\');

                    // set new package weight, if provided
                    $weight = Tools::getValue(\'weight\');
                    if ($weight != \'\') {
                        BalikobotPackage::setWeight($orderId, $weight);
                    }

                    $package = new BalikobotPackage($orderId);

                    // set new package vat and custom price, if provided
                    if (Tools::getValue(\'price_type\')) {
                        $package->price_type = Tools::getValue(\'price_type\');
                    }
                    if (Tools::getValue(\'price\')) {
                        $package->custom_price = Tools::getValue(\'price\');
                    }

                    // set new custom label text, if provided
                    $labelText = Tools::getValue(\'label_text\');
                    if ($labelText != \'\') {
                        $package->label_text = $labelText;
                    }

                    // set new carrier package type, if provided
                    $carrierPackageType = Tools::getValue(\'carrier_package_type\');
                    if ($carrierPackageType != \'\') {
                        $package->carrier_package_type = $carrierPackageType;
                    }

                    // set new packages number, if provided
                    $pieces = Tools::getValue(\'pieces\');
                    if ($pieces != \'\') {
                        $package_pieces = $pieces;
                    }
                    else {
                        $package_pieces = 1;
                    }

                    // which label to print
                    $piece = Tools::getValue(\'piece\');
                    if ($piece != \'\') {
                        $package_piece = $piece;
                    }
                    else {
                        $package_piece = \'all\';
                    }

                    $labelUrl = $package->getLabelUrl($position, $package_pieces, $package_piece);
                    Tools::redirect($labelUrl);
                }

            }
            catch(BalikobotAPIException $e)
            {
                foreach ($e->getMessageList() as $message)
                {
                    $this->warnings[] = $message;
                }
            }

            return $this->hookDisplayAdminListBefore($params);
        } else {
            return null;
        }

    }

    public function hookDisplayAdminListBefore($params)
    {
        if (!MonsterModuleLicenseValidator::isValid($this->name, $this->licenseKey)) {
            return null;
        }

        if (Tools::getValue(\'controller\') == \'AdminOrders\') {
            $this->context->smarty->assign([\'balikobot_order\' => BalikobotPackage::getPackagesToOrderCount()]);
            if (_PS_VERSION_ >= "1.7.7.0"){
                    $this->context->smarty->assign(array (
                       \'balikobot_token\' => Tools::getValue(\'_token\')
                    ));
                return $this->display(__DIR__ . DIRECTORY_SEPARATOR . \'monster_balikobot.php\', \'orders_list_177.tpl\');
            } else {
                return $this->display(__DIR__ . DIRECTORY_SEPARATOR . \'monster_balikobot.php\', \'orders_list.tpl\');
            }
        } else {
            return null;
        }
    }

    /**
     *  Hook to display Balikobot buttons in Ship part of the order detail.
     */
    public function hookDisplayAdminOrderMain($params)
    {
        return $this->hookDisplayAdminOrderContentShip($params);
    }

    public function hookDisplayAdminOrderContentShip($params)
    {
        if (!MonsterModuleLicenseValidator::isValid($this->name, $this->licenseKey)) {
            return null;
        }

        if (_PS_VERSION_ >= "1.7.7.0"){
            $order = new Order($params[\'id_order\']);
            // pro 1.7.7.0 se veker post requesty e v top hooku
        } else {
            $order = $params[\'order\'];

            try {
                if (Tools::isSubmit(\'submitSmazaniStitku\')) {
                    BalikobotPackage::delete($order->id);
                    $this->context->controller->confirmations[] = \'Balk byl spn odebrn z API Balkobotu.\';
                }

            } catch (BalikobotAPIException $e) {
                foreach ($e->getMessageList() as $message) {
                    $this->context->controller->warnings[] = $message;
                }
            } catch (Exception $e) {
                $this->context->controller->warnings[] = $e->getMessage();
            }
        }

        $package = new BalikobotPackage($order->id);
        $package_in_api = (strlen($package->package_id) > 0);
        $package_sent = $package->sent;
        $package_carrier = $order->id_carrier;
        $position_count = $package->getLabelPositionCount();
        $carriers = BalikobotCarrier::getAllAssignedCarriers();
		$balikobot_mu_types = null;

        if(in_array($package->carrier->code, [\'toptrans\', \'gwcz\']) && is_null($package->carrier_package_type)){
            $package->carrier_package_type = Configuration::get(\'MONSTER_BALIKOBOT_CARRIER_CUSTOM_\' . strtoupper($package->carrier->code));
			$balikobot_mu_types = BalikobotCarrier::getCarrierManipulationUnits($package->carrier->code);
        }

        $this->context->smarty->assign(array (
           \'balikobot_id_order\'                 => $order->id,
           \'balikobot_in_api\'                   => $package_in_api,
           \'balikobot_is_sent\'                  => $package_sent,
           \'balikobot_carrier\'                  => $package_carrier,
           \'balikobot_carriers\'                 => $carriers,
           \'balikobot_position_count\'           => $position_count,
           \'balikobot_pieces_count\'             => $package->order_count,
           \'balikobot_label_text\'               => $package->label_text,
           \'balikobot_carrier_code\'             => $package->carrier->code,
           \'balikobot_carrier_package_type\'    => $package->carrier_package_type,
           \'balikobot_mu_types\'           		=> $balikobot_mu_types
        ));

        if (_PS_VERSION_ >= "1.7.7.0"){
            return $this->display(__DIR__ . DIRECTORY_SEPARATOR . \'monster_balikobot.php\', \'ship_177.tpl\');
        } else {
            return $this->display(__DIR__ . DIRECTORY_SEPARATOR . \'monster_balikobot.php\', \'ship.tpl\');
        }
    }

    public function hookDisplayAdminOrderTop()
    {
        try {
            // print labels for selected orders
            if (Tools::isSubmit(\'submitPrintLabel\'))
            {
                $orderId = Tools::getValue(\'orderId\');
                $position = Tools::getValue(\'position\');

                // set new package weight, if provided
                $weight = Tools::getValue(\'weight\');
                if ($weight != \'\') {
                    BalikobotPackage::setWeight($orderId, $weight);
                }

                $package = new BalikobotPackage($orderId);

                // set new package vat and custom price, if provided
                if (Tools::getValue(\'price_type\')) {
                    $package->price_type = Tools::getValue(\'price_type\');
                }
                if (Tools::getValue(\'price\')) {
                    $package->custom_price = Tools::getValue(\'price\');
                }

                // set new custom label text, if provided
                $labelText = Tools::getValue(\'label_text\');
                if ($labelText != \'\') {
                    $package->label_text = $labelText;
                }

                // set new carrier package type, if provided
                $carrierPackageType = Tools::getValue(\'carrier_package_type\');
                if ($carrierPackageType != \'\') {
                    $package->carrier_package_type = $carrierPackageType;
                }

                // set new packages number, if provided
                $pieces = Tools::getValue(\'pieces\');
                if ($pieces != \'\') {
                    $package_pieces = $pieces;
                }
                else {
                    $package_pieces = 1;
                }

                // which label to print
                $piece = Tools::getValue(\'piece\');
                if ($piece != \'\') {
                    $package_piece = $piece;
                }
                else {
                    $package_piece = \'all\';
                }

                $labelUrl = $package->getLabelUrl($position, $package_pieces, $package_piece);
                Tools::redirect($labelUrl);
            }

            // drop package from Balikobot API
            if (Tools::isSubmit(\'submitSmazaniStitku\')) {
                $orderId = Tools::getValue(\'orderId\');
                BalikobotPackage::delete($orderId);
                $this->context->smarty->assign(array (
                       \'balikobot_confirmations\' => \'Balk byl spn odebrn z API Balkobotu.\'
                   ));
            }
        }
        catch(BalikobotAPIException $e)
        {
            $this->context->smarty->assign(array (
                   \'balikobot_warnings\' => $e->getMessageList()
               ));
        }

        return $this->display(__DIR__ . DIRECTORY_SEPARATOR . \'monster_balikobot.php\', \'alerts.tpl\');
    }

    protected function getSubmitOrderInfo()
    {
        $carrierCodes = array_keys(BalikobotCarrier::$bb_carriers_list);
        $supplierIds = DB::getInstance()->executeS(\'SELECT DISTINCT supplier FROM \'._DB_PREFIX_.\'monster_balikobot_packages WHERE sent = 0\');

        foreach($supplierIds as $supplierId){
            foreach ($carrierCodes as $carrierCode)
            {
                if (Tools::isSubmit(\'submitObjednatSvoz_\'.$supplierId[\'supplier\'] .\'_\'. $carrierCode))
                {
                    return [\'supplierId\' => $supplierId[\'supplier\'], \'carrierCode\' => $carrierCode];
                }
            }
        }

        return false;
    }

    /**
     * Hook which adds Balikobot CSS into all back office pages.
     * @return mixed
     */
    public function hookBackOfficeHeader()
    {
        if (!class_exists(\'MonsterModuleLicenseValidator\') || !MonsterModuleLicenseValidator::isValid($this->name, $this->licenseKey)) {
            return null;
        }

        $this->context->smarty->assign(\'module_dir\', __PS_BASE_URI__ . \'modules/\' . $this->name);
        return $this->context->smarty->fetch(dirname(__FILE__) . \'/css/css.tpl\');
    }
}
'

Did this file decode correctly?

Original Code

<?php eval(base64_decode("ZXZhbChzdHJfcm90MTMoZ3p1bmNvbXByZXNzKGd6aW5mbGF0ZShzdHJyZXYoYmFzZTY0X2RlY29kZShiYXNlNjRfZGVjb2RlKCJaR2QxTDJOQldDOUlMMkl2VlZGMmRqbHNaMVpTT0haM1EyOVVNVk0wU3pBMmRrVlVTV1ZtYkVkTGJIbDJiRWRpY25SbWRtWnNUMUZuUWxoQ1ZqVm1jR0V3Vlc1clp5OUxMMjh3Wm14T1RHVjNVMWQ2VEhCWVJYbGFNeXMwTVcxdmRETmxVRlprZFRkUlIyOUpRbUkzZVRWQ1JtMUZhMlJaVVc5QmJtdENkakZRVURoVFRqaHZaazFHU210UGFFeEtTRWhHY0VoTGJXRnZVM0owZVRoeVUxRkRhMVZWZEdaeFp6VnJTSE0xYUVKaFEwTmlUVWNyYTNGcVIwcEtVRUZuTWtaME9UaENNamQxWmpOUk1qQnNXamM0WjBkV05FMXBTbGxDVW5wSlJVWnFTWFkzTkZVMmVYTjZPVE5UVjI1aFlWVm1SV1FyVG5FNWNUQlJlV1ZHVUhaWVl5OTFTRXBKVEdablpESkZZMjlPT0hoYWJHWkthRTkwTkN0UlVqa3JTMmRsTkU0NE1USkZabmhJTkZGRVJUZG9iV1EwVGpaUU1rWkljRGw2ZVVONU9XRkhSSEJwYXpoeFozRlpSM1Z5YkdSMFRtbzROMmN3Y1VVM1VuQmhMMVpPZW1JNFlXaEhRMEpUZG1odE1UUkRha1V2ZGpkQ2NWTmpVVXMzY1hwdWJWbHBlamh0VUZGTVowdzJNbEp0WVV0S2MxUnRibFZuYkcxSU1YaGpVMnQxV0RScWNscG5URkJIUkhGQlVIZFFZa1Z5Y0RGalNUbHJWbkp1ZFRCMlIwNUlhVXhtY0hGSmEyeHVSR1E0TDNwb1VXWlJhWGxaUXpOTFNFSTBObEpHTUZvM1RFVkVUbmw1Ykc0MFJHZGFRVU5hVEZRek1Ib3pLMWhrVXpFclpTdGhWazFrUTA5Qk0yMW9ibmRwYUV4aVJUWjVUVUp6V2xKaWVHSktabE5ZWVc1aWFGQTFNMUF4Ym1sbkx6aFJVbnBxVVV4QlVGQXJUaTlQVm05VWJXTlRSREpFTjJKemRGcEZieTlXWkhJeFNXeFhVRU5TYkRsaVpVWXpXVlI2ZG5KVFVuWXlUMDU2YlU1d1NFbDJkM2hGU201cFVIVkdVM1owYkRSeVUwUk5TMlZUTldKNE9XTnRiM2RpY0VFMVRHUXJSRzlPVGtOWE1FbEpkMjVrWjJKRFpqRXpPWFJHTlRsbWJVMVJRa2wzVjAxSlJWcEZWR3hrWlcxVlUwcGpja0ppWnpWbVVGUm1WVkpsVTFORFdUTm9NSGhJYjJsVE4wbExXWGRrUWpCaGQyOVNiamc0U3pOeVMycFNOemhCUXk5MFZFdHJTV050VEVOeFR6SlRPRmQzWXpKemVVUnljM1U1UTBaNU1VSjFUMnhQY0RGQ2JUTk9NbEJTY1dzdlRVbDRVbTlvU0d4RlJHUlFWVUZTT1VkbWVIQmhhVVpJT0ZkMVIwRldVVzFyU0haTVJHd3hhVzV4WVZJeE9IUjNVbGxpYTFCTU5XZzRWbXh5U2psUksxcGhVRzkxTlUwNFdEYzNXVTFEVjJVM2FUYzNNVU5WV0VKdWVGbHNNbmhrWVZKbFkyeERTVlJzT1dackwxWmtTa1o2VGtsSFRIZzJjbWhZVm05R1RYVkJNVmt5UmxkS1kxSlpURGw0Vm05WmNEUmpVM1pxZGxCNGExQkNNbTB2UlZWSVRTdG1USE15TmxKUlRVOU5VMk5KUkRaVlIzUXZUVXg2YUROdkwwRlVORmxyZFVvNFMxaEJkelJKYlRCd04yOVJUV1o0V1VOeGRDOHpXR1JPUzI1QmVERkhkbWQ1TkZSRmFYaFRjMjFCUVRBM1MwSjFhbVpxUTJWRlJWRlRVSGxpTlRKcVFXbDBiVEJKT0dkdEwxaEVNbmMyYkVSTGQwNHpRM1ZuWWtWV01IcGphMVZ4VDBGamF6VXZkWFp4U2s1a1JERjJkMUpvWlV0TVlVMVBkbUp2WTBSMFZ6VmFkM2htYWt4ek4wbFhlV3BSTUV0TlUyZEVXRGN2UkdKNWRYZDFPU3RaV0ZwbldYSkVObFZVVGxGeWJFNXFSWFo0VGtWYWVsbHRkek5QY0c5b1lsSnBLMlJ2Ynk4eVp6UkZTMDU2VFc4eE5FRlZabXBCT1ZwT1pscDNaWGw1UkRkVlMwNHJVSGt3UlRabFpsWmxZbWRTYXpGMmJFeElVMlI0VnpCalVuWjNabGR2ZWt0SVRrTm5kbFZZZG5WelRsaFdRMmRPUXl0ek1XNWFhRWMxZVVGVVIzUndWa0pZVWsxeU4wVkNTbGRTVm5GaFJuaDBUMmt4UzA1UVVYUkpRWEZvZGpCQmJtMXRSV0ZCVGpsemVsQjVhR0pEZDFKa1JFRlFXR292U1RKbE4yaGhTMFoxZFdKbE4zSmFURTlOWVRNNU9ISjRNM0JVWVRKQ1RreFRWWFpuUkVab2JqSjRTV2RRUVZCT2IyVkRVV0ptTUZwRWFWbFNNVkJCVGt4UVl5czJNWE5zVGxKdlNsTjNjVEJsY0VkeWJGZHZlVGh3TW5SMFMwdFdSVzF2TDI5RmRHSjFNVUl5UTFwdlJERk9RakYyUlM5R2MwY3hVbmg2ZWxwaGFHZHpTWFU0UldobU1UWmlZMmRQTlN0UVNXcEJiM1JyWWtnNGFIcFZRbHBqT0V0dGQwWjNVazF1WmxaV1p6RkRhMUZRU2pkdlRrSkVibUZ5V0RWa0wwWk5ZbGRoVG5ndlYxQnhVSGx2ZERCbmEzQnRPVzR3U0cxNVJ6Qm5OWHAyZG1oT2JFZHFWVmhyWldVNFkxVTJTMDloU3pRd1R5dEplVVJtUzJvMGFVNXhaakF2YmtwUlR5czRlblZqY0daQll6SnRZMDR4ZVdkQ2VWVkxVblZPU21sVlkwaHRjVEJhWVZGTE5uTnpNMEpEVm1OaVVsTnVUMWRaTTJkbFdVWkhTR2hzWWtGbVJXbElWVVJJTUc5MGRpdERiMXBNT1RNeE9FVlBhVlV6T0Vac1ptbFZUVXQxT1RjMlNGazVZa1p6YUZKYWVuWTNaME15VlVWTWJIQjNhSFJ2WldJNVYwaGlNRE5GYkRsMFZVbHVWWFo2Y0VadGJYbGFlRlpRVmxsSFlqQmlTMHhxWm5kNWJVUlBhMFp4VERWRWVTOVBhRk5FYWt0RlkwMUZWWGhYWnpkdVNubDBkRVF4VW1wTGVsZFJSMEpxYzBac2FHNXBNRXRSU2l0emRESjZaVloyYmtreGEyWjVSV2RaUzAxQlVGUjRZbnBMV0hwRmRsZE5ZVkppYmxCSmRFaEdaUzltWkd0M0swcG5LMlF4WTIwNGVXVTRlVmQ1U1N0U04xcE1OaTlSYWpodlZIRlBhakV4WlhwSE5uZHZieTkzTkRCd1dGa3ZVSGhQWW05eU1rSlhRek5VVlhveFZVOTVSekJzVUVOalJsaEtLM0JyUTNGQlpqQTViM0JITm01YVYwUk9ibUpoY2sxbWVYYzJlV1JPVlZwaE1EWnJXRzB3TUhSdGNqbDFLMjlGVFdrNVIwWkpaa1Y2VDIwMlYyRnVlR0kxVERWblpHOVdXV1YyY1haQlIxUm5PR2RNZEd0UVFXMXliSEpJU1RWNllXSTNabmRRUVdKQmVsTkhTMHBXVWxWYVNGQmllbkZtVEhkWWRGWjFjR3BzYnpSMFdsbzRjVkJ4WkVjMFIzTnZhemRxVm1KSk9VVXhhVk5GTlc5UFUxZDRlbEZzYW1wVFVYZGxWU3R0Tm05cFFsRTVjWEJPYVdsR1VIbDBjMHhvVHpCU2NHeFplbWRDYjBGRVpGSmtSR3RCVWtJeE5XWlpUbTFsWVVwamF6RjZhRUpuWVd0c1RVNVpaak5xYTFwMlR5OU9SV1p5ZW1ka2NVczRNMHd5WmtsU1dYZG5PWGhpTkhSbmN6aDFTM2c0Y21vM1dtOWtTa052V1c1R1RVWlVaR1JaY20xTlJEVkRjV2x3VFdKc2NVd3pNWEJDVVVwaWJtMW5RbVZZVkROSVRteHZSeTlSTWs5cldpczJkWEl6T0ZsUk5YWnZXbEpNUjA5cE9VYzNSMll5TVRkNGMyVm1NVUppVkhNeWJGVnNTbVpRYUVWSFpVMU1VV2M0YjB0SlMxVmhRMWROYkRaalUyTk5kVkkzWlVsV09DdE9iRzV5Y3pWeE1XNXRkRUpZUXpObWNDdFRURzEzTUhORllWZHBka3RZVW14blpqTk9kVFprT0hRd1p6WXdkSFJyTTNaWFlWSkRjSHBOZEVoRWEwcHdPSHB3YW5oVkwzTlRjVVZRTXpGSk4wOXZZWEEzVlUxNVNFeE5URkZ4TkZST2VWcEtUMmR4WXpCUWVVOXliWEpUTDB4QmQxZ3lNWEpWZFZaNmFHNU5jMkUzYVhGUWVsUXdhM1JhVFZkMFVWcEtRbTRyWW5BeVJEWmpkRVpqTkdFd2FtSmtLM1JrV1UxWWNFcHJjMUp1TVRZMlkwTmFhMGt4VURGaWFEaFNNR3RGY0dkM1ZrVldZamMxTDNOSFZGTkpjak15ZG0wd05rSmtXVzh6UzFOSlFubzBaa0pFZEN0cGIxWXJha3d3UmpOTFNrWm9TM1IwZVVoM1owbExheTlhVlRkbksyWkRTVE5STXpKUlJqRmtZbkpGWVU5SmFVcENaVzlvTUhWbFUya3ZUWEpOUWpoNVZFeFlTekJQYUVaeU5GaE1XWEo1Y0U5emJTdGhUMUp0VXk5MFdWbDBSRGd5V0VwbU5HdFpNVkZ3TkdGUmRqVXljVlp4UTFSMlZVTm1Wak5sWTFJclMwNTFRVUp0ZGtwbVJVMVdRVGxRZDJKMFlVOTJTVlJPY2pWb1JqbFNWR1pCVWtkdVptWnphMWRUZDBoT1VtdG9kRzlITnpBM01YWm5TbFpXTjB0Q1V6TkpRa2RVV2s5TlIyeFNiSGsyYkdWSFJGVmFkWEJwWkdGQ1lWcGhia3hrWkcxRlltbFZORzFPVldVNE9DOWhPVk16TkRGbWRVWkpkWEl4VTFSbWFWQXpSbVJrWjNkNGFqTlZSMngzWVhBM2F6bG9ZVmd3UVU1TWNqUnFWSEZuWm1GRFlrNUVkMEp5WldGTlRscEpMMjVKTjFSSldreEtka2RGTW1VMVVsVnplbUpXTmpOcFJrWlRlVWQzWkRKUlRWTjFTMlJNVjFGVGFVbHlWbmhMS3pOaFZFaFZkWEpJVDJ0a1lqTmpiVkpSTkhaNU1tZzJNM2xwYnpOVFZTdGFhRFpqU21WMmNIaGljMVJNTTA1MVpISmxWeXRZUjBWbFJtWkVhamhYSzFGcGNuVm1kVlJ4WmpKWE1HcEtWRXN5TldFeFZFUTJNbFY0VTFOWlVtVXhlV1YyTm05TlREbEpkMmg1Y201aFZteDVUbHBPVm5wUU9UUXlZelF3V1RsRmFTdG5hME53WjNsTFZ6UTVOMGxQV1hZMGRuUTBjamhRT0Vaek56WTFPSGgwWkhCT1EycEZRbU5yY3k5WVdHVXZSSHBZUXk5cVZtVjJiRTlaY0RWRFRVOUhkbmt5U1VzclprOXVLeXRZVVdGMlZHWlBkVzFXTWt3NEswcG9SVTFYV1RsRGNsTlJVVnBYVWtWTFJYUldOMnBtYUU5TFJDdEhTekZLVlRGemFXcHBXbTFWTXpabE5WWlVXa2xwUlVkWWVEQnVNbXgyVDNVelNYRXpjblp4ZDBwdk4xRkZWbFZIU1dkV01rdzNWWGN6UW01SFFWRnRURnBMTW1kR05tZHRkMVJOYWxGRWEyTllZV0pzV2pVNVpXaHRLekpLYUVOdFFuWlRaazFzVEdKUGRVSnFNbVZwZDBWVWQwWTJSVzh4VEd4UVVEWmtabmcxZEVGWEwyb3JMek5IVTFKU1JtWkNURUp3TlRKU1ZGQXdRbFZyVWtSeGJGbzFPREUxZGtreVduSnphemxuUm1SclQycG1WRWQ1YWt0S2RYQm1hMUZMYUhORFQxVkZiRzR6YUcxRFZrZzBhRWxpTUdGWk1UVnZhVXhQWVdwUWJFVnZkMDlYVEVSbVoydG9XWGtyUVdVMGVYaERSVFo0ZDBwRmVtMVZVVmxrTVdaYWQxZEthQzlTWlVGbkwzUlJOV05SZUhGUFZHWnliSHBQT0ZsRmJUSTNjeTlQV0RkUWFtVnVOa1JwYTBGR2JEWlpjMkkyTURGQk5VdzBORWxUWTJaRmNuaFVkVTlvTlVoUlduZ3ZRVTloTjFFclptdFdVakpJWm5CM2FIUk5VRFF5WjFKUVlXOTNZV2xPVEVwaU1sTkJXbUk1WjJGRVQwZFdOVGRSTVVrelEweHRXbGhYWkZvMFUyWjBVbE5oWnpoTFQxbEtSVE5oYVZCdk9VUTFVMVZLUkhSbFJIVlhOMHBvYjBabll6STVRM0JUVmxKbWVFbGtNM0pHSzIweU1FSnBZV0ZOUjFBeVUzaEdjV1pEUTBWWlQyMUdlbE5qVFc1Q1ptTmlWWEIxTmxoYU5tTnBUV0ZqU0dkdFMzcFhWRkpNTjJJeVVYSlFXbE5SVWxvdmFqRkpXVFk1YmpscE5EbFRhVzVrUTIxTVVXWmllSGRRZWpoUFRrZHlaRmgzU2k5aVRWb3hPVkJzYW1sdmRHZFlRM0pWZFc1VldVUk5ZVEZ3TldWME4zSTNVemh6TURGMVdFWjZLMHhhUnl0b00xZG9iakpPVDJWU1JFTXZiM1Z0WlZCSmRVRnVlalpaY1U4MmVtZGlWUzlqUmxRNGJ6aGFNazVIWjI1aGVEaHZWV1p2TW1seWNGUnZXR2RLTUVSclZESkNhMUZRU21OTlpqQkVOV2gwTmxWNE5tTlVSWFZoYkZsSlowUmhXR1ZsZDBjMVRHSjJPR0ZEU21zelFqQldORGhxV0RSeFlrVnFWM1ZHVjBWM1pHTlJWMEoxUm5oYVdFOVJObmRrZERkdlJrTlFhakFyVTBKTFpYbG5iSHBOWTJOc0x6Sk9OME4yY1ZWWWVtRlNSR1ZQV2xCRFozbEZURXRhTjI1UVRrTmplbTF6TVhOc1EwWktTR1VyVFhwc05rSXdUbFZGUnl0SFNEWlJTV2x3ZG1ocVEyMHZTR2tyZDBNcmFtcFVjV2hrVDFWcWRUTnhjaXQyT1VsaGVqWm5VMFI1VVdwclNtSnFjVGxLWjI1VWJXVndPSGQxYTFBM2NreFRaWEoxVDI4cmJtMVVORVI1YlROQlRteExiRmd3VDJrdlQzZ3lVa1Y0YWpsRFlqZHdNbXRLY1ZoT1pIcFlhRTlpU25CdGVtTkpRbmR4UkU1RFFpOVVhVUZ6V0VrMFZHOHdaMFIzWTI5UWVFUkdXbXR4ZEVkWFdWcEVNR2xrVnpBMlkzVjNWVlI0TjBKa1JscFpaRkJEVUdoSFkwZE9WM0ZQUVRaVk9HaEhhSE5XZEhWaWQwWlNUVU5hVDB0Uk9XeHROamxKUTBsa01WbFRiVWxITDJwNFVXNUVhMEZRVkZGMU0xVkVRVlZxUkhCQmRYSXhkbmw2Y1RGc1lqVlpVakpSU2xsSk5qZDZjazltSzFFeE5FbExZalY0T0hwUVZEaEhkSGxpUzBjdlRYVkNLemsxYjJZellrSnBRVzlRTms1UFExaFFOVGd2YTNsV1QxRm1jMUUyUkRkd2MzbFFha2h5T0VkM05UVjBTVk5ITVZsSFRqUnplamd2YlRGMlMwUkNWM05FVldaQmFtTmxlamg2WkdwR1VITXdWRUpFTWtWS1dqRlFORmRTTVVkS1VIRnllWGRyUVROa2EweHJOMmx4ZDJoaU9XVkJVWFp5WjFaVFUwaE5hVUphZG1abWFtMUtPREpsYkdOMmJsTXZhVTgwWlZsTVQwTTJkSFpyVlc1bGVraGpVMnBTWWpJM2FTOU9lbTFQZDNSWVVIcEhXa3N4VldwcVRsWnhZMFpVUTNORWExSlNSbEptVEdSdVRFSklkWEJ2WW5NM2MwOURaaTlYV0hjeVNqaDBVMDFZUzJSUk0yUkJRVFozZVhsNU0yeFhZVnBRYVc4MGFqRllTVVJEUVVOVWJXMHhNalZTUkdOTmNWbHpiWFpuVWpkVGFIQmFRbGxwYWpSbFJIVm5XbXNySzNwYVZ6QnZVVE5SUzA5b09YcExhbGx2WTFCRmMwdGFiMFZuWms5U1QweDZOREJ6YVM4MU1FVmtjWE56VVdSUlIwczRjMGxKZGtGYWJtbEdWRzVHUkhVNWVXNWlhVzVTTms1bVlqSjFabTVvT0hONWFVcDBWV0pNZFRsM1dERjJRVWcxWmtzMmNIaG5la3g2Ym1oa2NHNXVjVE5aVlVOalNrZFpSazlvSzNGMGNuSnFPVGRXTTJ0blRGSnJVbWh5Vm1sMlpIcEZSV0pHTDI1ME0zWXZVVmgxWmpVcmREa3ZVRlIxWmpaRFRtb3ZZaXN6T0RCcWEySnJjVUZTZWtkek5FVXhlR294WlZZeVJHZHFVM1ZCY1ZOQ2JWVmxSRTE0VW05R2FVVXlha1JxVEhNd09FNVRiREE0WWxGNmMyNXBWMmRyT0ZGbVoxUkpjU3RHTkcxa1ZEZFdXR3hVWmtWeFRtbHlTbXRPVEhkdU4xbDNNVlpLV0haTE1uaFhXVU52TVhsc1RHZElibVE0U1ZCTFFVZHlXR1JIWWxGa1NuTnpSbGh6TlROU2N5dEZkbVZxWm1wUE5EQkRiR2szT0doWVEzVkhkVEJFWVRKRlZVOVROMU5vTm5GQllsbHJZVmRqUzFVcmJ6WjVSMnRDY1ZkWGNVUXdVbkpoTXpOelVqaFphalJZY0RFeVRWWlZPVVpqS3pnM2JqTnBTM0ZaYzBKTlFuUXlaRnAxV201cVEwOUlVamd3U0d3MWNXaDFWRkZSZURaVGJtRTBhRUpUU21aYVNVVkdNRlpxYjJsblFrTk9VMHhKUVcxa1FXd3lkV2h5ZUZKb1IyRlRWWEJPYTBKVVFsaFhWM1ZpVWtOMVJESXZSRzVIUlZJeWJWZHBkR2RCVjBWTFJuQkZObThyVjJWUFdHUm1ielZQVVZwd1ZISnFXa3RDV0RSS1RrRTVRMnBXVkROaFRHUkRRV000V25GV2NFdEpRVzEyVWpkVloyWklTbmc1VEdSNFUyRlBlbGRDTkhaeFdXWlRNa0owZDBGVlpVTlNlbXhNYUVWalpqWlNhMU0yVERSNGFHVmxSVzByZG1KV1MxSk9lSFU1YkVabGRsQXdOMDAwZDFaYVNEQkhZamxFT0RKUE1pdDZjbTEzVVRGbVRYY3lkWEprVjNaWGVYTmhWVlZSTlVwUmVtUk9NVTFqZEhSNVJETlNhMFJGZWsxNlVFeElTRVJoZFVGMlVUbDFOall5UWxWbk56Rk5iMjF6YUdOMlJVc3hjWFV6TW5SRGRuVnhRM0ZpZW1KUGVFTlFRa0lyYm0xWWFtRnFRVzlLVjNCS01FVlRNbGc0Y1hFMmJVRTNhMkl6VW1VelNtcFlXa0ZLVDFBNWIyUlZZVE55UnpWNFoxWk5kWGx5ZGs1bGNrWkthRVZGYkZob1ZGaHBSRTlSTTNaTWJVVnphSEZZZVZCc1psaHNSRTFYZVdaRVZuWktORkZKVWpWbk5TdFRWV3MxVTFGTFIwcHJSV2RCUkV4cFEwWjNlVTFuVDJOelFWSTBhakpDT0RSa1ZrRldUVUk1UVRrMGRpdFBSM1pNZVc5all6Tm9abFExVVV0V01sQlZVbFZzVmxsQ2NEVmpORk5LTjFCa2EwWlVObmxHWkZwUWNESnRaRWRoU25aVVJ5dENURTlCTWtoekwxWlBaRzFOUXpsR1NVSjZOV2RLUkdVdlp6Wm5URk5KZGxGWGJ6SklaVVZHUTBKc2FETXhUM3BoUTBOblFWSkZiV3B6TVhkaWQyeHlaekJPVm5aM1FrODRVa0ZQTm5GYU5tdE1jR1ZzTmtFek5WUjZRMjV4TDFjNVMybDRjR0U0ZDJGcU1FeHdRWGhHVmtwM05sZHJjVE5KZGxockwydzVURWhIV1V0SmVqVlJNWEprVHpkTWVYVk5WSGRCTjBoRGVHaHpUeXRpUjFCQmMyUm9iemh4TDJsR2QyNW9aVzVvYVM5R2RVazJNazFrUjBWdE9EWXljRFJ4ZDJOUVprTkNLMDFuY0c1TlRXbFFNblJ5Tm5BMmJYcHNOSFJhUVZsS1ptMW9iMUZTUm1WaVFXOXdjVWhIVkhKdGNGa3hPWGR4YUZOQlpqRnpNMUJhVlhoR1VVZzJNMk5KWTFsNVkzTktSV1ZqY2xoSk9FVTFTR3BsT0dwc1YwUldaVGRrUm05SWMydE1aa1ZqYkRCRFRrSjRSamhzVld4YU5VMXhjM0JyVVVoMFQyWk9PQ3R5Y1hKemExUndWbmRMTWtKS1MzSkplV2hQWmtKR1dtcEJjbTlhVmxscFpESnVSa1V5U3pkUWVFdG9WMU14VWpWd2FqaFRXa0ZpZG1SSU0wSkdhR3B6ZGtkT05VRmpXVEJCZG5aVmNFaGpSWEZaVW5wMldIcHJTekF4Wkd4UVozRnpjR2xXVkU0MlYxSmhkRk5MU1RNclluZE1Wa3B5UmxGRVFXZFpTbWMzVEV0RU1YVmpRVXBKZW1kTFQxUTROekpxTDNkUlZuQjVjUzlKZEVwVU4zRjVlRUY2VUV4a2RGZFpUVGxoWmtwc2NGVTFiVUp4TVhoVFNIRmliRzV6V2tscFZXOHliMU54U1V4dU9WbEdhR294Wm5sWldtaDVSMVF4V214WU5EZFROVm8zUm1OR2JIZzBSRzVUWlcxNU5sQjVRa3gwTkVsdGR6aDJVbUUzZERaWFJVbzRUbm8xYlVkV1RsSjNOamhSZFRGRU1rZDJSM2R0VDNJMk9WQnFObk5qUWxsWVRsRXdNV2dyYUdJME1FWlRZMWREV1RKWFlXOWtMMDVhTldaR1RUaEliemRIVlRkS1QwMHpZMkUwYVU1UFl6Sm1Ua05LU0RJMmMzQlFUbkV5YzFKMlFsaE1iVkI0TUdkYVkyOHpORzlVWjFBMmRqVTVZVGd2WTJSa2J6QjFjbE12Y1dsNVVYazBURFl6U0dScWFsRmxVRzFyTTA1M0wydFpVWEE1ZDFWUE1VZzNjMFZKYjFoT1lrYzVSbUpFVVZaWWMxY3JhRkpWZW5KQmFHYzBRMk42UzNNeVl5OW9WbkIxVlZSYWVUVnFNamh4Ym01d1pVMDBaamc1WVdOUGFWQTNjMlYxY25VMlVpdEdjRkJJVVd4NU9XcHNLMVF6ZDBKSU5uaDJWak15VUdKdlRXYzNWRGhyYjFRNFZYTlFlRTU2TlZKNFZFRnVabFV5U2xseFNIaFFkRXAwZW5KVldHRjZRbVJ0T1ZoaVdFZ3JPV0pZV2sxaVdYTjBUR29yTkhOYWNEZ3hNMHRrVjJFMGN6VXpNVlJUTmt0V1ZscFNSek40VHpaWk1GQTJRbTl2UTI5S1kxQlZWekZ5U1hOM2IxRnlUbWxtVDBVNFZIQjVORzFVWjNoWlFtczBVM0ZGZFZORlYzTXJlazkwYVN0dFJVRnRVbE53ZDIxa1VYaFZVbGxwT0N0RWNXSTBhVFZuYTFoYU5tZEpVR3A2UjNwMGVFeHFVblpUVldaS05FTnhjRlpFVlRSWmFqWkhRbTl1V1RKTE1XWlZjVkV4Ym14UE4xZzNjbUZTZHpSdVFWUk5XRGg0TUc1RWNUUk5jRWxqZW5kRmNqVlNVREJYVUdGaVV6QkJZbGsxYVV4d2JpOTJiR3BSY25saFVGbzNja3RrU1RneGVXMDVSMEZqTXpGVGEzUXpOV1E1WjJsUU16VjNWRVpRTUZKamJHOWpaMDFSYTNGc1JHTkRXV3hVSzJJclMzbGxkRmhQT1RkWmRVdFJXVTFPUnpWRmIzb3ZWbXgxYVhadFIzbGtURFZOYmxCSlptMU9WbGR0UmtoNmRXbHRTbUl6ZDJSblpGVkNNMGRESzJ0R1RuazJiWE5JWm0xUWNXOVJSV1JFYkVWbk9IZFBiRmgwVm5Oa1V6SkVhMVpIYWxaR01HZElUSFJNYzI1eGEyOXdOVk5oU2xoeVRYZHdkR3h2Y0dnMFJDdFZNRU1yYlRKb04zVnlRMHBZVm5KcmNtZDRXSEpwUW1kVVExVnBhM0I2U1UwemVVNWhXSFpxZVRCYU0wdG1ORVpyVFdsYWVFeDVaall5UVROWmRWSjBiVVlyWVRSR1dtVjVOQ3R0VkVWNVpVTk1hM05VVFVOamRsZ3JWWGt4TTFGS04ydzFUMWxCVUZaT05sRlhSM0ZQVFdwdWRsWlhVREJGVkdKRVYwSmtTME0wT0ZWblUzZ3JRek5qVXpOV05sVk5VV0Z3V1ZkV1dFbGhOVFpGUnpoM1NFZ3lhamRCYUROc1dtSk5UMWhWV1ZOU05XTTFVMmRzTlV0dmJuSXZUalp4S3pKUE1uWlBVbkVyY25aVFNrTkxLMGxaVUdkWU1GSlZWMUVyWVM5dFEzWlJiMWRwZG1sSWJrdHZkRVZuVkVOblVUSm1RMWt2YUVGdmFVRjVWSFozY1c4MU1uVkxjbU5YUWt4YVl6TkpUWHBHVWxwMlVHaDNPVUp5ZUcweFpXTXlXRmRxZFhGMk5rcGFLMU0zYmtReFZWQkxaMDU2TmtsaFEwOUlOMXBpY0ZWeVp6VkViR0ZCYkdGek9YZEZZamcyUjJSdFVVOHpURVZWWlRCclJ6Z3ZlV2czT0hoM2JURnRjMk5rUm1WNGRuQm1Lek5JT0ZRNGJTOWlRMFpHV1hneWIwb3JjbnAyWm1sQlZ6VkxSbVV3TVRGQmFWWnNORVUzZWk5WWJXWm1TSEZFVDB4dVZsQkZPVmd3T1ZsTWJETmpVV05tVTJoNmFuQXdWVkkyZGtwclFUVnFjakV6UzNWV2NWVXZSM0JJUWs1NlNuWXlNWGxNUmpsVFUxQjFRMjUzYVRWbmRsZDFXVXhOYkRaUmJFRkdlbGRVYVdKMGQyWnFiRmhSVlVadU4yaHJORGhUUWxoMVRsa3hLMU13YUVwRldXWnBObkFyVlRGU1UwNDRaRU5QWlU5VE9FdHBPRUptVVRKc1RtWkdTbmRIVmtaeGVqQmhkVVkzUmxad2NEUklZVE5LVFZCMlJEZGtVVlphUW5BNFJuVm9lV3hyTldjcmJHdFRXRkI0VGtwR1YwZHNaVGh5TjBseFdqSndiM1pNVDNsNmVtODJlRWRZYTNZeWVVRnhiWHA1THl0eGJFTXhkWGhYYVZRcllqZEhOSGcxWWtRMllqQkNSR0ZpYm5CbFl6UkhZMlZJWld4RFkwdHZaakJaU0hCQmVEQTBlSGt5ZFZOb1NUSTBOMU55U201YVZWUkplRFIyV0VsWFMzcEtUVUpxUW1oNmNFNWpiMUUzYkRkaU5tdFdjVlZVYUdjMmVHRnVZbVJUU1VwdE9FUm1XWGx3VEhCdksxSlRNR2hhU2psRVZsUm1kMmh4T1VaV01WRnZkV2dyVG5sWU5ubzNPVVpSZEhCMGFXc3JRbVZPZG5oNWRXdzNkelZHTTNCSFZrTlFNMVZFTWxsSGRFUXhlVkpsU3poQk5uTTJka3A0TVZCSWNWVlFSV3BYWlRCRVVWcDZObUYyYTI0MWJWaDVhMnBtVkRjNE5ITXhNbXBxZGxsNWF6aHZTV2hrWkROSmJqUm9jamRUVjJ4QmJXWkRVbXhpWmtreGVGWk9TVFIyUWtaa1dIcDViRlZCYkVJeVpsQTJTM0ZoUm1STk5FeHVkbUZOT0VSaFJWbE5PRE5FYzNoaFZYUkpaMDFzYkZabWJqVlpUbVpzWlc1Q2NXVndlRzR2VjNVd1JHcHNSbmQzYmtSVU1GUkljRlZHYldWNFFsTlRXVnBaVUdablJtMXJTVUU0VUhWaFEwNUVLMjUzZEVVclFXUXhWWEoyUW5jeWNqTk5UbUkwWm5relZISmFORmh4VUhCemQwWnhWVFpVYnpJdmNraHFVM1J2ZG5OUGRHcEViMWwzWldWc1FXSTFVV1ptVVVOemRXUlhlVXhDZG5kdk5HWnJSV1JLYUVkTU5sSkRkV3RWVnl0VmVGSlhXVlJ4VjFkRVNucDFRaXN6UTBobU4zWllaV3A1Tm04elZHZHFaMlkwWmpaRFpDOTBhVTVtYW1wRVZGUm1PRXBqZVZKUVNGQjRUMnBDZWtGcVozRjRXRGRMVWk5R1NGaE9SVlZoYzNFcmRWbEZUVnBCZEdwQlZXSlNTRFpFTVdaMGNEaFRjRVJpV1dGeldtZGFaVFYyYmpCTmRVb3pSMlJFU2pWWWFFOXZlbUZ2VlVFMlRqaERVbFZEU2pBeWVHZE1NM1p4ZDNJMFJGa3daRGN5UTFOVmN6WktiVzVZWkZGcmRXNHplRkZVTldsdlJHNUxibFI2Ykd0NWVpdHdZV0oyVUZaUGRra3pURGRhSzJodlQwMTBaUzl5UkVNM1ZUaEZSRWxXTTFVdllUSkRNa3hFU0ZBdlN6SmxaVEo1V0VSa1VtVjZVa2xwZVROdU5XWmhka05uTUZVdlpFbHlaa1JqU0RFM05VVjZOazE2VjAxQ2RVOURhM2h2Y0N0VFptTjFOMGRPVEd3eU1uTmxTRWRwUVdaaVl5dG1WVEZ0YjFKM2NVZFBPREpqUVdsa1QyUXZWbmgxVjFsM2IxTkVSemh2WXpFMlYyUjNkblF5T1RKMFkyWkhWakpyVGxaMlNXZExSbEJ1TWtONmVFeGhkMDFyVjB3MlZUSk9XRW81U0RKSGRGTndSbWxFWlZOMlpXOTFWMFpRSzFOTFNGbHpXR05SUVdSRGJ6SjVkVFpPYTI0NVNrRkpjVmxoVDBoTFltZHVOVVprZUdKd1dFWmpZbVpJV25OU1JUaDZWMnRsYW10MGVYSnFLMnBxY0hGemNrMWhhMmRETXpablUyeExUUzlvZVVKVU1HaHpaRVJpUlVOcVFqVm1iME01Y1U1T2EyNHlVWGh2YVRGbE5FRXlkekZwY1U5dU5XZHNSM3BNVW1FclZVVktRWHBUYUU1cldXbFdWbEJSWjJKdVF6QjNPVGwzTTBWMWRrVm5PRTVXUWxWd1NrSk1SekJVZGtsUU1GTlNjazV3YkdFNWFVOHhkalJaZW5sbmFWa3pOemhFTlhBMlFrNUJjbk5qWWtkaFZEWkhlREJvYjJacFFVbE9lVXhoYW1WbkszaDNhVFZoVjBKcE1tSkRORUo2VUc1TWFWWnJWSEpEUkVWV2NFcElSM0pMT0VjdlFXTjVUSE5uZW05cFdGSkJSSGxNVmxaRFltdDFVRWxpVm0xa1ZVYzJRVzV6Vnk5aU5qSlJkekYwTVU5UGVteFZNemhIYnpKT1UwMUJRVGt3VFhOQk9WbFBZMDh6ZURKRWQycDNNVEVyY2s5T1NWUjRTVTA0YXpsaFRFZEdjazlJY0VSM2MzWlpjVWxSVUhoSldUZzRRMkZuU0U4MVdVOVhjWGRyTjBJME1qSkRaWEE0TmpJeVRqZzRaR05PVEhkU2JqSk5WRFEzUkZKdlIwZDJZMEozZGtodFdtVnNWMHQyVEVvM2JreEtSRkZLYVZGMmVTOTFTek5GVTIxcGFXY3JkU3R4ZGxZNGJEbHBlazl6YkhacVprcHRlRFpQY0dSMVNrVnJORVpDZWxKakx6UlJTSEEwYWxKS1oyaFRUWEpLVlhWdmNtczNNMnRRZWpaV1NFTldObE5QWjFSaGEwWXlabFZCVW05UVkxbDViMUZrUW1KMmVVTndOMUpVYlVRdk1UVkhTSE5EU25SUFRrbFBLMnhaVVVwcGRtc3hUMGhIWkdadFEydElXbmRYWVhvNFQwRjBiVkJYZFd0ek9XSXlWR1EyVTJoT2NDc3ZORGwwVEV4Vk1IaHlXV054VjFKR1VtTktXVE5wY0VOdU5HOU1OMVpoWVUxSVRWVkJXazlDVWpGUWRtSlhLekJhYkZSWVEybElWWGhVWm5OQ2RFWlBVRzF0Y2psUmFIY3pNbTV5TkN0UE1WUjZVRUY1UldGbWJqbGlZMWRWWm5CMVdrcEhVMmxYVG1kb09URnFUSFk0VUZWSE5qRlJNME5KZVVwdVNtOUtObnB0WkhacVJFNDBaMk5CYldSR2RHUk1hM0JsTVRGeFRFTnlMMnAyUkZwVVF5dGFRMUowVkd0d1EwTlpOMmxvVERrNFZrVjJSbGRXTTBVNWFHeGxRbVJvYjJsS1ZGVkZiVmxxU0dkalEyOVhWRkpVVEdwMk16Vk1VVFIxYW1neVZuSk9ZbmRvZFZsNU1sSmpRMGw2UkUxQ05YVnNSVFJtU21Vd01sVXpVMWh6SzJjeVFrSlFlWFpFWjIxd2FXMTJOSGhqVm1OeWMwZFRZVXBoUVdkQ1JXVnNaRUo0U25CRGJtNWhXRUowWkZKT1UxUjNhbkI1UkVrdlpUZDBTV2w2S3pONk1GQldjblJCZVdsU1lXdFBUalZuVEU1UFUxVmxOQ3QwTTB4YWVtcDJaV0ZNUWt4MmFEaERVRXhZV1V4T01ETkROa2hFVmtOdWVHaEJURFpWUzFaMU4yRkRhbUpKUzA5T2QwSm5RV2h5YTJOcWJTdFJLMGRQUzNkeFNrOTZkWFpUVjBFdlVIQjJkMWRWY0VaMWF6ZDBTWEUxV21OaGVrWkZSMEpwTkhwcVlVMVBjMDVGTlhGblUwcHZibW96TkdOdFRYaDBZVkZ0YzFkMFduZEJjbUZ6WWpoMWVtZEJjbk5KZW04clJtWlFNemxoYWtRNFJFMUdaemxTSzNaelVHZFpSRlJtVkdwM2VFVkhNR2wzZDI5a2FrRXZlbFZEVlM5aWJqUXphVlJQT0dOS05VbHFSMmdyWlVrelZsQk1ialZXY1dkUWJHaHdZalpOT1ZKVlNsWktRaXRNV25sVWNWQmxlRUpGVnlzMVptSlZhRmRMUjNscGVIbERVMDVXZWpsQ1VESmlRMVJ3Vldkd1lqbG5lRkJPWWpjM1RXRkZiVGsxVXpWR01VNWtPVlZ4UVRGUWMwaE5ObGg1UTJGT01FbENla2QyYVc1c2VXMXplR2RTUlhkTkx6SlpMemRuTlU1UlMwZDFjbGRzVDI1blJtSnRhM2xITmtFeFVuUnFVREEzYTJnNFZHOVJZalU1ZG01elZtbFlNbEpHYTJaU1FXMDRkWHBpZWpZMlRYVTNVa1EzYlhSaWMzTTRPVkZqZGtaNlVpdDVVRWRDTjJ4cE0zRXZTV2MwYmxWeGRHVjRTbmRHWTIwcldXWllSSGhzUVhseFpIbEJkV2hOVUZGMU5VMXZPV3B5YXpKbWEzaHVia2RaUTJ4amNVNUxOMVJIVFdaVmVHTnBZbXBXWXl0amVGTnRWRVp3UXl0WFFreHJRWGgyWlVGNFFXcGpLM1p3WmtFNFlqZE9ORE5uVjJ0eU16bHJjV2huZVZCelNUVTRkMG9yUlN0Uk5EUmtkWG8wWlRkRGQxWjRjRkkyVFhScGFrdzRVRmd5YVVzd1pXNTBTV3B6VDFBNWVrSkdNRTFsVmpWM1VEVlNRbVpsYjA5a1lpdFFXakI2YmtOUFZXTlpSVTVqWlU4eU5rZFpiM2hJSzBSc09HOUdkazU0TWtabFdEQmFjVGhSVjNGSU1ISnRSRXRQTlc5RGFIQlhWeXRRZUROdmFtZHVjV0pSYm1oNlFtcFdWSHBZTjNCVWFEWTNXakJ1UVZWWFYwTk1NR0ZDYW5RMmNHdFNiVzVYZUdGWWNIUlVRblJ4VGpGTlJXaDJUM2hYWW1oRFltWTNSbTFKTTJFMWRITkJhV0ZTVVdVek15OW5VelUzZG1Gd2NYbDJXVVZNUWlzNFVFOWhNbkY2VlZkQ1kxRmpjRzEwWkhSaldXcGpVVTUzSzFoYVlXeHdRekkxVkVkcVRXTlZNbTh3UkhJemExaFpjV05QYUdOT1lrNXROa1p0U21oR1VVVXpObk4zU21ocVpWQjZRV2xvVFd4cFMweDBNMVZHWW1kaFRuZFliM0JyTUdWMFNUWmhUbTEzWm5CYVlWSjFSVE5sTDNwbWFFRm5la3BIUjJRM1VWa3piR0pyUlRCd2JtNVZLMjUzYlZjd2NTOXljMGhYTmpSYU5rbHVPV3gwV2tWdVduUkNVRzB2WW10UWRGVlVXSEpOYlZKWFRrUk9aMHBFYVc0NU1pOVJUMXBJWkRWcVNtcEhhMGN5TTA0NE1IVk5aV1oxT1haTmVWWlNSM2QyUmpoWk9XbEVSa2tyVFZOcFVsa3ZXRWhMV1Zwc1pYSmpNMWxrYVZOSlRFVkxMMjEwUkZRd2NHNWlURFp2YkhReVkyWmtUV3B2UkZNek5tdDJhek5WU2l0Q1JFcDNMelp4UkVOUlMwMHpUelJuVVZZM1pteExObmc1TTJOSGNHbFBVakZ0Ym01RVJ6WkpWMnBUY1hCSFdWSjVNRTVwVjNReU4yd3hRVWg1Vm1NdmNqaGxZVkV5U0hjd2F6RXJjV1pNTnpKNVdTOTVOVXB5VVc1TlVHZEZhRWgxYTFGMlFrRTVibEZVUjJaaGEyeE1halFyWkd0SVNGTnVjRmMyYW1ZM05IUk9TMjF1Wkd3eGVrbFBTVlo0VW5KQ2VWRkJTVkoyVURSdlpGcHRWMVpXTVdVMUwyUmlOMWQyVWs1M1VHdzBVbXRxTDFGWEwzSlJVRXhUWVdoaVNVSkpUazltUkRoR2NuTkNTMHBPUlU5aVdEQmthVEZHTWpsRmRUQkNWakJ4ZVVsTmNUUklNMmQyZVRaUGJqaFJSMHROVkRaRlpFWTFUV3RTWW5neFJHdE5SbFZ3YkVWRVQzY3diMHhRZERKWlZrMXhTbGsxVmprdlJTOTVNVWx6Wm1oNE1ESlRaM0k0ZW5GSWFXdG5TMWxsU0V3ck9UVXJORXN6VXpsM01tcHJkSEZ0U1ZGMVRsWmpXVVJqZW1sNGFWbHJaR2RYVUhsa01WbFpaazVHYTI5Q2VIQm5URWhSVEhGdE9VdGFRVFZOZUN0SVJtSkplVkpKYVVaSFVYWk5iekIzZDBaYU1sVlNVMlZ1UldKd05IWjRTVFZxTDBSalZFRlZhbloyVDBGM09WTjVOVlE0VDFOSWNVOUJla0p5ZHl0cVdVWTNkRkIzUjJkbk1uQTVRVFp6SzBJclozTXZlVGc1Y25SNlNGbEpWa1pEU2t0clNrUjNTMkZHVUhRek1rUlZTa2hRT1dOR1JsTktZVEJaWVVWNmMzUmtiamhoYWxSVGMxZFRWM1p4VVdJMlkzcGhZMFZ4V25sbGFsTlRPWEJqVUdWSGRVRjBTV2RaVW5kNE4xWllUMnRWU0hCUFN5OUxUVmhXZDFKTVpXczFSa1pQYURkYWJFSmhSMG94TXpVNGJEbERkVE5DT0dkQmNqQTVZa2hhT0M5MVpISmpNbXBaUWs1TE9WTnlTWGd5VlZsb05UVXdkR001Ykd0a2NraE9UblZJTjNOeksyNXdlVWt2TlRoSmJWWnBjakF5WkhkV2VTdHpaR294WVVFd2JrRmFkMFZoVldWblQyaDFWV2h3U0Vad1RtdGpVelpDYzBaQlZVRnBWMU0wWjJSS2JtNVViMDVsU0RWbksyRlVlbkUwVFhwbFJWRXlSR3MwWms4NFFXNWlPSE13YWpWUU5VeExibUZqYUhwbVVubHVPSFJ2YlhSUGN6aElaVWRaZFVGRFNESTBOMFIxV0RBelFpOHlka0ZNVFhGaGFVNWhUM0JQVXpWUFIzUkxSMVp3TTJKU1JGRkJkSGh3VDNORFNXbHZha1ZNVW5CWlZrcE9iMnhMTDNjNFptZFRjVE16WmpCbGNpOUlTV2hFVmxFdmVFSTFZbGRrYlZGblozcENSMFJOTlZaNU9HWlVSV0ZSVkdSbU0wUjZWWFJIU0hScE16TjBWakpuT1haTWNESmlaVTFSZVVaQmVXWlVSVE52S3pFck5uZHVLMVJNYTNWSVIyRjROVGxEU2xSS2FGSkNRV2xJUWpOQk9GQnBlVFpCUmxJMFdIRlVOM3BXVUM5c09IVnJVU3RvU0ZkS2FraEZWV1ZRZUZwTlExUnRVbFl5YkN0RVREbHJVSGRrVWxab1NYVjFRMnBOSzNkTlN5OHpZWG94YUhKWVRUbEtXbVZIWnpKSlVrMUphMlF5TWpFMFNHWnRjMjlJZFVSMVNUSlJjVGhCY2pWcFNGWnhTMVIzYzJ0bmMyMDRiWFJSYzFndllqRlpMemRRVEZBdmRITjJkamxzUm5Zdkt5OTZMMlk1ZGpoMk9HSkplRVk1VkhWQ1ZtcE9aa2hFY2pkRk1WRkxWR1JLYlhsSFJXOU5Razh6VFd4bkwyMWpSa3d6UmxWcFlYVk9lbFUyUTJkM1VqUTNZVkpqU1c1eVR6WnRXVzF0V2xNMFRWaFNZMGhGVFRaUmN5OVBSMGhYTlhCbWRVTktPWFpOV2tGblozWjFjR3hSYjNsNlEybFNXR1UxVkU1RVVGWlhhRkpxU2xCNFR6QkxhUzlJYjJ4TU1tSm9TbVZXVlVScVp6TnVXRFZ5VEVzME56TkRabU50VW14bllucFVMMG94Umk5cU1sSmhMMmhNVTB4blFUQXJPSG80UkdwWWNFVm9OR3BGUTNWWVJuZG9Sbk16UkdRMFdtcFBXWFJvV0dOVk1VZE1kMkUyVTJGaEwwbFBZaXREYkZJNUswRXhjbHAzVVN0Tkx6RlZXRVIyUlhGTk5IWTJWa2wwWjA4NVpVOVdSMjVFTkVwUldHNTNhMmxtUlRJNFRpOXdZekZWWm04eU4xWkNUbmx4VDJWcmIybFJMelJtZGpaQmRqVkZObEV6ZVhKTVdqRlZkVkphTWpaSldsTkJTazlUV2t4T2MyMTNjbkZMU25kd1NsSnhSbUV6TkRFNE9XbzRjRUZvVm1sSU0zSndVMDlWWTJneE4zTktabkpEUlZwTE5sQlRNVnBOVkV4RlJYSTJkRVptS3poa09IVjVXblV4Y21KeFNXdFlNWFJPYjBsQlZuUkJaWEo1Tkd4SFdsRnFWRXMxUTNKNGNsbGpWbmhDWVRSR1VsQk9iamcwTUc1V1dUaFBNRUp3Um5WaFduZHBXVkZNZG1aU1NqRjFaMmxhTlRsSVVGUmpWRlJITkhaQlFrNHZWVGt2VG0xQ1dVNTJRM051VjJSbGVqazNSVWRIYTNnMFVUUldNR0V6VjJ0a1dGaEhLMUZ5UzFGVk1GTlFOM1Y1YzA1NE5ubEhXRkY2YWpJcll5OXdaVXBUV1VOWWFGVkRaV05tZWpkU1IxTkVVRE5CY2tjelQzRXJPRGxaYW5aME5HZGpRelZhVldSYU16RmljWEJuVXpZM2NuaFZXV1F3YVVKRFRGbE5jbmxRWVdFemFHeFdUa1pITnpORWJrcG5TWGR2V1U1VllVbzJlRVJGVDFvemNIaE9WMUZwTmxsc1NVTmtOVlJaV1RsMlEyUnhlbTFNVnpOTFVFMVpaV1paVmt0a1NIVnpkVEpDU0ZsMloxWTFjR3RFU21wTk5sbG1ZUzlsVUZCNlUwWmlVVTlYY2sxYVFsbHJVRUZWU2psVGNVOU1hRWxOVkdOWFZTOVRjMWxYZEdwNGNpOHpTekZoY1U1YWFITXlPSEprTDNkUVEwcEZOa0p1YUhKSVZYZGhOR1EzUnpGSldFbExVaXRCVnpGTmNubEJRUzlvYXpSelJGSjJaVEozYTFoMFVGWk9kRGxDT1hkMFlrdHdiV0ZqVGpaSGNFMDVTR3BtTmswNFVYZEtTbTF1WkZKME1qQnVNSEphWW5kdWNuUm5hM1JuVFRRMWJWRm9Rek42YUZGa1RtNDJkRGh4V0c0eWNHcHhSRzkzVmpCdU1pOUdiRUZNVVZOblptUjVaRkpUTmxKME1FdHVaRkJRYVVKUFNWVTRPVXRuYlZFMlNYbGhhVVV2YzBJNFpuUnVjMDl5VFdObU9WQlpkVzlaUWs5RlZraG9iblZDYkhGVlkyMXVOR1pSTjNZcmFHZExNVGM0TlcxQ2R6aGhXSEJvV1d4VlFpdFZlVGhxV0VsRlJDczBNV3hoZFhjMlVFZFlNVk5XY0dKeGJHVXZlVzltV0ZkaE9YWnNRVVZhVUZaSFRHTTJhbU5FV0ZOMVVIZERZWGxZTURscGJHaFJORkZvZDNaTVdDdG1UamRUYVVoblEyNXhPRzgwZWk5a1dUZHhSRXhDYnpkdlNVMUtablZrTkVwQlQwc3lRUzlhZDBwd05Vd3JXRlZGTWxSSWNtbEJOMk1yWjI5SE5WZzJTbkp6TkZWMlNubFdZbmR1TWtGT1ZVbHZOVXc1VGpZelJXdzJUMUEyY2pKTGRFVlFTVWcxTVhkRmR6RmhaeTl5VUdsRWRrUk1Ua2RQZEhkM1NYQlBSbGhQYTNwWVdsRTJTMFpDTVVsRE9GQm5VemN6VlhCbVRWaDNhbWx6Tm1weUsyNXpXWFZyZG5kemVsTlFVR1JIUVd4WFNsZG9TMmh2U0RSTmFTdHJWbXQxWkVodkszUmphVzlSUW5oQ09XUjZjbE5LTmk5ck5IcEZkMlJUV1UweGFUVklVRGN5U0ZwVU5rMTBXVUU0UzBRM2VUbEJaVXRuU3pkTldYUllkMUpoTmpaMEwwaGtia2xTU0ROV2NFUjBkSFpVVDNVMWFYSlBTVEZtYW0xaFJ6bFFOVGxtZUhNMGQyWllRakF6T1ZFeVVraHZRbFJXVTJWd1l6VXdhbU01VmtOcFFrWm9lRlkwVHpWRFdHZFZhMFJ2Ym1SSk1uZHRNRWROVG5CWlJtWlpkVU5TV1VScllVcGpLM0UxVTBoVlkyWndXVmwwZGxZMFowbExiM0ExUlc5VVZ6Qk9XbXR6YWpWQ1kyUm1ZMWRRTWtGa0sweDVZbXRSUjNGMFJrcGFWSGxqWjBobFMweDRTRmt2VUhwbVVXaEJRMjFUV21KUGQwUXhhM1pNY2xSalZrVlhlRFZ4T1VFM1VYQk5TbmhtWkc0NWVYcE1UbFZuVUZweUsxcElNeXM0VjFScU9UUnhhM056TldKNFFVbHFTM1V3WkhKbldUUjRUbWdyWTJOa09FSnphbmg0VWl0UUt5OVhVazFpV0d0RU5FUlBibTlyYUUxcFdUbE1iekJFYVdaU1FqUnRNVkF4TlRaS2QzUlhlamxXUVVkaFZsbDRiVEphV2xGc05IZEhTMGR4Y1ZoaFZsaDNZbmh4Y3l0WFRFSnZjblJPZUUxcVpFUldUMU5MVDBnelJXZHBWRE5xUVVjck1WVmtURFJsZWtSbGJsRjJZakZLUlVaaVVscGhUMjAzUzB4QmFVWjZaV05yZDFoclprcG5Xa0ZOZVROUFdYUTNkazgyWmxoS2JHRnpaa1poZGpSM1pqbFBPVXBxVTBsNFJrVlhTSFVyZDBSVEswbzBWRm8wV25SbVQza3JWRlZQVWtOdlRXNTZaMWRwUkhKVFR6ZE1jM1paU1hSWVV5dENLMFZOWVU1cVEyaHVVa1pyYkZaaU1GQlZhMGh0VVVaRVRWTjBNVnBFTkRkRVdtWllkMEl2UmpOTFIwdzVVa3R4T1hBelRuVm5NbEJRVXpSSE5DOVpkMVJFY0hsWEwydHROMUozU1hWdlVWcDNSRVpHVkRNNE4wbDFWVzB6VjBOaWRVeHNkblJpVUZnM1pVdDNNMjFoZDFKdGFFSlNWMFZQZW1oNk9YQnFSUzlOV1VNMVRtRnZWamxYYWxNMFZsRlZla2RKVGpscFNtazJjeXMwYlRZMVlVYzFRVFIzYWpKVEwzQmtUVm94UVVwTlNrSkxhV1UxT0RBdk0ybG5OMjgwZDNJNFpXZHhRMlp6ZERWTmNHOHllRWxJVGtWNE1tNVBPVmd6Y2s1WmNUaEhURXRIYURsT2MwNVNiVkZGZEhkWVkwUmtia3h5T0dwSmFqaDNUelJGWWtoTWJsWkdkMWxrZUNzdmExaEtTMHhFTkZVM2JtcFVla0ZYYlM5cE4yeFdhelJNTDB4WmFuVlFVRTl2VGtWdFREVXJWSGQ1Y21wU1VqaGljR2hYV1UxbVVIcE9kRmRFYzFaQk9VVmlaR1J3VWxnME9ITmlVMDVXUXpoTlVuQjNjWG8xVVdSNGFqUTBTM295UlhNd01HWnJUR3REVURaNVRrOUxRbEJqV21kNGNtSTVaM00yZUU5SFdEbHNPRTluV2xvd1IxWnZaVE5aUVdsVVdTOTFhVVJNYW5Wb1ZXUklhakpYZFVWUE1XMDJZekI1YlZGUVZuaFRWVnBqVGtoaFJuZHNOVkZpT0ZwUlowNVZhbGxVWVdWaFIyMUxVbnBZY1dKQmQzSjFTRE00UzNSeGVrTjVZMGd6YUU1VFFYQTRhR3RuTnpoQ2QydFBhSGhCVTFBeVZHSnZNbVpVVjBKb2JGVkJWRlJ1Y0cxMlpVWkZka3BsVERRd2FFZEdjazlxYjFSVFIxbENjekZuTDFabVdGaHlPRmwxZUhOaE1XSm1VM1pZUm1kV1VEbHdjWFpQYlhJelVHSTRVR0U0VGlzdlNYZEZUMHg0WWxSamMzRlNhMnhCTVVNNFpXeGFaRXhSV1VneFJpOWhNV0k0WkU1TGNuTnVRelJ2TkhvNGIyOHZlSGhWYW5oRFVVUTRVVk5DU1V0S1dXOUZkaXMwVWpSd2IyMTRSbWRPYW5aQlpIQXdOR0pCVDFsRk5rWm5TVzVZU1VWc2RVMWtaazFWWjBoeU9UQmlSalZuVHpkYU1HYzFiak5PTm1WR2VXeEJjRGgwYkdkMVlVUnNSV2h2WWtSS2JqWlllQ3M0Um1oNFFsZEpaa0pLVEZKSE16VmxhRVI0UmpBMFRWbFNPVEZ5TUVneFJUTnRSamhrYWxKR1JXOXBNRkIxYW05UmJrbEdRV2g2VDFSemJXdHJhRkZuUmpWeU1XNUlLM016VFcwMmNuVlJOM0ZLVkRWTkswdHhUR2hqZFdOS1YxaDVaa2htVWtwMWJFUmpkekZOVDBkU1VFVkdhVnBsVUc1SFVHMDFXVmxYVTBwaE5TdG1SelJaV0dwa1R6WndOMGRWSzJWS1JVSTRObXgwUjB0T1FVMWlTVVJTVTNJNVJraE5Xak5ITjJkdFRIVjNZemd6U0NzelUxWXZOMkl6ZDJSR1dESTFTM0pZU2pVcmQxZEJTa3RaVm1WbVNHeDJjbEF4VWxKSWJGRTRMMGxrYWpocGVGQkpaVW96Y2t4U01UWTVPRmRxTmpOVWVHWjFlalpHVkc5WmF6ZE5RM1JOYVVNdllXNVpla1JpWVhkeE5VVkZiME51Wkc0emRFbERhbTg1VUdzdlRVSnZjM3BpUjJsTlYyUlNaemhhY0dFNVFtTnlaRVJ5VDJGc2VsZHRObTkyZEdWVVZHbDVlbGxVZFd4QllYTkhZMjVRWlU1YU4yWklaRFJQYjJWalRXdzRRVlU0ZW1WQlNtUlJWRXcxYjBOV2RrOUdSbVppUmtSeVRVVkJZekpWU2tzeGRXZHJiaTlEZUVwRFdVSlBiRU5hZVVKMWQwbHRTakpYYkdack9GSkRaRlI0TW5KUVRXOUJWbE5pU21SNFQxbGhNRmxLWWs4MVZVZDNjbkE0UjJ4UFMwNDBhazFSVjJkdFdHUlpRakJHZEc0MFZITXdNU3QyWlRKQ0x6SXlXVEpCYUVwTVZFcHBTbXhFYm5KSWNtVk5hRE5TWm00NVZtZG9UWEpuVm1OdU1uWjNaRzh6TTBrMFJXeEVVVzVLSzIxdlUzSmpha1pPT1ZVNU5HTjZPR0Y1YmpWbllWUXJNa3d4UW5SNFpWTk5aVmg1YlRCVWJqRlNXaXQxV0hsdVUyTmhNVFo2ZFRoMFRubGhaMHBxU0ZsdFdWTmtOa3huYnk5RWJrUlFja1ExZFhacGNFdENVRWhEZVd3ek4ydEdPRXh1T1hGNllXczNNV0phYW5WMGJHc3lSVXMzZWpkS1QzVkxTa1ZwUVRsaWVVWk1jVlpuY1V4a1Z6WldZMmh6VUhGaUszaFhSVXBYTm5ZM1RuRTRjbkpFYTBSdVJ6Wk9lbEJLV1RCTFprdEhVV3hTUlVaRWMwZHZXWFJVTms4NVdsSnJTU3RwVUZnME0wVXdTa1l2UjI5dlMxWTFXVUpqV0hCVFkyTnJSVFZKT1RZM2JrRk9TVmhCTDNRellsbEdVM0ZCTUdsbU5HMVFNblIxTWpsUFdXMVZjbE4zT1dScWVITlFNbTB3VFRKaVJ6aE9ibTVaVHk5TFYzTjJiRWhQVkd4WmNFTkliRk5PVm1KclRtNTZibEZVVEZoRVVFOUVSR2haUzBKdFJVVlJha2syU2tFMVlrVjNOV2xPU21adUswazNhMkZpWWxKQ1l6SmxWSHBxS3pKYWFFVkVTWFptUjBkcldFeGhSME0wZUdFcmRqQjNSVkV2YVhOMGJHMVhkbXA1TkhkbVFYcDRla0YxTDJKc1FWVXZRVGx6Tkcwd2RGbDBTbWg1TlVWQk1GcHZSME5OVVZabmVHbDJLMnRWYkRGTVNVeDJPR0pxVFhkTVkwRXlWMHBqTTFwS2RWVlNWRE5DSzJJclUxUkNkelpIUjJWTE4yUnViV05XT1UxUlluZFNTVmxzZVZVeFUzTlRibWRsTDB4U09UazFha3R3YzNWRVNscE9WVWQyUVdzNWJFcFRSaXRtZUc5cVdqVlJTVGxpZEdGUkszWjBVRGQxZFU5cmVURlpTMUE1UWpKNVVVWTBZMlZIYTJadU5XcE9VRU5JUWtKc1dUTTJkMFZ5ZUd0RmJGbDNVVzk0WkVwbGN6bHVOemc1Y205UWNTdHdNMGxaY1VWeGNFSmxNblp1Y3l0ek0zUXZWUzl5ZEVZNGRuSnhiRk56SzBoVlRGQmplRXBrVnl0emFWUkZPSGh4Vm01aVFqRmFZM2N6VnpOblZ6QlNWblZIVDFsTVlqaFFNRmR1U3pKR1QyVjVWVGR3UVVkYVltSkRNemczVFU5R1JHWnNkSE41TTFoMlNXMXZTMHRNYUc5amVEa3ZZVlkzYjBOQ1RGSTBMekpoUmpaSllqazBhMDFvVlU5QlRWbHlkblpEVVhoR1pVUnBLMEkyUVdRelExSnFRVWhKU1VoeU9WbDFTVmg0U2tkbk1qQjBUVFI1WlM5UWNrTlNOblI0TTJaTGFraEhjek5TYVZsd1RtczRjMDVoYWtoMVdGRkNPQ3RaT1dNcmJ5dDVWbUkwYXpnNFRIaG5Va1JQZUM5Q2MwUm9Ta3B6YTJ0d1NVb3ZUa1JFU205dWJrWmxTelF4Uld0MlVVb3hXbk5yU1ZCNmNHbERla3hzUkhkbGVUQnpTRmxPWTBkcFRGRllZbnB6WVZGdWJXWnhWVGROUnpWWE9HVTJNbGRPUlU1VFNGSTVSRUpCUW1aaWVWaFJXa0ZLYVZKNmNXOU1ZVWN3U2s0M1VsUkpaVlpUTkhSeFl6VTNTa2N3VXpSak5EbDVjbVJTUmtSSVZYSkVhbWRqVmtVdlZrVnhNSHBwVDJKblprRXJaSEZqUTBZMU5HRTVaR3RRVldsYWRXTm1lWEJPWWpGdU4xcEZVemRKZHpCdWNFbzJORWNyVWxNeU5tSTJNekpUY0ZCRE9HOW5NR05FVWpsd01YcFpLMlZQWm1GNlkyMXJXakVyTDAxaFltZFVXbTlVUWpKc1puRllkakJFVkhSTldXZE9aMFJCYUZKV1JuSmpNak41Y0RCS01YWkJlVk4wZEVVM01rdE5TVmc1YlZWVloyaEZiVXByUlRoMlRGRTNiV3d5UzFVeVIyeEdMMUl5VDNacGRERnRWRGRQTm5GaFZGUTFZVVEyVUVaU2JHeDBiM3BVVjAxdmVuRlJlQ3M0Tm5WNlJGRnFlRWM0YTFaak5EZGFRbWwzYlVOWFZWQm1lbGg1UlhCbWFtZE5iV1ZWWmt4TmJFMUNSRkI2TjJSU05tcFpVbXBRUkVWeFZFSnROMFJVU1c4NVpXVjNSbGgyTURjeVVsSlNOSFZ2TDAxUFdDOTFlRVV2ZDA5YU16TlZhRWRrWlRrNFRVOWlkelV2UlRaYVpFZFNPRXAxY3k5eVNGRTVNWGR4ZUVVeWRDdHFNbHB2ZHpGaFMxY3dSbVJXUkdwelRsUjBjMjk1TjFSUGRGbDFUM0ZPWVZoVmVsRm1jVkY0YmtKTE1tdzFWbU01UmxwdUt6VXpOamxJUTBkSFoyeHlRM3BZYzBsV09VdHdhazVHUjFSVE1UZDROa1p5T1RobVRYSkZlRmhOU20wcmJHUkxTRXQ0WW0xcGVHNDNlREZ0ZFhNMWIxcEZVSHBaYlUxMGFWaFBPV1p4VFZOSEsyeFhkMkp3WW5jME5VaGFkMXBJV0hRMmVETXJkblYxUlN0V0syZDZkazVTY1dGcFpVc3dkamhrU0Nzd2RYYzBZWFE0Yms1cVEzYzBkRTlHVTI4MU4zTXpaSG8wYTJ0cllrczJhWEpGYUVoT2FUWnZPRWxUY2xkWVFXVndTSFl5VGt4dmFXd3pRbXRCUm5jMFJIZG1VazFJWTFOTmRVdENTVFZ3ZVdzemJUZENZV0pSYlhRMVRIVm9jRXRtVGl0dmIzazJTMEZLWTFGVVNqUjJjVVZCWm5veWRVTk9jRzA0UmtocWJtNXpaemwyWTBsMldYTk9Va05WZHpablprOU5jVWhOWTB4RFRuRlFURk0yWTJKcVRVdGFTbkJLVUUxcFVHMHdRall6VGtONlZGaElNVVZVYTBoaVZsSkVZMUJpYlRWWVlURlJaM1JGT0U1WE5sWndkMGhHYW1GTVYxWXdWWGhuUTNCNk9TdHJLekJGT1hGUFEwcFZWSFp0U1ZvMWMxQktPRXhNY1ZrMk1FMDVhR2xMZW5kVFprZExTR1JpYjJObU56SnljM1ZrTmxscmFIRjVUR296U0RsbGNtbE1VVXBaUmtaUGVreFFWRzlHTmxSWVVrMHdRV05EVFhWd2NIbzVSSHBITjBoU1UweEpjWGcyYTBwSk5XUnZObUUzTjJad1RsQndMMU5ZVHlzd2FXTjBjRnB6YkZKM1VXOXRXR1J6Y0ZaT2N6RTRXaklyUVRaRk5GVkthbEZHVVdaVE0zaFZhazkxYm5OMGJYcFdOazg1WWtVd1VWbDVTVU4yTVhaQldTc3JkV1JKT0ZSdVMyaE9iak4xU0Rsb1VHOUtkMWxhYVZKRVdsSlNSVEZMYVU1TWMxQnZRa040VEdJckwzUTFPR2hOWTFBME5XTm1TMlJqUmxoMlUzSm5lRGhzS3l0UWJtaE1aVlExUkhRMmJFMWhZMU0wVUVwVFdUVkpOVXBLWVRaTk1WQXlVVVpEUmswMVdWUXhkWFl2YjFoVlR6SnZhalU1V0d0cUsxcG5SbVZxTm5OTlJVdFRjbFJUZVRBeFRHaEtlR2RaVG13eVdHSkJiR2t3YW0xS1pWRXljVEEwVGxFdldYUlVVVVk1UzJOVWNVTlJOMGhvWVdwek1YZzRRVUZrUkhCQ1R6RnpUMnd3TWtsTVpFWkNTa052VEVKSmVGTjBZVnBGVkhwMmJHVktSR0p5YVZNd2RUVjJjMmRVVmxseGNFUXJkMlJ1WVhoNFVXeG9lR3RKZFhsTlkwdzRhV2d4TVV0bE1XeGFOM2x3YW1Vd1pUbHFPSFp3WVhNMllYSnpVMWxrT0RKMGJ5OTRTVWxDV2l0M1QyRllTalJ2VFRoVmJtOWpXWEJvU2pRNWRXWk1hSEpwVmxsNFJVcG5UR1JzTUZsekwxVXJRbmQxTXpaMVl6VlhibloyZUdsemJGb3dRaXRZU1hWalUwMVJRbkpTT1hwTFZIUldhVWsxV0N0NE9XTmphSGRKWW5GUU5sUllVMFZRV25ka01FVkNSRE5sY0dkSmFESXZhVFJpWjA5R1dWVkdUV0ZNVm5Oa2MycEhUR0pWVkVReGJqTndjRlY1UVVveVJHWkxjMjVrTVc5U2JrMVBhM1J0Y1ZBNGNEWlRVVkZhVldsaFUxbGFNelpTWm1Oa1ZtbFZNV0puUmpWQ05EVnROalJTYm1kT1oydHRNSFZTZVhCT09HcG1hWGt2YVU5bUwwWkdURFZ3VUVwVWVGWjZMMlp4V0hsSk5TOU1la3BVVEhwdUwxbEZURVpFYW5JcldFdElkbGhwVURZeldDdHFRMVZ1YldZdmJWVlhkaXMwWlhCalUzRXJZelUzTTFkU1duRnRiMkZCWjA1TldIUm5aVTE0ZGpWMlZEVnVUMk4zV1ROdFNrSjZSa2REZWtkRFkzcEJVVmt4V213ek5GWXlVVkJQVDNnMWRVWnVTR3BQUmtSSWNrRlJQVDA9IikpKSkpKSk7"));

Function Calls

strrev 4
gzinflate 4
str_rot13 4
gzuncompress 4
base64_decode 9

Variables

None

Stats

MD5 e610f552bbff42896cd5e9c957acf053
Eval Count 3
Decode Time 120 ms